Hoje apresento o circuito de um medidor de distância com sensor ultrassônico HC-SR04, o display LCD 16×2 Winstar WH1602A e claro, uma placa Arduino.

O sensor ultrassônico HC-SR04 pode ser usado para medir distâncias de até 4m com precisão de 3mm (dados do datasheet do produto) e identificar a presença de objetos ou captar movimentos.
Isso nos permite criar alarmes, sensores de presença, sistemas de escuta e sensores de estacionamento. Também é um ótimo sensor para utilização em projetos de robótica e aplicações industriais.
Resumindo o funcionamento do sensor ultrassônico: é enviado um sinal ultrassônico pelo módulo, o mesmo detecta o retorno deste sinal (eco), e com base no tempo entre esses dois eventos, gera um sinal que permite medir a distância até o objeto.
Circuito medidor de distância com sensor ultrassônico
O circuito é praticamente idêntico ao que usei nos outros projetos usando o WH1602A. A diferença é que no pino 15 (backlight, ou luz de fundo) eu coloquei uma pequena resistência para limitar a corrente.
O sensor ultrassônico HC-SR04 será conectado nas portas digitais 11 e 13. O potenciômetro é de 10 K ohms e serve para regular o contraste do display. Podem ser usados outros valores de potenciômetro ou até mesmo uma resistência para essa regulagem, ok?
O programa usa a biblioteca Ultrasonic, que você pode baixar neste link. O programa faz a leitura dos dados do sensor, calcula a distancia em centímetros e polegadas, e apresenta os dados no LCD 16×2.
Se você não tem um display LCD 16×2, não tem problema: os dados do medidor de distância são enviados para o serial monitor.
//Programa : Medidor de distancia com HC-SR04
//Autor : Arduino e Cia
#include <Ultrasonic.h> //Carrega a biblioteca Ultrasonic
#include <LiquidCrystal.h> //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);
//Define os pinos que serão ligados ao LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
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);
}
Abaixo você confere o vídeo do circuito em funcionamento:
Recomendo também a leitura do artigo Controle de vagas de estacionamento com o sensor HC-SR04, onde utilizo a biblioteca NewPing para controlar vários sensores ultrassônicos ao mesmo tempo.
Se você gostou deste post do medidor de distância com sensor ultrassônico HC-SR04, confira outros posts utilizando sensor ultrassônico, aqui mesmo no Arduino e Cia!