MEDINDO DISTÂNCIAS COM SENSOR ULTRASSÔNICO – (HC-SR04) E MOSTRANDO A LEITURA EM DISPLAY LCD 16×2 COM ARDUINO

HC-SR04 funcionando com LCD 16×2 e Arduino


Fala Pessoal! Tudo bem?   🙂 

Bom, hoje venho postar uma vez mais sobre o nosso já falado e apreciado, sensor ultrassônico, HC-SR04, sim, já falamos dele aqui no blog justamente neste post, MAS naquele post, para conseguirmos ler a distância medida pelo sensor e calculada pelo nosso código, dependíamos inteiramente do Monitor Serial da IDE do Arduino!  🙄 

Então, para seguirmos avançando, decidi que antes de “finalizar” os posts falando sobre o sensor HC-SR04, eu ainda digitaria mais este aqui, para registrarmos o funcionamento dos 3 componentes trabalhando juntos: display LCD 16×2 com backlight, Sensor Ultrassônico HC-SR04 e uma placa Arduino UNO compatível.  💡 

VISÃO GERAL DO SENSOR ULTRASSÔNICO – HC-SR04:

HC-SR04 pode ser utilizado simplesmente para medir a distância entre o sensor e um objeto, assim como, pode ser utilizado para acionar portas do microcontrolador, desviar um robô de barreiras, acionar luzes, acionar alarmes, acionar outros circuitos, etc enfim, as possibilidades são infinitas!  💡 

Visão do funcionamento do sensor HC-SR04

 

UMA VISÃO GLOBAL DO PRINCÍPIO DE FUNCIONAMENTO DO SENSOR HC-SR04

O princípio de funcionamento do sensor ultrassônico (HC-SR04 >> datasheet) é completamente baseado na seguinte sistemática: o transmissor (Tx) do sensor envia sinais ultrassônicos, e neste momento o receptor (Rx) do sensor fica no estado de “alerta” esperando receber o sinal de retorno, que na verdade é o próprio sinal de (echo), e com base no tempo entre o envio do sinal e o retorno do mesmo, então é calculada a distância entre o sensor e o objeto detectado (o objeto que serviu como obstáculo para os sinais de ultra-som baterem e voltarem).  🙂 

Princípio de Funcionamento Sensor HC-SR04

Princípio de Funcionamento Sensor HC-SR04

 

COMO INTERLIGAR OS COMPONENTES ELETRÔNICOS DO CIRCUITO:

Esquemático: HC-SR04 com LCD 16×2 e Arduino

 

Nosso código utiliza uma biblioteca externa chamada Ultrasonic, que você pode baixar aqui.
Descompacte a pasta Ultrasonic e coloque-a dentro da pasta LIBRARIES da IDE do Arduino.

Copie e Cole o código abaixo no editor da sua IDE Arduino, Verifique e Compile:

Nosso código acima mostra, que todo o cálculo matemático é feito por meio da biblioteca Ultrasonic. O sensor HC-SR04 é inicializado através dos pinos de TRIGGER e ECHO, e então efetua-se a leitura do receptor do sensor, atribuindo à variável cmMsec o valor da distância em centímetros. Um adendo nisto tudo pessoal, é que, como os resultados já são representados no monitor serial em “cm“, eu decidi retirar qualquer casa decimal do valor apresentado! Isso porque não vejo razão de mostrar por exemplo: 32,13 centímetros, pois para o tipo de projeto que pretendo utilizar esse “módulo”, este “circuito de sensor ultrassônico”, obter uma leitura de 32 centímetros já está satisfatório.

 

Foto do meu circuito montado e funcionando!

 

 

CURIOSIDADES IMPORTANTES SOBRE O SENSOR ULTRASSÔNICO – HC-SR04:

A corrente elétrica consumida pelo sensor em estado de espera (stand-by) é da ordem de apenas 2mA e quando em pleno funcionamento, a corrente elétrica consumida fica ao redor dos 15mA!

Abaixo vemos um pequeno gráfico que nos mostra a melhor angulação para que nosso sensor possa ser capaz de “enxergar”, ops, “escutar” sem “se perder”!  💡 

O sensor HC-SR04 “” melhor tudo num ângulo más de 30 Graus.

Pessoal, então, é isso aí o que eu tinha pra falar pra “finalizar” esta nossa “jornada” (e que jornada bacana hein! risos) falando, postando e gravando videos sobre o sensor ultrassônico HC-SR04!

Se surgiram dúvidas, postem, comentem, perguntem, mandem sinal-de-fumaça, risos…qualquer coisa, que eu vou, tentar ajudar!  🙂 

E aí, GOSTARAM do post?! Então comentem aí abaixo pessoal!  😎 

 

Rodrigo Costa
Sigam-me

7 thoughts on “MEDINDO DISTÂNCIAS COM SENSOR ULTRASSÔNICO – (HC-SR04) E MOSTRANDO A LEITURA EM DISPLAY LCD 16×2 COM ARDUINO”

  1. Bom dia.
    estou tendo um problema com o código e queria saber se você poderia me ajudar com o mesmo:
    o seguinte erro aparece na tela(‘class Ultrasonic’ has no member named ‘timing’) caso tenha a biblioteca utilizada, se possível disponibilizar o download do mesmo.

    1. Fala Gustavo! Tudo Bom?!

      Seja muito bem vindo ao nosso Blog!

      Rapaz, pelo erro que você citou, o mais provável é que na versão da biblioteca que você está utilizando, de fato deve estar faltando linha de código mencionando “o membro de nome timing”, por esta razão ele acusa de que não existe este membro na classe.

      OBS: muito provavelmente, você esteja utilizando uma versão mais nova da biblioteca “Ultrasonic“, e isto está causando incompatibilidade com o código disponibilizado no Blog.

      Como você pediu, acabei de disponibilizar para Download justamente a versão desta mesma biblioteca que utilizamos por aqui para rodar este código. Segue o link abaixo:

      https://eletronicaparatodos.com/download/2933/

      PS: Uma dica que deixo é a de procurar manter esta versão “guardada” nas suas bibliotecas do Arduino, para que mesmo que ela seja atualizado, você não perca esta versão que mantém certos programas/códigos rodando legal. 🙂

      É isso aí!

      Sucesso!

      Um Abraço,
      Rodrigo Costa do Blog, Fanpage e Instagram,
      https://EletronicaParaTodos.com
      https://facebook.com/EletronicaParaTodosBR
      https://instagram.com/EletronicaParaTodosBrasil

  2. Deu certinho, um erro que pode estar dando com o pedro pode ser o seguinte: eu copiei o código do jeito que está ai mas por algum motivo veio duplicado, depois da linha 92, começou a repetir o código novamente e foi ate a linha 256, então eu apaguei e deu certo.

    1. Fala Marcelo! Tudo Bom?!

      Rapaz, primeiramente seja muito bem-vindo ao Blog! 🙂

      Deixo aqui minha gratidão por você tomar seu tempo para escrever pra gente e o melhor, no intuito de Ajudar ao nosso Amigo Pedro, que por sinal pode ter encontrado justamente este problema que você mencionou! o.O

      Espero que o Pedro e os demais que por aqui passarem possam ler sua mensagem! 😉

      Qualquer coisa é só falar! 🙂

      Sucesso!

      Um Abraço,
      Rodrigo Costa do Canal,
      https://youtube.com/EletronicaParaTodos

  3. //----------------------------------------------------------------------------------------//
    //Código: Medidor de Distancia utilizando Sensor Ultrassonico HC-SR04 e Display LCD 16x2  //
    //Autor : Rodrigo Costa.                                                                  //
    //----------------------------------------------------------------------------------------//
    //Projeto Completo:                                                                       //
    //https://eletronicaparatodos.com                                                          //
    //http://eletronicaparatodos.net                                                          //
    //----------------------------------------------------------------------------------------//
    //REV.01:                                                                                 //
    //----------------------------------------------------------------------------------------//
    //REMOCAO DE DISTANCIA EM POLEGADAS PARA INCLUSAO DE DISTANCIA MOSTRADA EM METROS         //
    //----------------------------------------------------------------------------------------//
    //REV.02:                                                                                 //
    //----------------------------------------------------------------------------------------//
    //INCLUSÃO de DISTANCIA MOSTRADA EM METROS NO DISPLAY LCD E MONITOR SERIAL + TWEAKS       //
    //----------------------------------------------------------------------------------------//
    
    #include <Ultrasonic.h>     //Carrega a biblioteca Ultrasonic
    #include <LiquidCrystal.h>  //Carrega a biblioteca LCD
    
    //Definimos o pino do Arduino que utilizaremos para conectar ao pino TRIGGER do sensor HC-SR04
    #define PINO_TRIGGER 13 
    
    //Definimos o pino do Arduino que utilizaraemos para conectar ao pino ECHO do sensor HC-SR04
    #define PINO_ECHO 10 
    
    //Inicializamos nosso sensor ultrassonico HC-SR04 informando a ele
    //os pinos atribuidos para TRIGGER e ECHO respectivamente
    Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO); 
    
    //Definimos os pinos do nosso Arduino que utilizaremos para conectar ao display LCD
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 
    
    void setup()
    {
      Serial.begin(9600); //Inicializamos a serial com uma taxa de 9600 baud rate
      lcd.begin(16,2); //Inicializamos as duas linhas e as 16 "colunas" do display LCD
      lcd.clear();     //Limpamos o display LCD para garantir que não ficam "pixels" indevidamente ligados
    }
    
    void loop()
    {
      float cmMsec;
      //float 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);
    
    
    
      // INCLUSAO PARA APRESENTAR VALOR SEM CASAS DECIMAS EM CENTIMETROS e METROS
      //-------------------------------------------------------------------------
      // (CÓDIGO ORIGINAL CRIADO POR RODRIGO COSTA em 01/04/17).
      //-------------------------------------------------------------------------
      
      String cmMsecToMetersFinal = String(cmMsec/100); //transformamos nossa variavel "cmMsec" que está até aqui em "cm" para "metros"
      String cmMsecString = String(cmMsec, 0); //aqui pego a variavel que armazena os valores em centimetros e no segundo argumento ("0") serve para dizer que nao quero nenhuma casa decimal (ou seja, numero intero apenas). RCosta.
      String cmMsecStringFinal = cmMsecString + " cm"; // temos agora o valor numa STRING em CENTIMETROS
      String mMsecToMetersFinal = cmMsecToMetersFinal + " m"; // temos agora o valor numa STRING em METROS
    
      //--------------------------------------------------------------------------
    
      //Apresentamos os dados, em centimetros, no display LCD e no Monitor Serial
      lcd.setCursor(0,0);
      lcd.print("Dist.1: ");
      lcd.print("        ");
      lcd.setCursor(9,0);
      lcd.print(cmMsecStringFinal);
      //lcd.print("cm");
    
      Serial.print("Cent: ");
      Serial.print(cmMsecStringFinal);
    
      //Apresentamos os dados, em metros, no display LCD e no Monitor Serial
      lcd.setCursor(0,1);
      lcd.print("Dist.2: ");
      lcd.print("        ");
      lcd.setCursor(8,1);
      lcd.print(mMsecToMetersFinal);
    
      Serial.print(", Metros: ");
      Serial.println(mMsecToMetersFinal);
    
      delay(1000);
    }
    

    NÃO COMPILA exit status 1
    within this context

    1. Fala Pedro! Tudo Bom?!

      Rapaz, você não precisava ter copiado e colado o código aqui, pois isso complica a leitura, mas de qualquer forma, percebe-se que você não modificou nada no sketch que postou, então não é correto ficar te apresentando essa mensagem de ERRO (exit status 1). Pelo menos certeza que o código está correto temos, pois acabo de copiar e colar o código disponível no post para a IDE do Arduino e compilou sem qualquer problema para a placa Arduino UNO.

      Então reveja seu setup e as configurações tanto de PLACA quanto de PORTA da sua IDE Arduino.

      Outra coisa é: já tive vários problemas por conta de utilizar uma biblioteca para o sensor ultrassônico (Ultrasonic.h) diferente da versão desta que está disponível pra download no post. Recomendo fortemente que utilize a mesma versão da biblioteca.

      Espero que ajude!

      Um Abraço,
      Rodrigo Costa.
      https://EletronicaParaTodos.com

Esse espaço é Seu! Comenta Aí! ;-)