HSR-04

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

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.

//Programa: Conectando Sensor Ultrassonico HC-SR04 ao Arduino
//Autor: MakerHero

//Carrega a biblioteca do sensor ultrassonico
#include <Ultrasonic.h>

//Define os pinos para o trigger e echo
#define pino_trigger 4
#define pino_echo 5

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

void setup()
{
  Serial.begin(9600);
  Serial.println("Lendo dados do sensor...");
}

void loop()
{
  //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);
  //Exibe informacoes no serial monitor
  Serial.print("Distancia em cm: ");
  Serial.print(cmMsec);
  Serial.print(" - Distancia em polegadas: ");
  Serial.println(inMsec);
  delay(1000);
}

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

 Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

234 Comentários

  1. Boa noite! Estou usando esse sensor em um projeto na faculdade. Estamos fazendo uma balança digital utilizando o arduíno e esse sensor, mas estou tendo problemas com ele e com o código. Queremos converter a distância para peso, mas fica variando muito. Poderia me dar uma luz? RS. Eis o código:

    #include //Biblioteca utilizada gerenciar a comunicação entre dispositicos através do protocolo I2C
    #include //Biblioteca controlar display 16×2 através do I2C
    #include //Biblioteca do sensor ultrassonico

    #define col 16 //Dafine o número de colunas do display utilizado
    #define lin 2 //Define o número de linhas do display utilizado
    #define ende 0x3F //endereço do controlador
    #define TRIGGER 9 //Pino do TRIG do sensor manda a frequência
    #define ECHO 8 //Pino do ECHO do sensor recebe a frequência
    #define n 10 // Número de pontos da média móvel

    long moving_average(); // Função para filtro de média móvel
    int original; // Receber o valor de ECHO
    int filtrado; // Receber o valor original filtrado

    //SCL 3, SDA 2

    // Inicializa o sensor usando os pinos TRIGGER e ECHO.
    UltraSonicDistanceSensor distanceSensor(TRIGGER, ECHO);

    //Cria o objeto lcd passando como parâmetros o endereço, o nº de colunas e o nº de linhas
    LiquidCrystal_I2C lcd(ende, col, lin);

    float tempo;
    float distancia;

    void setup() {

    pinMode(TRIGGER, OUTPUT); // Configura saida para o sensor de distância
    pinMode(ECHO, INPUT); // Configura entrada para o sensor de distância

    lcd.init(); //Inicializa a comunicação com o display já conectado
    lcd.clear(); //Limpa a tela do display
    lcd.backlight(); //Aciona a luz de fundo do display

    Serial.begin(9600);
    }

    void loop() {

    original = analogRead(ECHO);
    filtrado = moving_average();

    //Variavéis da distância
    float varDistancia;
    float varDistanciaReal;
    float distanciaFixa = 3.500;

    varDistancia = distanceSensor.measureDistanceCm();

    varDistanciaReal = (varDistancia – 8);

    float difDistancia = (distanciaFixa – varDistanciaReal);

    if(varDistanciaReal > distanciaFixa){
    difDistancia = (varDistanciaReal – distanciaFixa);
    }

    //Varivavel da constante elastica (K)
    const float constElastica = 714.3; //N/M (714.3)

    //Variavel da gravidade da terra
    const float gravidade = 9.8;

    //Calcula a massa
    float massa =((constElastica * difDistancia) / gravidade);
    float massaKG = massa / 1000;
    float massaKGO = (massaKG * 100) – 0.200;

    //Zerando a balança
    if(varDistancia >= 11.700){
    massaKGO = 0;
    }else if(varDistancia < 11.700){
    0 < massaKGO 0; i–) numbers[i] = numbers[i-1]; // Desloca os elementos do vetor de média móvel
    numbers [0] = original; // Posição inicial do vetor recebe a leitura original
    long acc = 0; // Acumulador para somar os pontos da média móvel
    for(int i=0; i<n; i++) acc += numbers[i]; // Faz a somatória do número de pontos

    return acc/n; // retorna a média móvel

    }

    1. Olá,

      Verifique se o sensor está recebendo 5 V na alimentação (menos irá ter um comportamento mais errático). Você pode também colocar um capacitor na alimentação próximo ao sensor para estabilizar a tensão de alimentação.
      Verifique também o quanto está variando, pelo datasheet variações de até 3 mm são aceitáveis.

      Abraços!
      Vinícius – Equipe MakerHero

  2. bom dia, como posso usar esse sensor para ativar uma mini bomba de agua durante 10 segundos por exemplo pra encher uma caneca

    joaoguedes.eletroeletronica1
    1. Olá João,

      Aqui temos um exemplo de unir dois projetos, um deles usando o sensor ultrassônico: https://www.makerhero.com/blog/como-juntar-dois-projetos-em-arduino/

      Ele usa servo motores, mas comandar uma bomba é mais simples, usaria apenas o comando digitalWrite(); para comandar a bomba.

      Abraços!
      Vinícius – Equipe MakerHero

  3. A biblioteca Ultrasonic by Erick Simões Version 3.0.0
    É a versão mais recente, e está mais simplificada, segue abaixo como fica o código agora

    //Carrega a biblioteca do sensor ultrassonico
    #include

    //Define os pinos para o trigger e echo
    #define pino_trigger D4
    #define pino_echo D5

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

    void setup()
    {
    Serial.begin(115200);
    Serial.println(“Lendo dados do sensor…”);
    }

    void loop()
    {
    //Le as informacoes do sensor, em cm e pol
    float cmMsec, inMsec;
    cmMsec = ultrasonic.distanceRead(CM);
    inMsec = ultrasonic.distanceRead(INC);

    //Exibe informacoes no serial monitor
    Serial.print(“Distancia em cm: “);
    Serial.print(cmMsec);
    Serial.print(” – Distancia em polegadas: “);
    Serial.println(inMsec);
    delay(1000);
    }

    1. use qualquer pino que quiser, no caso eu usei os pinos do ESP8266 em D1 e D2

      #define pino_trigger D1
      #define pino_echo D2

    2. Olá, estou com o Arduino MEGA 2560 e estou tentou utilizar este código para fazer o teste do HC-SR04. Porém, ele imprime apenas a primeira distância, após isso ele fica ssim:

      Lendo dados do sensor…
      Distancia em cm: 7.00 – Distancia em polegadas: 3.00
      U⸮o6″⸮⸮⸮88艒⸮j⸮)-⸮ ⸮⸮ ⸮⸮⸮⸮⸮,⸮⸮8i⸮8⸮⸮⸮h⸮⸮⸮⸮j⸮⸮⸮⸮⸮⸮⸮j⸮⸮j⸮(,⸮)-⸮88⸮⸮i=⸮⸮⸮ҙ⸮)-⸮⸮⸮⸮98

      Teria alguma ideia do que pode estar acontecendo? a biblioteca que tenho instalada é a Ultrasonic versão 3.0.0 de Erick Simões
      O código está assim aqui:

      //Carrega a biblioteca do sensor ultrassonico
      #include

      //Define os pinos para o trigger e echo
      #define pino_trigger 4
      #define pino_echo 5

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

      void setup()
      {
      Serial.begin(115200);
      Serial.println(“Lendo dados do sensor…”);
      }

      void loop()
      {
      //Le as informacoes do sensor, em cm e pol
      float cmMsec, inMsec;
      cmMsec = ultrasonic.distanceRead(CM);
      inMsec = ultrasonic.distanceRead(INC);

      //Exibe informacoes no serial monitor
      Serial.print(“Distancia em cm: “);
      Serial.print(cmMsec);
      Serial.print(” – Distancia em polegadas: “);
      Serial.println(inMsec);

      delay(1000);
      }

      1. consegui resolver,

        Estou começando com arduino e não sabia que precisava colocar o serial.begin com o mesmo valor que uso na saída serial lá.

        minha saida serial estava em 9600 e o do código é outro valor.
        ao mudar o valor funcionou normalmente

        1. Olá!

          Isso mesmo, o valor dentro do serial.begin é a taxa de transmissão. Se essas taxas não forem iguais, não ocorre a comunicação e em geral a saída é só de caracteres aleatórios.

          Abraços!
          Vinícius – Equipe MakerHero

  4. Bom dia.
    Primeiramente parabéns pelos projetos. Nos ajuda muito.
    O meu programa nãoo carrega. Aparece essa mensagem de erro.

    Arduino: 1.8.13 (Windows 10), Placa:”Arduino Uno”

    C:\Users\renat\AppData\Local\Temp\arduino_modified_sketch_131088\UltrasonicDemo.pde: In function ‘void loop()’:

    UltrasonicDemo:27:37: error: ‘unsigned int Ultrasonic::timing()’ is private within this context

    long microsec = ultrasonic.timing();

    ^

    In file included from C:\Users\renat\AppData\Local\Temp\arduino_modified_sketch_131088\UltrasonicDemo.pde:12:0:

    C:\Users\renat\sketchbook\libraries\Ultrasonic\src/Ultrasonic.h:43:18: note: declared private here

    unsigned int timing();

    ^~~~~~

    UltrasonicDemo:29:23: error: ‘class Ultrasonic’ has no member named ‘convert’

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

    ^~~~~~~

    In file included from C:\Users\renat\AppData\Local\Temp\arduino_modified_sketch_131088\UltrasonicDemo.pde:12:0:

    C:\Users\renat\sketchbook\libraries\Ultrasonic\src/Ultrasonic.h:26:12: error: expected unqualified-id before numeric constant

    #define CM 28

    ^

    C:\Users\renat\AppData\Local\Temp\arduino_modified_sketch_131088\UltrasonicDemo.pde:29:53: note: in expansion of macro ‘CM’

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

    ^~

    Foram encontradas múltiplas bibliotecas para “Ultrasonic.h”

    Usado: C:\Users\renat\sketchbook\libraries\Ultrasonic

    Não usado: C:\Program Files (x86)\Arduino\libraries\Ultrasonic-master

    exit status 1

    ‘unsigned int Ultrasonic::timing()’ is private within this context

    Este relatório teria mais informações com
    “Mostrar a saida detalhada durante a compilação”
    opção pode ser ativada em “Arquivo -> Preferências”

    1. Diz que tem duas bibliotecas. Mas na pasta LIBRARIES não consegui achar a biblioteca Ultrasonic para remover. Aparece somente a Ultrasonic-master que foi a que eu baixei e instalei

      1. Deu certo. As bibliotecas genuinas do arduino estavam instaladas diretamente na pasta de usuário/sketchbook. Removi a biblioteca Ultrasonic e funcionou.
        Eu queria pegar a precisão milimétrica, mas o programa que eu estava utilizando com a biblioteca Ultrasonic tinha precisão centimétrica.
        Valeu.

  5. Boa tarde, esse código não está compilando.Poderia me ajudar? Não consigo achar o erro..

    #include
    Ultrasonic ultrasonic(7,6);
    const int ledVerde1 = 13;
    const int ledVerde2 = 12;
    const int ledAmarelo1 = 11;
    const int ledAmarelo2 = 10;
    const int ledVermelho1 = 9;
    const int ledVermelho2 = 8;
    cons int buzzer = 3;
    long microsec = 0;
    float distanciaCM = 0;
    void setup() {
    Serial.begin(9600);
    pinMode(ledVerde1,OUTPUT);
    pinMode(ledVerde2,OUTPUT);
    pinMode(ledAmarelo1,OUTPUT);
    pinMode(ledAmarelo2,OUTPUT);
    pinMode(ledVermelho1,OUTPUT);
    pinMode(ledVermelho2,OUTPUT);
    pinMode(buzzer, OUTPUT);
    }
    void loop() {
    microsec = ultrasonic.timing();
    distanciaCM = ultrasonic.convert(microsec,
    Ultrasonic::CM);
    ledDistancia();
    Serial.print(distanciaCM);
    Serial.println(” cm”);
    delay(1000);
    }
    void ledDistancia() {
    digitalWrite(ledVerde,LOW);
    digitalWrite(ledAmarelo,LOW);
    digitalWrite(ledVermelho,LOW);

    if (distanciaCM > 20) {
    digitalWrite(ledVerde1,HIGH);
    }
    if (distanciaCM = 10) {
    digitalWrite(ledAmarelo1,HIGH);
    }
    if (distanciaCM < 10) {
    digitalWrite(ledVermelho1,HIGH);
    }
    }

    1. Olá Matias,

      Vi que a primeira linha é um #include, mas não há nada sendo incluído, precisaria ser dessa maneira aqui: #include
      Veja se assim ele compila.

      Caso não compile, no final da janela ele dirá qual erro está impedindo de compilar, aí posta aqui para a gente te ajudar.

      Abraços!
      Vinícius – Equipe MakerHero

  6. Olá, será que se encostar o emissor desse módulo na parede de um tubo de PVC, alguma parte do ultrassom conseguirá atravessá-lo, e incidir no líquido dentro do tubo? São experimentos com ultrassom. Grato !

    1. Olá Silvio,

      Não sei te responder, seria necessário testar, mas acredito que não funcionaria bem dessa forma.

      Não acho que ele consiga considerar ecos de intensidades diferentes, irá pegar apenas o mais intenso.

      Abraços!
      Vinícius – Equipe MakerHero

  7. Muito bom seu site está me ajudando muito nas aulas de robótica na escola sou professor de física e na eletiva de robótica tenho usado suas aulas

    1. Olá Edson,

      Que bom que nossos conteúdos estão te ajudando!
      Ficamos felizes em saber que o conhecimento está sendo disseminado.

      Abraços!
      Vinícius – Equipe MakerHero

  8. Muito bom o exemplo de vocês e organização do site. Não é atoa que são um dos pioneiros no ramo. Acompanho vocês a quase 6 anos.

    1. Olá Maurício!

      Que ótimo que está com a gente a tanto tempo! Pode contar com a gente!

      Abraço,
      Rosana – Equipe MakerHero

  9. Olá !!
    Como faço esse projeto na esp32 , para monitorar um reservatório pelo smartphone?

    1. Olá Naldo!

      Você já conhece a plataforma Blynk? Acho que é uma boa opção para fazer esse monitoramento através do smartphone.

      Abraço!
      Rosana – Equipe MakerHero

  10. Professor, há possibilidade de inserir 04 sensores ultrassônico num mesmo Arduino? Tenho um projeto de colocar sensores em um cubo 20X20cm nas quatro laterais e disparar um som conforme aproximação em qualquer um dos lados.
    Aguardo

    1. Olá Ricardo!

      É possível sim! O código deve ficar bem semelhante com o acima, sendo que vai precisar declarar 4 sensores ultrassônicos e realizar a leitura dos 4 separadamente.

      Abraço!
      Rosana – Equipe MakerHero

  11. Bom dia! Gostaria de fazer um radar com um sensor de distância Ultrassônico e um motor de passo + Drive ULN 2003, mas estou com dificuldade em programar o motor de passo. Consegui fazer o sensor ultrassônico funcionar e mostrar no processing, mas a programação para esse motor não consegui ainda. Alguém tem uma solução? Desde já agradeço.

    1. Cleber,

      Dê uma olhada neste post: https://www.makerhero.com/blog/controlando-um-motor-de-passo-5v-com-arduino/

      Abraços!
      Diogo – Equpe MakerHero

  12. Esse projeto apresenta o seguinte erro compilando:
    unsigned int Ultrasonic::timing()’ is private within this context

    Como resolver? Desde já agradeço.

  13. Olá,

    Fiz o teste e não funcionou o sensor nas distancias. Aparece como 0,00.

    Tem que instalar alguma outra biblioteca, tipo a new ping?

    1. Anderson,
      Verifique se está tudo bem conectado.

      Abraços!
      Diogo – Equipe MakerHero

  14. Bom dia! Quando eu fui verificar o código no IDE, deu o erro exit status 1 ‘class Ultrasonic’ has no member named ‘convert’ que foi referente a linha inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
    Você pode me ajudar?
    Att
    Prof. Carlos Leonardo

  15. Cara parabéns, eu compartilho o mesmo pensamento, detesto saber que algo funciona, e não saber como.

  16. O triger é um sinal 5v?
    E o echo quantos v

    1. Fabiano,

      Se você alimentar com 5v o seu sensor, o echo vai ter uma tensão de 5V.

      Abraços!
      Diogo – Equipe MakerHero

  17. Boa noite amigo, o sensor HC-SR04 é capaz de medir uma distância variável, (objeto preso ao sensor em movimento), e qual o tempo de resposta do mesmo?

    Grato pela atenção.

  18. Qual sensor possui maior precisão o vl5310x ou esse HC-SR04? quero medir diâmetro de objetos com variação de 10cm.
    Estou usando o vl5310x mas ele varia muito medindo a mesma distancia varia alguns MM arredondando pode chegar a 1 a 2cm de variação. isso pra mim é bastante.

    1. Everton,

      O HC-SR04 costuma ter uma variação grande algumas vezes.

      Abraços!
      Diogo – Equipe MakerHero

  19. Boa noite, como eu monto um código para acionar uma biometria passando por um ultrassônico desligando dois reles e passando por um sensor de fluxo

  20. Olá, preciso de uma informação, me ajude por favor.

  21. Boa tarde, sabe se tem algum sensor que consigo medir uma distancia de até 20 metros??

    1. Galba,

      Não temos um sensor de distância para 20 metros 🙁

      Abraços!
      Diogo – Equipe MakerHero

  22. Você poderia colocar no site : quando o sensor de distancia detectar um objeto mostrar na tela do LCD “objeto detectado”?

  23. Boa tarde.
    Qual a distância máxima que posso deixar o sensor ultrassônico do arduíno sem prejudicar a transmissão de dados?

    1. Marco,

      Depende muito mesmo do ambiente, das interferências que podem ocorrer. Uma distância geralmente segura é em torno de 40cm. Mas como mencionado, pode ser muito mais (o máximo no datasheet é 4m, mas isso em condições ideais), ou menos.

      Abraços!
      Diogo – Equipe MakerHero

  24. Olá, estou desenvolvendo um projeto com o arduino sobre o fluxo de pessoas, e queria saber se há alguma programação que calcule o tempo que uma pessoa passará pelo sensor, para que: ex.: Se uma pessoa passar apenas o braço, o sensor irá anular a contagem de que uma pessoa passou pelo local

    1. bio0,

      Pronta, não. Agora você poderia fazer uma para adequar às suas necessidades.

      Abraços!
      Diogo- Equipe MakerHero

  25. Boa tarde
    Eu montei kits de robot (veículo autonomo) com meus alunos utilizando o sensor ultrassonico.
    Mas temos um problema que ainda não conseguimos resolver. Quando o obstáculo, que pode ser uma parede está em ângulo menor que 90°, a distância medida é bem maior que a real. Parece haver uma reverberação. Além disso obstáculos pequenos como o pé de uma cadeira não são detectados.
    Você tem alguma solução para mitigar esses problemas.
    Quero agradecer pelas dicas do site foram muito úteis.

    1. João,

      Esse sensor é realmente bastante complicado de mexer em relação a situações por ti explicitadas. Acredito que calibrando ele, possa ajudar: https://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/

      Abraços e cuide-se com o COVID-19!
      Diogo – Equipe MakerHero

  26. Quando eu estava começando realmente vi que estudar cada elemento separado vale bem mais a pena que sair montando junto rs

    1. Luan,

      Com certeza! Procure ir passo a passo, muito melhor e mais garantido!

      Abraços!
      Diogo – Equipe MakerHero

  27. Boa noite! Gostaria da sua ajuda.
    Estou com um projeto de TCC e gostaria de pergunta, se é possível fazer com que o sensor identifique apenas um objeto escolhido, como por exemplo, uma pulseira em uma criança? Se possível, mandar a resposta no email.. iria ajudar muito

    1. Erick,

      Para fazer esse tipo de identificação, o mais aconselhável seria a utilização de RFID. Dê uma olhada aqui: https://www.makerhero.com/blog/controle-acesso-leitor-rfid-arduino/

      Abraços!
      Diogo – Equipe MakerHero

  28. boa noite, quando vou passar o codigo para o arduino do jeito que está no texto me aparece o seguinte erro : ‘class Ultrasonic’ has no member named ‘convert’
    pode me ajudar ??

    1. Olá Adrian,

      Você instalou a biblioteca Ultrasonic.h corretamente? Acredito que o problema esteja na instalação da mesma.

      Para corrigir seu problema baixe a biblioteca Ultrasonic.h aqui. Descompacte a pasta Ultrasonic e coloque-a dentro da pasta libraries da IDE do Arduino.

      Abraço!
      Rosana – Equipe MakerHero

  29. Galera eu preciso muito de ajuda, estou usando esse código para usar o ultrassônico para medir o nível de água de um tanque.
    Mas estou com uma série de erros, poderiam me ajudar? A mensagem que sempre aparece é “long microsec = ultrasonic.timing() error”

    Segue os erros:
    /tmp/336003390/sketch_dec4a/sketch_dec4a.ino: In function ‘float MedeDistanciaEmMetros()’:

    /tmp/336003390/sketch_dec4a/sketch_dec4a.ino:91:32: error: ‘class Ultrasonic’ has no member named ‘timing’

    long microsec = ultrasonic.timing();

    ^

    /tmp/336003390/sketch_dec4a/sketch_dec4a.ino:93:25: error: ‘class Ultrasonic’ has no member named ‘convert’

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

    ^

    /tmp/336003390/sketch_dec4a/sketch_dec4a.ino:93:43: error: ‘CM’ is not a member of ‘Ultrasonic’

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

    ^

    exit status 1

    SEGUE O CÓDIGO COMPLETO.

    #include

    //defines do projeto
    #define TRIGGER_PIN 12
    #define ECHO_PIN 13

    #define PI_APROXIMADO 3.1415927
    #define NUM_MEDIDAS_DISTANCIA 100

    //defines de debug
    //#define MOSTRA_DADOS_RAW_SENSOR
    #define NUM_PULA_LINHAS_SERIAL_DEGUB 80

    //defines da área do reservatório:
    //descomentar somente o tipo de área do seu reservatório
    //#define RETANGULO
    #define CIRCULO

    //Se for um retangulo:
    #define RETANGULO_BASE 1 //[m]
    #define RETANGULO_ALTURA 1 //[m]

    //se for um circulo:
    #define CIRCULO_RAIO 0.05 //[m]

    //variaveis e objetos globais
    Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
    float AreaPerfilReservatorio;
    float VolumeTotalRetirado;

    //prototypes
    float CalculaAreaPerfilReservatorio(void);
    float MedeDistanciaEmMetros(void);
    float MediaDistancias(void);

    /*
    * Implementações
    */

    /*
    * Função: cálculo da área do perfil do reservatório
    * Parâmetros: nenhum
    * Retorno: área calculada
    */
    float CalculaAreaPerfilReservatorio(void)
    {
    float AreaCalc;

    #ifdef RETANGULO
    AreaCalc = RETANGULO_BASE * RETANGULO_ALTURA;
    #endif

    #ifdef CIRCULO
    AreaCalc = PI_APROXIMADO * CIRCULO_RAIO * CIRCULO_RAIO;
    #endif

    return AreaCalc;

    }

    /*
    * Função: Média de medidas de distância
    * Parâmetros: nenhum
    * Retorno: média das medidas de distância
    */
    float MediaDistancias(void)
    {
    int i;
    float SomaMedidas;
    float Media;

    SomaMedidas = 0.0;
    for(i=0; i<NUM_MEDIDAS_DISTANCIA; i++)
    SomaMedidas = SomaMedidas + MedeDistanciaEmMetros();

    Media = (SomaMedidas / NUM_MEDIDAS_DISTANCIA);
    return Media;
    }

    /*
    * Função: mede distancia em metros
    * Parametros: nenhum
    * Retorno: distancia (m)
    */
    float MedeDistanciaEmMetros(void)
    {
    float cmMsec, DistMetros;
    long microsec = ultrasonic.timing();

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

    #ifdef MOSTRA_DADOS_RAW_SENSOR
    Serial.println("[DADOS DO SENSOR]");
    Serial.print("Tempo(ms): ");
    Serial.print(microsec);
    Serial.print(", Distancia(cm): ");
    Serial.print(cmMsec);
    #endif

    DistMetros = (cmMsec / 100.0);
    return DistMetros;
    }

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

    //calcula área do perfil (com base em parametros fornecidos nos defines)
    AreaPerfilReservatorio = CalculaAreaPerfilReservatorio();
    VolumeTotalRetirado = 0.0;
    }

    void loop()
    {
    float DistanciaT2;
    float DistanciaT1;
    float VariacaoVazao;
    float VariacaoDistancia;
    float VolumeEmLitros;
    char i;

    //faz as medições
    DistanciaT1 = MediaDistancias();
    delay(1000);
    DistanciaT2 = MediaDistancias();

    VariacaoDistancia = ((DistanciaT2 – DistanciaT1) / 100); //[m]
    VariacaoVazao = (AreaPerfilReservatorio * VariacaoDistancia); //[m³/s]
    VolumeTotalRetirado = VolumeTotalRetirado + VariacaoVazao; //[m³]
    VolumeEmLitros = (VolumeTotalRetirado*1000.0);

    for (i=0; i<NUM_PULA_LINHAS_SERIAL_DEGUB; i++)
    Serial.println("");

    Serial.println("[DADOS DA MEDIÇÃO]");
    Serial.print("Variacao de vazao: ");
    Serial.print(VariacaoVazao);
    Serial.print(" m^3/s");
    Serial.println("");
    Serial.print("Variacao de distancia: ");
    Serial.print(VariacaoDistancia*100);
    Serial.print(" cm");
    Serial.println("");
    Serial.print("Volume total retirado: ");
    Serial.print(VolumeEmLitros);
    Serial.print(" l");
    Serial.println("");
    }

    1. Mikael, pelo código, você não incluiu a biblioteca Ultrasoni.h | Digite no início do código #include Ultrasonic.h para que possa usar esses comandos.

      Abraços!
      Diogo – Equipe MakerHero

  30. esse codigo da me uma serie de erros , consegue me dizer como resolver?

    1. Pedro,

      Quais erros ocorrem?

      Abraços!
      Diogo – Equipe MakerHero

  31. Olá, fiz um projeto em que o sensor lê a distancia e o valor aparece no lcd 16×2.
    Neste projeto eu uso um modulo i2c para o lcd (nao sei se essa informação será relevante).
    O problema é que o projeto deve ser algo portatil, e quando eu uso a bateria de 9V parece q o sensor de distancia nao funciona.
    Eu ja testei com o arduino ligado ao computador e deu certo, mas quando conecto na bateria o sensor nao lê.

    Qual seria o problema? Alguem pode me ajudar?

    1. Rafael,

      Você tentou usar uma outra fonte para testar?

      Abraços!
      Diogo – Equipe MakerHero

      1. Testei com o cabo azul conectado ao carregador de celular(5v) na tomada e deu certo. Ainda vou testar na tomada com uma fonte de 9V pela entrada p4.
        Mas a intenção eh q o projeto seja portatil, precisaria de uma bateria.
        Será que a corrente dessas baterias q eu testei não eh suficiente? na verdade não tem a informação da corrente, soh a tensao (9v). Eu comprei uma recarregavel que tem a informação de corrente (450mAh).
        Eu programei o LCD para mostrar uma mensagem assim que liga. Quando eu usei a bateria que nao tem a informação da corrente, o LCD mostra a mensagem ( mas o sensor n funciona). Porém quando eu usei a bateria recarregavel (450mAh) nem a mensagem foi impressa na tela do LCD.
        Será q a bateria de celular daria certo? Como eu faria para adaptar? Sou leigo no assunto.

        1. Consegui resolver o problema.
          Coloquei um resistor de 150 ohms entre a bateria 9v e a entrada p4.
          Pelo jeito o problema era excesso de tensao.
          Deu tudo certo.

          1. Rafael,

            Que bom que o problema foi resolvido! Sucesso!!

            Abraços!
            Diogo – Equipe MakerHero

            Diogo Zimmermann
  32. exit status 1
    ‘class Ultrasonic’ has no member named ‘timing’ <—- isso aparece quando eu compilo o código no arduino. O que devo fazer?

    1. Higor, você instalou todas as bibliotecas necessárias?

      Abraços!
      Diogo – Equipe MakerHero

  33. olá boa tarde, na hora que eu vou compilar o código diz que ultrasonic.timing não foi declarada. o que eu devo fazer? alguem me ajude

  34. testei o código e deu tudo certo,medi com a trena a distancia e bateu a medida.

    1. Roberto,

      Que bom que deu tudo certo!

      Abraços!
      Diogo – Equipe MakerHero

  35. quais as dificuldades existiriam para monitorar 100 vagas ? quais os acrescimos de componentes seriam necessários alem dos sensores ?

    Roberto Fabio Conway Baccarat
    1. Roberto,
      Você precisaria além dos sensores, mais alguns Arduinos (já que como ele usa 2 pinos digitais e você possui 13 no UNO, precisaria ter Arduinos proporcionais ao tanto de sensores utilizados), e algumas alimentações pros sensores e Arduinos.

      Abraços!
      Diogo – Equipe MakerHero

  36. Arduino: 1.8.9 (Windows 10), Placa:”Arduino/Genuino Uno”

    In file included from C:\Users\f.canhameiro\Documents\Arduino\Sensor\Sensor.ino:5:0:

    C:\Program Files (x86)\Arduino\libraries\Ultrasonic-3.0.0\src/Ultrasonic.h: In function ‘void loop()’:

    C:\Program Files (x86)\Arduino\libraries\Ultrasonic-3.0.0\src/Ultrasonic.h:43:18: error: ‘unsigned int Ultrasonic::timing()’ is private

    unsigned int timing();

    ^

    Sensor:24:37: error: within this context

    long microsec = ultrasonic.timing();

    ^

    Sensor:25:23: error: ‘class Ultrasonic’ has no member named ‘convert’

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

    ^

    In file included from C:\Users\f.canhameiro\Documents\Arduino\Sensor\Sensor.ino:5:0:

    C:\Program Files (x86)\Arduino\libraries\Ultrasonic-3.0.0\src/Ultrasonic.h:26:12: error: expected unqualified-id before numeric constant

    #define CM 28

    ^

    C:\Users\f.canhameiro\Documents\Arduino\Sensor\Sensor.ino:25:53: note: in expansion of macro ‘CM’

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

    ^

    Sensor:26:23: error: ‘class Ultrasonic’ has no member named ‘convert’

    inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

    ^

    Sensor:26:41: error: ‘IN’ is not a member of ‘Ultrasonic’

    inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

    ^

    exit status 1
    within this context

    poderia me ajudar com esse erro

    1. Olá, Felipe!

      Adicione essa linha no início do código:

      #include

      Abraços!
      Diogo – Equipe MakerHero

  37. Uma dúvida, quero utilizar dois sensores ultrassonicos e um lcd, porém ví que a pinagem do lcd é comum com os sensores e tenho o arduino uno, será possível realizar isto com este modelo?

    1. Olá, Ramiris!

      Dê uma conferida nesse projetinho, ele pode te ajudar:
      https://www.instructables.com/id/Arduino-Ultrasonic-Sensor-HC-SR04-With-LCD-Display/

      Abraços,
      Diogo – Equipe MakerHero

  38. Muito legal! Parabéns

    1. Muito obrigado, Ramiris!

      Agradecemos pela sua visita, e continue explorando o #movimentoMaker!

      Abraços!
      Diogo – Equipe MakerHero

  39. Na hora de carregar o sketch, aparece a mensagem de erro ‘class Ultrasonic’ has no member named ‘timing’
    para o comando microsec=ultrassonic.timing(). o que eu faço?

    1. Olá Jonas,

      Isso acontece apenas quando você carrega o código para o Arduino ou também quando o código é compilado?
      Se acontece em ambos, o problema deve estar na instalação da biblioteca.

      Abraço!
      Rosana – Equipe MakerHero

      1. Olá equipe FlipFlop, e se o problema estiver na biblioteca como é que podemos resolver isso?

        1. Olá Jonas,

          Proceda com a instalação da biblioteca novamente.

          Abraço!
          Rosana – Equipe MakerHero

  40. olá, como sempre encontro boas dicas de projetos aqui. Estou elaborando um medidor de nível para uma cisterna . Ocorre que a altura máxima é 6 metros. Tem algum sensor ultra-sônico com um alcance Acima de 4m ? Obrigado .

    1. Olá Gerson,

      Infelizmente não :/
      Esse é o alcance máximo do sensor ultrassônico.

      Abraço!
      Rosana – Equipe MakerHero

  41. Boa noite,
    Consegui fazer a programação do sensor porém tenho a necessidade de aplicar esses valores em um supervisório. Elipse SCADA para ser mais exato. Alguem consegue me ajudar com a biblioteca Modbus e o código para essa aplicação.

    Grato!!!!

  42. Bem útil. Gostaria de saber se tem como controlar a emissão desses pulsos de 40kHz através da programação. Não estou interessado em medir a distância, mas apenas em gerar um pulso numa frequência entre 20 e 30kHz

    1. Olá Wilton,

      Acredito que não seja possível alterar a frequência dos pulsos.

      Abraço!
      Rosana -Equipe MakerHero

  43. Boa noite, como utilizar mais de um sensor ultrassônico?
    Estou tendo dificuldades em desenvolver um programa. Estou utilizando cinco sensores ultrassônicos SR-04 para controlar dois motores DC.

    1. Olá Leandro,

      Vou mostrar como é feito para dois sensores. Para cinco é só replicar as mudanças.

      #include

      #define pino_trigger 7
      #define pino_trigger2 9

      #define pino_echo 6
      #define pino_echo2 8

      //Inicializa os sensores nos pinos definidos acima
      Ultrasonic ultrasonic(pino_trigger, pino_echo); //sensor 1
      Ultrasonic ultrasonic2(pino_trigger2, pino_echo2); //sensor 2

      float s1;
      float s2;

      void setup()
      {
      Serial.begin(9600);
      Serial.println(“Lendo dados dos sensores…”);
      }

      void loop()
      {
      //Le as informacoes do sensor 1
      long microsec = ultrasonic.timing();
      s1 = ultrasonic.convert(microsec, Ultrasonic::CM);

      //Le as informacoes do sensor 2
      long microsec2 = ultrasonic2.timing();
      s2 = ultrasonic2.convert(microsec2, Ultrasonic::CM);

      delay(10);

      Serial.print(“Distancia sensor 1: “);
      Serial.print(s1);
      Serial.print(” – Distancia sensor 2: “);
      Serial.print(s2);

      delay(10);

      }

      Abraço,

      Rosana – Equipe MakerHero

      1. seria possivel ampliar para 100 sensores ?

  44. Preciso de sensor ultrassônico para medir fluxo liquido através de arduino via bluetooph tubo de 50 mm perspectiva inicial 10.000 pçs mes

    Ernesto de Oliveira Lara Filho
    1. Olá Ernesto,

      Acredito que esse sensor ultrassônico vá atender suas necessidades. Você pode adquirir os produtos que necessita através desse links:
      – Arduino: https://www.makerhero.com/produto/placa-uno-r3-cabo-usb-para-arduino/
      – Módulo Bluetooth: https://www.makerhero.com/produto/modulo-bluetooth-rs232-hc-05/
      – Sensor ultrassônico: https://www.makerhero.com/produto/sensor-de-distancia-ultrassonico-hc-sr04/

      E você também pode entrar em contato com nossa equipe de vendas através do email: [email protected]

      Abraço!
      Rosana – Equipe MakerHero

  45. Boa Tarde!

    Amigo,

    Gosto muito do seu conteúdo, mais estou com um problema sempre que tento usar a biblioteca #include da erro como faço já tentei muitas mais da o mesmo erro. Por favor ajude mi.

    1. Olá Luide!

      Se você for incluir uma biblioteca via #include, antes você precisa primeiro incluí-la na IDE do Arduino.
      Para adicionar uma biblioteca você deve ir em “Sketch -> Incluir Bibliotecas -> Gerenciar bibliotecas” no gerenciador de bibliotecas você pode buscar a biblioteca que deseja.

      Outra opção é baixá-la em .ZIP e adicionar na IDE do Arduino. Para isso, vá em “Sketch -> Incluir Bibliotecas -> Adicionar Biblioteca .ZIP”

      Abraços!

      André – Equipe MakerHero

  46. Bem explicadinho! Parabéns!!

    1. Olá Gabriel!

      É sempre bom saber que nosso trabalho ajuda as pessoas! Você também pode dar uma olhada no nosso fórum. Lá você pode tirar algumas dúvidas e postar seus projetos. Colaborar e aproveitar a comunidade:

      https://www.makerhero.com/forum/

      Abraços!

      André – Equipe MakerHero

  47. Como programo um Sketch para ler 3 sensores na mesma placa Arduino.
    Att

    1. Olá Luiz!

      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 :

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

      Abraços!

      André – Equipe MakerHero

  48. Pra galera que está tendo dificuldades atualmente na hora de verificar o código e aparece o erro:

    “exit status 1
    within this context
    long microsec = ultrasonic.timing();”

    Façam o seguinte, baixem a última versão que foi feita da biblioteca Ultrasonic (no caso a ‘Ultrasonic-3.0.0’), dps vá na linha de código:

    “long microsec = ultrasonic.timing();”

    e mudem para:

    “long microsec = ultrasonic.distanceRead();”

    Logo dps faça outra mudança na linhas de códigos:

    “cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
    inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);”

    e mude para:

    “cmMsec = ultrasonic.read(CM);
    inMsec = ultrasonic.read(IN);”

    As novas atualizações das bibliotecas do Arduino não necessitam mais dos outros códigos para conversão da distância e leitura dela, por isso causa esse ‘erro’ no código. Tanto que agora quando vcs fizerem os experimentos verão que os valores estarão em inteiros ou invés de quebrados. Abraços!

    1. Olá Alberth!

      Vamos testar aqui sua solução. Obrigado por disponibilizar essa solução.

      Abraços!

      André – Equipe MakerHero

  49. Boa tarde amigo, estou com um problema no momento de ler a informação que retorna no monitor. Aparece por exemplo %?0>! e mais outros caracteres que se repetem como se eles fossem a informação das distancias.
    Aguardo seu retorno, obrigado.

    1. Olá Nicolas!

      Veja se a velocidade (baud rate) que você colocou no programa é a mesma que está no monitor. Provavelmente estão diferentes 😉

      Abraços!

      André – Equipe MakerHero

  50. Boa noite, preciso ligar 3 sensores usando a Wemos D1 porém a biblioteca Ultrasonic só aceita 1 sensor, já a biblioteca NewPing aparentemente é incompatível. Há uma maneira de contornar a situação?

  51. Eu posso colocar um vidro na frente do sensor Ultrassônico ou de um sensor Infravermelho para proteger ou isso vai atrapalhar a detecção ?
    Obrigado.

    1. Olá Jobson!

      O vidro vai atrapalhar o ultrassom, mas acho que o sensor infravermelho não.

      Abraços!

      André – Equipe MakerHero

  52. Estou fazendo um projeto com o sensor ultrassônico, porém o sensor está sofrendo interferência do vento. Alguém saberia dizer de que forma posso resolver esse problema?

  53. long microsec = ultrasonic.timing(); … pq essa linha de código não funciona… ja tenho biblioteca instalada

  54. Prezado Adilson
    Bom dia
    Meu nome é Carlos Dias, sou engenheiro civil por formação, e estou trabalhando em um projeto que vou precisar de seu apoio técnico
    se possível regressar o contato
    974632995
    [email protected]

    CARLOS HENRIQUE DE SOUZA DIAS
  55. Prezado Adilson
    Bom dia
    Meu nome é Carlos Dias, sou engenheiro civil por formação, e estou trabalhando em um projeto que vou precisar de seu apoio técnico
    se possivel regresar o contato

    CARLOS HENRIQUE DE SOUZA DIAS
  56. Bom dia colega!

    Obrigado pela postagem! Me auxiliou muito!!!

    É possível colher estes valores via SNMP

  57. Boa tarde!
    É possível utiliza-lo como sensor de presença de diminuindo o delay no loop para, digamos 10ms?
    Um loop assim poderia superaquecer o Arduino?
    Sou completamente leigo se tratando de Arduino.
    Pode de alguma forma prejudicar o equipamento?

  58. Tá dando erro!

  59. sou uma jovem senhora querendo entrar para este mundo maravilhoso e estou querendo desenvolver um projeto onde o ultrasonic mede distancia, usando um Módulo WiFi ESP8266 ESP-01, ler os resultados das medidas pelo android através do app inventor, alguém poderia me ajudar? ideia para código, e se tem algum calculo para incluir no app inventor… é para um projeto final de um curso online, grata.

    1. Bom dia Sinara,

      Tudo bem? Antes de mais nada parabéns pela iniciativa. 🙂

      Abraço!

      Adilson – Equipe MakerHero

  60. MUITO OBRIGADA… vocês me salvaram no meu trabalho de física, achei muito bem explicado e dinâmico amei

  61. você consegue me informar se o arduino lê esse sensor ultrasonico da nivelco EasyTREK SP-500 do link abaixo ????
    E oq devo fazer pra ele rodar no arduino ? a biblioteca seria a mesma desse sensor ultrasonico HC-SR04 ???

    https://www.nivelco.com/news?id=easytrek%20sp-500

  62. Tem como fazer os dados do sensor serem exibidos na tela do meu ceua

    1. olá fiz uma programação com este sensor mas o método ranging nao é reconhecido aparecendo este erro:
      ‘class Ultrasonic’ has no member named ‘Timing’
      alguém me ajuda?
      abaixo a programação completa

      #include
      #include
      #define echoPin 13
      #define trigPin 12

      Servo servo_objeto;
      Ultrasonic ultrasonic(12,13);

      int posicao_inicial_servo = 0;
      int ledPin = 10;

      /*—————————————–*/
      void setup()
      {
      Serial.begin(9600);
      pinMode(echoPin, INPUT);
      pinMode(trigPin, OUTPUT);
      pinMode(ledPin, OUTPUT);
      servo_objeto.attach(9);

      }
      /*—————————————–*/
      void loop()
      {
      digitalWrite(ledPin, LOW);
      servo_objeto.write(posicao_inicial_servo);
      int valor = func_distancia_ultrasonico();
      if(valor <=10)
      {
      func_controladora();
      delay(5000);
      }

      delay(500);
      }
      /*—————————————-*/
      void func_controladora()
      {
      func_liga_led();
      func_chama_servo();
      }
      /*—————————————-*/
      void func_liga_led()
      {
      digitalWrite(ledPin, HIGH);
      }
      /*—————————————-*/
      void func_chama_servo()
      {
      int posicao_final_servo = 90;
      servo_objeto.write(posicao_final_servo);
      }
      /*—————————————-*/
      int func_distancia_ultrasonico()
      {
      digitalWrite(trigPin, LOW);
      delayMicroseconds(2);

      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);

      digitalWrite(trigPin, LOW);
      int distancia= (ultrasonic.Timing(CM));
      Serial.print("Distancia em CM: ");
      Serial.println(distancia);
      return distancia;
      }

      1. olá fiz uma programação com este sensor mas o método ranging nao é reconhecido aparecendo este erro:
        ‘class Ultrasonic’ has no member named ‘ranging’
        alguém me ajuda?
        abaixo a programação completa
        #include
        #include
        #define echoPin 13
        #define trigPin 12

        Servo servo_objeto;
        Ultrasonic ultrasonic(12,13);

        int posicao_inicial_servo = 0;
        int ledPin = 10;

        /*—————————————–*/
        void setup()
        {
        Serial.begin(9600);
        pinMode(echoPin, INPUT);
        pinMode(trigPin, OUTPUT);
        pinMode(ledPin, OUTPUT);
        servo_objeto.attach(9);

        }
        /*—————————————–*/
        void loop()
        {
        digitalWrite(ledPin, LOW);
        servo_objeto.write(posicao_inicial_servo);
        int valor = func_distancia_ultrasonico();
        if(valor <=10)
        {
        func_controladora();
        delay(5000);
        }

        delay(500);
        }
        /*—————————————-*/
        void func_controladora()
        {
        func_liga_led();
        func_chama_servo();
        }
        /*—————————————-*/
        void func_liga_led()
        {
        digitalWrite(ledPin, HIGH);
        }
        /*—————————————-*/
        void func_chama_servo()
        {
        int posicao_final_servo = 90;
        servo_objeto.write(posicao_final_servo);
        }
        /*—————————————-*/
        int func_distancia_ultrasonico()
        {
        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);

        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);

        digitalWrite(trigPin, LOW);
        int distancia= (ultrasonic.ranging(CM));
        Serial.print("Distancia em CM: ");
        Serial.println(distancia);
        return distancia;
        }

  63. Olá, estou querendo iniciar nesse mundo arduino, poderia me indicar o de menor custo que eu possa associar ao sensor de distancia ultrasonico ? preciso monitorar a distancia em tempo real, acha que consigo isso com o arduino? obrigado.

  64. Bom dia! Tenho que fazer um projeto para a faculdade e estou pensando em usar um sensor de proximidade ultrassônico arduíno XL num dispositivo Wearable que o pedestre usaria no dedo para apontar para a rua da ponta da calçada e poder detectar se há veículos se aproximando antes de começar a atravessar a rua.
    Minha dúvida é qual sensor poderia usar e se esse sensor conseguiria realmente detectar os carros se aproximando, pensando no raio de alcance e distância máxima de detecção. Não conheço muito bem os sensores arduínos.

    Obrigada!

  65. Muito bom para Iniciar projetos ..
    Com certeza suas dicas são de boa ajuda ..

  66. Bando de gay. Sabe nada inosenti

  67. 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().

  68. 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.

  69. 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?

  70. 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.

  71. 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
  72. 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?

  73. 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.

  74. 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!

  75. 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.

  76. 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.

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

  78. 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

  79. 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)”

  80. 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);

  81. 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.

  82. 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á?

  83. 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.

  84. 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 …

  85. 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…

  86. 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

  87. 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

  88. 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.

  89. 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.

  90. 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.

  91. 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);
      }

  92. 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

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

  94. Boa tarde,

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

  95. 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?

  96. 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

  97. 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?

  98. 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?

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

  100. 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.

  101. 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 MakerHero

  102. 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?

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

  104. 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.

  105. 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?

  106. 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.

  107. 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

  108. 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 MakerHero

  109. 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 MakerHero

    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!!

  110. 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 MakerHero

  111. 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?

  112. 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

  113. 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 MakerHero

  114. 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.

  115. 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.

  116. 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 ?

    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 MakerHero

  117. 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

    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 MakerHero

  118. 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 MakerHero

    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

  119. 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 MakerHero

  120. 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

  121. 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 ?

  122. 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 MakerHero

      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!

  123. 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 MakerHero

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

  125. 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 MakerHero

  126. Ó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 MakerHero

      1. mas e se nao tiver biblioteca???

        1. Ly,

          Então você deve instalar a biblioteca 🙂 O link está ali no post!

          Abraços!
          Diogo – Equipe MakerHero

  127. 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. chama um pedreiro pra arrumar bb.

      1. Nossa cara que grosso pra que isso. Aff

Trackbacks and Pingbacks

  1. […] sobre o funcionamento do sensor ultrassônico? Aprenda a conectá-lo e saiba […]

  2. […] programação com o sensor ultrassônico no Arduino (para mais informações, acesse o post “Como conectar o Sensor Ultrassônico ao Arduino“) e substituir a sua leitura da tela no monitor serial pela leitura gráfica, parecida com as […]

  3. […] Como conectar o Sensor Ultrassônico HC-SR04 ao Arduino […]