Como conectar o Sensor Ultrassônico HC-SR04 ao Arduino 107

O Sensor Ultrassônico HC-SR04 é um componente muito comum em projetos com Arduino, e permite que você faça leituras de distâncias entre 2 cm e 4 metros, com precisão de 3 mm. Pode ser utilizado simplesmente para medir a distância entre o sensor e um objeto, como para acionar portas do microcontrolador, desviar um robô de obstáculos, acionar alarmes, etc. Neste tutorial ensinaremos a conectar o HC-SR04 ao Arduino.

Conexão sensor ultrassônico HC-SR04 ao Arduino

O funcionamento do HC-SR04 (datasheet) se baseia no envio de sinais ultrassônicos pelo sensor, que aguarda o retorno (echo) do sinal, e com base no tempo entre envio e retorno, calcula a distância entre o sensor e o objeto detectado.

HC-SR04 - Trigger e Echo

Primeiramente é enviado um pulso de 10µs, indicando o início da transmissão de dados. Depois disso, são enviado 8 pulsos de 40 KHz e o sensor então aguarda o retorno (em nível alto/high), para determinar a distância entre o sensor e o objeto, utilizando a equação Distância = (Tempo echo em nível alto * velocidade do som) /2

Diagrama de tempo HC-SR04

Para ligação do sensor ao microcontrolador, são utilizados 4 pinos: Vcc, Trigger, ECHO e GND.

Conectando o Sensor HC-SR04 ao Arduino

A ligação do sensor ao Arduino no nosso programa vai utilizar, além dos pinos de alimentação, os pinos digitais 4 para o Trigger, e 5 para o Echo. A alimentação será feita pelo pino 5V do Arduino:

Circuito Arduino e HC-SR04

O programa usa a biblioteca Ultrasonic, que você pode baixar aqui. Descompacte a pasta Ultrasonic e coloque-a dentro da pasta LIBRARIES da IDE do Arduino.

No programa todo o cálculo é feito por meio da biblioteca Ultrasonic. O sensor é inicializado nos pinos trigger e echo, e depois efetuamos a leitura dos dados do sensor, atribuindo às variáveis cmMsec e inMsec os valores das distâncias em centímetros e polegadas, respectivamente. Os dados são mostrados no serial monitor:

Serial Monitor HC-SR04

Este foi mais um conteúdo que preparamos com bastante cuidado para você. Esperamos que tenha gostado deste artigo e lembre-se de deixar suas dúvidas, críticas e sugestões nos comentários abaixo.

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

107 Comentários

  1. parece que o link da biblioteca ultrasonic postado esta quebrado . gostaria de um link alternativo

    1. Obrigado Lucas, o link já foi alterado. Favor conferir. Abraço!

  2. Ótimo post, mas estou com uma dúvida. Quando inicio a função ultrasonic com “Ultrasonic ultrasonic (12,13);” o IDE diz o seguinte:

    “sketch_dec23a:5: error: no matching function for call to ‘Ultrasonic::Ultrasonic(int, int)’
    C:UsersAndreiDocumentsArduinolibrariesUltrasonic/Ultrasonic.h:24: note: candidates are: Ultrasonic::Ultrasonic()
    C:UsersAndreiDocumentsArduinolibrariesUltrasonic/Ultrasonic.h:22: note: Ultrasonic::Ultrasonic(const Ultrasonic&)”

    1. Boa noite Andrei,

      Isso parece ser algum problema na instalação da biblioteca. Se o erro persistir, entre em contato para que possamos ajudar.

      Grato.

      Adilson – Equipe FILIPEFLOP

  3. Boa tarde,

    Preciso de 50 sensores ligados no Arduíno é possível?, achei um que tem 54 entradas/saidas digitais seria essas conexões?

    att

    Andre.

    1. Bom dia André,

      Nunca conectei essa quantidade de sensores, mas teoricamente é possível, desde que você consiga alterar a biblioteca para reconhecer todos eles.

      Uma biblioteca que eu conheço e que controla até 15 sensores é a NewPing.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  4. Bom dia Amigo, na realidade a velocidade aproximada do som ultrassônico é de 340m/s.

  5. Gostaria de conectar 4 sensores ultrasonicos no mesmo arduino, com respostas diferentes. é posível? como fazer? se puder colocar um código de exemplo eu agradeço. Abraço

    1. Boa tarde Eduardo,

      Por favor verifique este artigo do site Arduino e Cia, onde é utilizada a biblioteca NEWPING, que permite o controle de até 15 sensores HC-SR04 :

      http://www.arduinoecia.com.br/2013/12/controle-de-vagas-de-estacionamento-com.html

      Abraço.

      Adilson – Equipe FILIPEFLOP

  6. Gostaria de tentar saber a solução deste problema, a programação está certa, o problema mesmo é na compilação.

    In file included from sketchHC_SR04.ino:3:
    C:UsersLunaroDocumentsArduinolibrariesUltrasonic/Ultrasonic.h:9:22: error: WProgram.h: No such file or directory

    1. Boa tarde Lucas,

      Aparentemente falta algum arquivo na instalação da biblioteca/IDE. O programa é o mesmo utilizado no post ?

      Grato.

      Adilson – Equipe FILIPEFLOP

      1. Também estou com o mesmo problema, não está compilando, está sempre dando este mesmo erro, já procurei em outros sites e fóruns e não encontrei uma solução, o que vocês me recomendam a fazer?

      2. Pelo que verifiquei em fóruns, WProgram.h deve ser substituída para Arduino.h. Pelo menos foi assim que consegui fazer a biblioteca funcionar.

        Ricardo Martinelli de Oliveira
    2. Irmão resolvi seguindo esse blog aqui:

      http://blogdonatanael.blogspot.com.br/2012/02/erro-wprogramh-nao-encontrado-no.html

      só vc editar a biblioteca atual (Ultrasonic.h e Ultrasonic.cpp) pleo seguinte código!

      Retira o WProgram. h e substitui por esse código:

      #if defined(ARDUINO) && ARDUINO >= 100
      #include “Arduino.h”
      #else
      #include “WProgram.h”
      #endif

      Abração!

  7. Baixei a biblioteca para o sensor ultrasonico que tem o comando return ultrasonic.Ranging (CM); e sempre aparece a seguinte mensagem de erro:
    In file included from UltrasonicDemo.pde:1:
    C:UsersPCDocumentsArduinolibrariesUltrasonic/Ultrasonic.h:11:22: error: WProgram.h: No such file or directory
    Existem duas bibliotecas com Ultrasonic.h diferentes uma com o Ranging e outra sem.
    A sem instalei sem problemas mas a com o Ranging sempre dá o erro acima . È isso ou tem outros problemas ?

  8. Caro amigo, estou desenvolvendo um equipamento para medir a evaporação diária. Consta de um tanque cilíndrico contendo água cuja medição da evaporação diária deverá ter uma precisão de 0,5 m.brm de altura evaporada. Pergunto se é possível desenvolver um equipamento para fazer as medições de distâncias de
    0,5 mm a 200 mm. Todo material do equipamento já está pronto, faltando, portanto, apenas esse equipamento
    para que eu possa concluir o projeto. Caso positivo aproveitando o arduíno, o meu amail é :
    [email protected]
    Sem mais,
    Prof. Ely Martins de Lima

  9. Olá,
    Gostaria de usar uma combinação de 3 destes sensores, um em cada eixo ortogonal, para criar um sensor de movimento em 3D e transferir as coordenadas do objeto em movimento detectado para um LED cube. Qual o ângulo de abrangência que este sensor detecta? Seria posssível fazê-lo?

    1. Boa tarde Renato,

      Esse sensor detecta objetos à até 4 metros do sensor, segundo o datasheet.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  10. Olá no meu deu o erro seguinte: 🙁

    sketch_feb25d.ino: In function ‘void loop()’:
    sketch_feb25d.ino:31:29: error: ‘class Ultrasonic’ has no member named ‘Ranging’
    sketch_feb25d.ino:31:37: error: ‘CM’ was not declared in this scope
    Erro compilando.

    1. Boa tarde Renato,

      Qual versão da IDE você está usando ?

      Grato.

      Adilson – Equipe FILIPEFLOP

    2. Tenho o mesmo problema do Renato Xavier. Abri a biblioteca e dentro da class ultrasonic aparece “public e private”, mas não aparece Ranging. Posso substituir Ranging por públic?

      [ ] ‘s
      Mauro

  11. olá boa noite equipe

    pretendo instalar (3 sensores) fixo ligado no mesmo Arduíno que corresponde individualmente
    em cada saída de sinal sonoro (3 buzzer) é possível? exemplo um carro que informa se o obstaculo está na direita esquerda ou frente com tons diferentes em cada saída como se fosse um sensor de estacionamento so que com tons para direita diferente da esquerda

    Josirlei Alves Ramos
    1. Boa noite,

      É possível sim, mas recomendo a utilização da biblioteca NewPing, que permite um melhor controle de 2 ou mais sensores HC-SR04.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  12. Gostaria de saber se o Arduíno uno é o certo para aguentar um sensor ultrassônico e outro de linha, ou seja, estou planejando fazer um robô de sumo. O UNO é o ideal ?

    Kaique Alves Moreira
    1. Boa tarde Kaique,

      Vai depender do seu projeto, do tempo de resposta que você precisa, mas o Arduino Uno suporta tranquilamente trabalhar com esses dois sensores.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  13. Boa Noite amigos;

    Sou novato no mundo do Arduíno, acabei de comprar meu kit pelo Filipelflop, e acabei tendo esse erro de compilação e não consegui sanar com as dicas anteriores dos amigos, alguém pode me ajudar?

    Arduino: 1.6.3 (Windows 8.1), Placa:”Arduino Uno”

    sketch_apr11b.ino.ino: In function ‘void loop()’:

    sketch_apr11b.ino.ino:31:29: error: ‘class Ultrasonic’ has no member named ‘Ranging’

    sketch_apr11b.ino.ino:31:37: error: ‘CM’ was not declared in this scope

    Erro compilando.

  14. boa noite, o meu apresenta o seguinte erro no programa, pode me ajudar?
    Arduino: 1.6.3 (Windows 7), Placa:”Arduino Uno”

    sketch_apr21a.ino: In function ‘void loop()’:

    sketch_apr21a.ino:31:29: error: ‘class Ultrasonic’ has no member named ‘Ranging’

    sketch_apr21a.ino:31:37: error: ‘CM’ was not declared in this scope

    Erro compilando.

  15. Boa Noite Guilherme;

    Eu tive o mesmo problema, entao depois de fuçar, descobri q a biblioteca q foi postadada nesse blog nao funcionava corretamente, entao eu baixei outra nessa pagina “iteadstudio.com” a qual esta descrita no cabeçalho da biblioteca desse blog, logo apos no meu caso funcionou.

    vlw.

    1. Boa noite Alan,

      Pode ser algum problema com a versão da biblioteca ou até mesmo com a IDE, já que o sensor foi testado com a biblioteca indicada no artigo. De qualquer forma, é bom saber que temos mais uma opção de biblioteca para download.

      Abraço !

      Adilson – Equipe FILIPEFLOP

  16. Olá, boa noite. A todos que estão com erro na hora de compilar, sugiro que deem uma olhada nos exemplos que vieram junto à biblioteca.
    Provavelmente o autor da biblioteca alterou a função “ultrasonic.Ranging(CM)” para “ultrasonic.convert(microsec, Ultrasonic::CM)”.
    Sugiro que o autor do post altere o código apresentado para que fique de acordo com a função da biblioteca citada.
    [ ]’s

  17. Olá, estamos com um projeto, e ele consiste em medir os níveis de um rio, para prever as enchentes.
    Entretanto, não gostaríamos de usar sensores de nível ou boia.
    Chegamos a considerar o sensor ultrassônico, porem o problema está nas ondulações da agua.
    Porque a resposta não vai corretamente.
    Alguém tem alguma dica?

  18. Olá boa noite.
    Acabo de fazer a montagem e a compilação , e o código tudo ok, porém, não está emitindo o som, o que devo fazer?
    Desde já agradeço

    1. Boa tarde Tatiane,

      Esse é um sensor de movimento/distância. Trabalha com o conceito de som ultrasonico, onde ele envia um sinal, e depois aguardo o “eco” desse sinal para determinar a distância até o objeto.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  19. utilizo o código, compila normalmente, mas quando é executado a distância fica apenas em 0 (zero). O problema pode ser com o sensor?

    1. Boa tarde Vinicius,

      Por favor verifique as conexões e, caso o problema permaneça, pode ser que o sensor esteja com problemas.

      Abraço.

      Adilson – Equipe FILIPEFLOP

    2. Também tive alguns problemas com isso, no meu caso a princípio era o fio do GND com mau contato, e o problema persistiu, dai verifiquei que o sensor mostra 0(zero) também quando trabalha com ângulo, ou seja, não recebe o sinal de ECO…

      1. Boa tarde Hemerson, quero saber se existe um modo de fazer com que o ECHO não espere tanto tempo pelo retorno do sinal? Quero que o TRIGGER emita sinais periºodicos mesmo se n|ao houver leitura do ECHO.
        Obrigado!!

  20. otima aula, mas onde acho a biblioteca Ultrasonic.h

    1. Bom dia,

      Vamos atualizar o post, mas por enquanto tente este link: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04

      Abraço.

      Adilson – Equipe FILIPEFLOP

  21. Olá,

    Meu sensor sempre tem a resposta parecida com isso?
    Centimetros: 3614.38 – Polegadas: 1422.98
    Centimetros: 3615.37 – Polegadas: 1423.37
    O que pode estar acontecendo?

    Obrigado

  22. Olá, estou tendo dificuldades na leitura acima de um metro, fica bem inconsistente…
    alguma dica?

    1. Tente utilizar esta biblioteca. Eu fiz o teste e para o meu projeto esta funcionando.

  23. Boa noite, eu liguei o sensor conforme o seu esquema e utilizei sua programação para teste, mas meu sensor não retorna nenhum valor, o que pode estar acontecendo?

  24. Olá, estou com um problema baixei a biblioteca ultrasonic e atualizei na ID , mas já tinha uma biblioteca e agora da erro, não consigo excluir a biblioteca, se alguém souber, preciso de ajuda.

    Edilson Queiroz dos Santos
  25. Poderia usar esse dispositivo para medir o nivel da agua numa caixa dagua? Quais os cuidados contra a evaporação e umidade?

  26. Ao fazer a verificação para depois executar, aparece a seguinte mensagem :
    Binary sketch size: 5.432 bytes (of a 32.256 byte maximum

    Sabe me dizer onde posso verificar?
    Att.

    1. Essa mensagem aparece para todos os usuários do Arduino e está lhe informando que o seu programa tem um tamanho de aproximadamente 5KB, de um tamanho máximo de aprox. 32KB possuídos pela memória do seu arduino, ou seja, seu programa cabe no Arduino. Se essa é a única mensagem que aparece, seu programa está correto. Fora isso, tem alguma dando errado?

  27. Boa noite, gostaria de saber como colocar um sensor em um arduino e conforme eu me aproximo de um objeto ele vai reproduzindo Bips diferentes… e como instalo a placa, o sensor e o alto falante juntos. Desde já, obrigado.

    1. Boa tarde Rafael,

      Dê uma olhada neste post, por favor, creio que tem o que você precisa: http://www.arduinoecia.com.br/2014/04/sensor-de-estacionamento-re-com-arduino.html

      Abraço!

      Adilson – Equipe FILIPEFLOP

  28. quando vou carregar o codico aparece Error compiling for board Arduino/Genuino Uno alguem me ajuda

    1. teste em uma ide que nao tenha genuino uma ide mais antiga…provavelmente seu arduino uno não é original e isso faz dar erro.

  29. Gostaria de saber se teria como essa informação aparecer num display de 7 segmentos conectado ao arduino tb

  30. Olá, estou utilizando um Arduíno mega + sensor de distancia ultrassônico, mas estou tendo problemas com as leituras do mesmo.
    Leituras com distância inferiores a 160 cm são efetuadas normalmente, mas acima disso ele retorna valores acima de 2000 cm, muito acima da capacidade de leitura do sensor.
    O que pode estar causando esse erro?

    Alexandre Rodrigues
  31. Testei o sensor com a biblioteca e códigos disponíveis no site, mas por alguma razão, ele só funciona até +/- 6 cm. Depois de 6 cm, qualquer distância aparece como 6 cm. Já testei outras bibliotecas, troquei os pinos, usei outros códigos, mas nada funciona. Saberia dizer como posso resolver esse problema?

  32. Pode me ajudar quando coloco para verificar o código fonte da um erro Ultrasonic ultrasonic(12,13); da erro nesta linha dizendo que essa palavra não e valida

  33. Filipe,

    Fiz os teste, porém, quando ele só esta retornando “Distancia em cm: 0.00 – Distancia em polegadas: 0.00”, o que eu posso ter feito de errado?

  34. Boa tarde,

    poderia utilizar esse sensor ultrassonico com um arduino mini pro de 3,3V?

  35. Como que se liga um sensor QRE1113 ao arduino UNO. É possível ligar 2sensores?

  36. Gostaria de saber se existe um numero de ID nis sensores US? Ate onde li entendi q se controla distancia dando retorno de 0 ou 1. Gostaria de alem deste retorno conseguisse pegar um numero identificador para cada 1 ID.
    123 – 0 – 12:50
    34 – 1 – 0 – 5:45

  37. Boa noite, eu estou tendo problemas com o programa. No verify aparece uma mensagem de erro nessa linha:
    long microsec = ultrasonic.timing();

    A mensagem que aparece é essa:
    ‘class Ultrasonic ‘ has no member named timing

    A Biblioteca que está no link eu acrescentei a Biblioteca do Arduino.

    1. Esta Library do Ultrasonic está diferente.

      o método timing é Timing (T maiúsculos). Mas não tem o método convert também.

      Use o programa abaixo:

      #include

      #define pino_trigger 4
      #define pino_echo 5

      //Inicializa o sensor nos pinos definidos acima
      Ultrasonic ultrasonic(pino_trigger, pino_echo); // (Trig PIN,Echo PIN)

      void setup() {
      Serial.begin(9600);
      }

      void loop()
      {
      Serial.print(ultrasonic.Ranging(CM)); // CM or INC
      Serial.println(” cm” );
      delay(100);
      }

  38. Boa noite, eu estou tendo problemas com o programa. No verify aparece uma mensagem de erro nessa linha:
    long microsec = ultrasonic.timing();

    A mensagem que aparece é essa:
    ‘class Ultrasonic ‘ has no member named timing

    A Biblioteca que está no link eu acrescentei a Biblioteca do Arduino.

    1. Esta Library do Ultrasonic está diferente.

      o método timing é Timing (T maiúsculos). Mas não tem o método convert também.

  39. Bom dia, preciso de ajuda no meu tcc, consiste em 3 sensores ultrassonicos com uma saida independente cada , preciso da programacao. Agradece familia !!

    1. Uma solução seria vc colocar os 3 sensores na mesma porta, e criar um esquema pra chavear qual sensor vc quer ler naquele instante. Existem CI’s multiplexadores que podem te ajudar. Ou então a grosso modo inserir reles de acionamento. Cada sensor só será lido quando o rele estiver fechando o circuito.

  40. Ola!
    estou com uma duvida.. é possível eu armazenar os dados de uma determinada medida do sensor na programação, fazer uma outra medida com o mesmo sensor, armazenar os novos dados, e realizar alguns calculos basicos de soma, subtracao.. com os dois dados das distancias obtidas?

    Obrigado.

    1. Sim claro, basta coloca-lo para ler os dados e uma variavel receber o que foi lido…
      Por exemplo :
      float cmMsec, inMsec;
      long microsec = ultrasonic.timing();
      cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

      aqui ele guardou os dados em centimetros na variavel cmMsec, voce pode usa-la ou transferir esse valor para outra :
      valor1 = cmMsec;
      ai depois de ele ler novamente :
      float cmMsec, inMsec;
      long microsec = ultrasonic.timing();
      cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
      //aqui vai a 2 variavel
      valor2 = cmMsec;

      Depois rode algum if para comparar as variaveis.

  41. Excelente este post
    Mas só para acrescentar um pouco mais .
    Sensor Ultrassônico HC-SR04 Mostrando resultado Num Display LCD com modulo I2c Muito legal!!!

    https://youtu.be/afGWcG3qhMg

    1. Segue link para que quiser copiar os códigos!
      //Programa : Medidor de distancia com HC-SR04
      //Autor : Arduino e Cia

      #include //Carrega a biblioteca Ultrasonic
      #include //Carrega a biblioteca LCD

      //Define o pino do Arduino a ser utilizado com o pino Trigger do sensor
      #define PINO_TRIGGER 13

      //Define o pino do Arduino a ser utilizado com o pino Echo do sensor
      #define PINO_ECHO 10

      //Inicializa o sensor ultrasonico
      Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO);

      // Inicializa o display no endereco 0x27
      LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);

      void setup()
      {
      Serial.begin(9600); //Inicializa a serial
      lcd.begin(16,2); //Inicializa LCD
      lcd.clear(); //Limpa o LCD
      }

      void loop()
      {
      float cmMsec, inMsec;

      //Le os dados do sensor, com o tempo de retorno do sinal
      long microsec = ultrasonic.timing();

      //Calcula a distancia em centimetros
      cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

      //Calcula a distancia em polegadas
      inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

      //Apresenta os dados, em centimetros, no LCD e na Serial
      lcd.setCursor(0,0);
      lcd.print(“Cent.: “);
      lcd.print(” “);
      lcd.setCursor(7,0);
      lcd.print(cmMsec);

      Serial.print(“Cent: “);
      Serial.print(cmMsec);

      //Apresenta os dados, em polegadas, no LCD e na Serial
      lcd.setCursor(0,1);
      lcd.print(“Pol. : “);
      lcd.print(” “);
      lcd.setCursor(7,1);
      lcd.print(inMsec);

      Serial.print(“, Pol. : “);
      Serial.println(inMsec);

      delay(1000);
      }

      1. Toninho… Tem como vc postar o esquema de ligação desse com o display? Estou precisando exatamente desse… Obrigado!!!

        1. Olá, na interface i2c com aquele modulo nao tem segredo é so ligar ele na protoboard e colocar o display nas mesmas linhas, da mesma forma que esta no video.
          E neste link tem a forma de usar o modulo i2c:
          http://www.arduinoecia.com.br/2014/12/modulo-i2c-display-16×2-arduino.html

  42. Companheiro oi, explicação muito útil.
    Eu estou fazendo um controle de nível de enchimento e esvaziamento de um reservatório de água e fiquei me perguntando se eu poderia usar o sensor de ultra-som para desligar a bomba quando o sensor indica por que há um baixo nível de água, você me ajudar nesta situação . obrigado

  43. Boa tarde , estou com uma duvida em radio frequência.. ao o transmissor começar o envio de dados como faço para acionar o LED se caso essa transmissão não for concluída?

    1. Colocar um retorno no outro arduino, o segundo irá receber e enviar de volta a confirmação do que recebeu…

  44. Boa tarde,
    Estou tentando fazer um alarme doméstico com esse sensor. O caso é que ele funciona aqui ao lado do arduino, mas na fiação passada até na frente da casa não tem jeito. Já troquei a fiação e não adiantou.
    Existe a possibilidade de isso estar acontecendo em função do comprimento do fio (+- 15 metros) ou do material que ele é feito?
    Se sim, alguma dica de como resolver?
    Abraços!

    1. Sim, considere uns 4m como distância máxima dos fios de ligação

    2. Bom uma dica para resolver é ter 2 arduinos um com este sensor e ele enviar via bluetooth ou RF para o outro …

  45. Estou fazendo um projeto com Raspberry Pi, e gostaria de utilizar um sensor ultrassônico, porém não encontrei bibliotecas para tal aplicação. Poderia dar alguma dica sobre como desenvolver um código para tal função? (de preferência em Python).

    Parabéns à equipe do site, todas as publicações de ótima qualidade.

  46. Olá
    Estou tentando desenvolver uma lixeira acionada por esse sensor juntamente com o Arduino
    Porém estou com problema na programação
    Gostaria de ajuda por favor pois não tenho muito experiência em mexer com o mesmo e tenho pouco tempo para concluir

    1. Sim, diga as funcionalidades e como será?

  47. Gostaria de auxílio com a seguinte questão: como proteger este sensor de chuva. Ao coloca-lo em uma caixa, preciso que o emissor e o receptor fiquem sem barreiras, correto? Existe algum material que eu possa colocar na frente destes e que não atrapalhe a leitura. Obrigado desde já.

    1. Brother, tenta colocar aqueles papel filme. Não sei se dá, mas da uma ideia

    2. Opa, já existem modelos que tem proteção contra umidade, não exatamente com chuva, mas acredito que contra gotejo, tal como o JSN-SR04T, mas acredito que de para fazer uma proteção plástica ao redor, para só o receptor e transmissor ficarem com abertura para o ambiente, o que acredito que já ajude.

      Nícolas Wilson Souza
  48. ola eu li seu post poderia me dar instruções de como eu posso fazer um carro utilizando seu codigo detectar e desviar de objetos ??? se poder me dizer o que elas fazem agradeceria muito, rsrs cada instrução individual.

    //Le as informacoes do sensor, em cm e pol
    float cmMsec, inMsec;
    long microsec = ultrasonic.timing();
    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
    inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

  49. Boa tarde,

    Estou desenvolvendo um projeto em arduino, e uso o sensor ultrassonico, eu peguei partes de código da internet, mas estou tendo problemas na seguinte parte:

    float cmMsecEntrada, cmMsecSaida, vaga1, vaga2, vaga3, vaga4;
    long mcsec1 = ultrasonic1.Timing();
    long mcsec2 = ultrasonic2.Timing();
    long mcsec3 = ultrasonic3.Timing();
    long mcsec4 = ultrasonic4.Timing();
    long mcsec5 = ultrasonic5.Timing();
    long mcsec6 = ultrasonic6.Timing();

    Vagas();

    cmMsecEntrada = ultrasonic1(mcsec1, Ultrasonic(CM));
    cmMsecSaida = ultrasonic2(mcsec2, Ultrasonic(CM));
    vaga1 = ultrasonic3.convert(mcsec3, Ultrasonic(CM));
    vaga2 = ultrasonic4.convert(mcsec4, Ultrasonic(CM));
    vaga3 = ultrasonic5.convert(mcsec5, Ultrasonic(CM));
    vaga4 = ultrasonic6.convert(mcsec6, Ultrasonic(CM));

    Aparece o seguinte erro “no matching function for call to ‘Ultrasonic::Ultrasonic(int)”

  50. boa tarde, vi que esse sensor tem precisão de 3mm, alguém conhece algum sensor com maior precisão? preciso de 1mm de precisão. obrigado

  51. Meu sensor ultrassônico não vem com as entradas echo e trigger mas vem com entrada NC e SIG é certo isso?

  52. Olá! Alguém saberia me dizer se esse sensor conseguiria atravessar camadas finas? Ex: Um azulejo, uma folha de papel, etc.

    1. E se ele estiver bem perto da superfície em que quero que ele atravesse?

      Preciso identificar se uma parede está oca ou não.

    2. Não, ele não atravessa, pois uma onda mecânica, rebate em anteparos (parede, papel, mesas…), vamos lá, como qualquer auto falante, ele gera um distúrbio por um meio (também conhecido por “SOM” kkkk), onde esse “meio” é o AR, então ele espera que esse som bata em algo (em algum anteparo), e retorne ao “Microfone” dele, e com ele é possível medir o tempo entre o envio do som, e o retorno, por isso se consegue medir distâncias com o mesmo. Mas diretamente respondendo, não há como ele atravessar azulejo ou folha de papel.

      Nícolas Wilson Souza
  53. Gostaria de saber se esse sensor controla fluxo de pessoas em uma loja, e se entrassem duas pessoas ao mesmo tempo ele detectaria sem erros?.
    Desde já obrigada.

    1. Olá Beatriz, com esse sensor dá para fazer um controle de entrada, por exemplo, você por o sensor e do outro lado tem um parede (um ante paro), cada vez que a distância que ele detecta for menor que “tanto”, então ele pode contar +1 em uma variável, e assim ele pode demonstrar para você em algum display, ou mesmo no seu celular, porém não há como ele distinguir duas pessoas, afinal ele só mede distância.

      Você poderia contar pessoas entrando na loja também de outra forma, por barreira de luz, mas com o mesmo problema de não conseguir contar duas pessoas.

      Nícolas Wilson Souza
  54. Meu sensor nao aparece a distância do obstáculo em cm, ao invés disso ta aparecendo várias letras. Alguém sabe o que significa isso?

    1. você deve ter colocado os conectores de controle nas entradas erradas da sua placa arduino!

  55. Olá, estou montando um projeto com PID e utilizo esse sensor, gostaria de uma ajuda. Estou querendo pegar o valor recebido do sensor e jogá-lo em uma porta analógica, porém com essa lógica eu só recebo um pulso da qual não posso trabalhar com ele, pois não tenho variação. Gostaria de saber se tem alguma maneira de converter o valor recebido do sensor para uma variação PWM de 0 a 255 ou varia-lo de 0 a 1023 para injetar na porta analógica desejada. Agradeço desde já pela ajuda.

    1. Olá, pesquise sobre a função map ela pode te ajudar.

  56. boa noite, queria informações sobre como fazer um motor servo girar dependendo da distancia lida pelo hc-sr04, para cada distanciaem cm lida o motor girar um pouco. não estou conseguindo fazer o codigo. alguem pode me ajudar?

  57. Olá, quando mando o código para o meu mega, aparece uma mensagem dizendo que a palavra convert não faz parte da classe Ultrasonic.. O quepode ser?

    exit status 1
    ‘class Ultrasonic’ has no member named ‘convert’

    VICTOR HUGO FRANCISCO DE OLIVEIRA
  58. estou estudando o uso do sensor e enfrentando algum problema. As medidas apresentadas são muito maiores do que a real.

    Baixei a biblioteca novamente e o erro persiste, Alguém sabe o que pode estar acontecendo. Tanto os valores de cm como os de polegadas estão trabalhando com algo em torno de 1 metro a mais.

  59. Boa tarde,

    Estou com um projeto no qual gostaria que fossem emitidas vibrações através de um motor vibracall (de celular).

    As vibrações aumentariam e diminuiriam conforme a distância de um objeto próximo ao sensor. É possível fazer isso?

    Lucas Brandão dos Santos
  60. Quando eu coloco o Sketch para verificar apresenta o erro abaixo e a linha 23: long microsec = ultrasonic.timing();, fica iluminada como se o errro estivesse nessa linha.

    exit status 1
    within this context

    Porém já verifiquei várias versões na internet e não verificamos nenhuma diferença no código. já troquei várias bibliotecas e não temos resultados, sempre aparece a mensagem acima.

  61. Pessoal, observem a versão da biblioteca que vocês estão usando. O artigo foi feito em uma época em que a versão da biblioteca tinha esses métodos. A atual versão, (2.1), mudou o nome dos métodos. Agora, para fazer a leitura basta usar o método ultrasonic.distanceRead().

  62. Bando de gay. Sabe nada inosenti