Código Arduino e vídeo para o sensor ultrassônico de distância HC-SR04
Neste tutorial, vamos explorar como usar o sensor de distância ultrassônico HC-SR04 com um Arduino. O HC-SR04 é uma maneira econômica e eficaz de medir distâncias usando ondas ultrassônicas. Ao enviar um sinal e medir o tempo que o eco leva para retornar, podemos calcular com precisão a distância até um objeto.

Este projeto envolve configurar o sensor com um Arduino e escrever um programa simples para ler e exibir as medidas de distância. O programa utilizará a biblioteca NewPing para simplificar a comunicação com o sensor. Se quiser uma referência visual ou esclarecimentos adicionais sobre qualquer etapa, não deixe de conferir o vídeo (no vídeo em 00:00).
Hardware explicado
O sensor ultrassônico HC-SR04 consiste em dois componentes principais: um transmissor e um receptor. O transmissor emite pulsos ultrassônicos em uma frequência acima da faixa audível humana, enquanto o receptor escuta o eco desses pulsos depois que eles se refletem em um objeto. Ao calcular o tempo entre o envio do pulso e o recebimento do eco, podemos determinar a distância até o objeto.
O sensor possui dois pinos essenciais: o pino de disparo e o pino de eco. O pino de disparo é usado para iniciar a medição enviando um pulso curto em nível alto, enquanto o pino de eco recebe o sinal refletido e mede o tempo que leva para o eco retornar.
Detalhes da ficha técnica
| Fabricante | HC-SR04 |
|---|---|
| Número da peça | HC-SR04 |
| Tensão lógica/E/S | 5 V |
| Tensão de alimentação | 5 V |
| Corrente de saída (por canal) | 15 mA |
| Corrente de pico (por canal) | 20 mA |
| Orientação sobre a frequência PWM | Não aplicável |
| Limiares lógicos de entrada | 0.3 V (baixo), 0.7 V (alto) |
| Queda de tensão / RDS(on) / saturação | Não aplicável |
| Limites térmicos | 0°C a 70°C |
| Pacote | Módulo |
| Notas / variantes | Alcance máximo 400 cm |
- Garanta uma fonte de alimentação adequada (5 V).
- Mantenha o sensor limpo para leituras precisas.
- Use o pino de disparo para iniciar as medições.
- Não exceda a distância máxima para resultados confiáveis.
- Mantenha um caminho desobstruído para que as ondas ultrassônicas possam ser refletidas de volta.
- Use capacitores de desacoplamento próximos aos pinos de alimentação.
- Tenha cuidado com o ruído ambiente que pode interferir nas leituras.
- Teste diferentes distâncias para se familiarizar com o sensor.
Instruções de fiação


Para ligar o sensor ultrassônico HC-SR04 ao seu Arduino, siga estes passos:
- Conecte o
VCCpino do HC-SR04 para o pino 5V do Arduino. - Conecte o
GNDpino do HC-SR04 para um pino de terra no Arduino. - Conecte o
TRIGpino do HC-SR04 (que normalmente é azul) ao pino digital 12 no Arduino. - Conecte o
ECHOpino do HC-SR04 (que geralmente é verde) ao pino digital 11 no Arduino.
Certifique-se de que as conexões estejam seguras para evitar quaisquer leituras intermitentes. Se estiver usando uma configuração diferente ou tiver fiação alternativa, consulte o vídeo para orientação adicional (no vídeo em 00:00).
Exemplos de Código e Guia Passo a Passo
O código a seguir inicializa a biblioteca NewPing e configura os pinos para o sensor HC-SR04. Os principais componentes incluem definir os pinos de trigger e echo, bem como a distância máxima.
#define TRIGGER_PIN 12 // Trigger pin
#define ECHO_PIN 11 // Echo pin
#define MAX_DISTANCE 200 // Max distance in cm
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Set up NewPingNeste excerto, oTRIGGER_PINeECHO_PINestão configurados para os pinos digitais 12 e 11, respectivamente. OMAX_DISTANCEé definido como 200 cm, que é a distância máxima que você está interessado em medir.
A seguir, temos a função setup, onde o monitor serial é inicializado para exibir os resultados:
void setup() {
Serial.begin(115200); // Initialize serial monitor
}Este código abre a comunicação serial a uma taxa de 115200 baud, permitindo-nos ver as medições de distância no monitor serial.
Finalmente, a função loop mede a distância e verifica se é menor ou igual a 12 cm:
void loop() {
delay(50); // Wait between pings
int distance = sonar.ping_cm(); // Measure distance
if(distance <=12){ // Check distance
Serial.println("Very close"); // Print if very close
}
}Noloop(), introduzimos um atraso de 50 milissegundos para controlar a frequência das medições. A distância é medida e, se for menor ou igual a 12 cm, é impresso "Muito perto" no monitor serial.
Para o código completo, por favor consulte a seção de carregamento abaixo do artigo.
Demonstração / O que esperar
Quando você executar o programa, o Arduino medirá continuamente a distância até o objeto mais próximo. Ele deve imprimir a distância em centímetros e notificá-lo com "Muito perto" quando um objeto for detectado dentro de 12 cm. Se o objeto estiver muito próximo, você pode obter leituras imprecisas ou nenhuma leitura, como mostrado no vídeo (no vídeo, aos 10:00).
Certifique-se de que o sensor está posicionado corretamente e de que não há obstáculos bloqueando as ondas ultrassônicas. Se tudo estiver configurado corretamente, você deverá ver medições consistentes exibidas no monitor serial.
Marcas de tempo do vídeo
- 00:00- Introdução ao HC-SR04
- 01:30- Ligação do sensor
- 03:00- Visão geral do código
- 05:00- Executando o programa
- 07:30- Medindo distâncias
/*
* This is the Arduino code for the HC-SR04 Ultrasonic Distance Sensor
* to measure the distance using Arduino for a robotic car and other applications
* Watch the video https://youtu.be/QI9541YQq7M
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: December 21, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
/* Original Code
// https://playground.arduino.cc/Code/NewPing
* Modified for Robojax video on December 21, 2017
*/
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}
void loop() {
delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
int distance = sonar.ping_cm();// store the distance value in "distance" variable
if(distance <=12){ // if distance is less than 12, do something. For example, here just print "very close"
Serial.println("Very close");
}
}
Coisas que você pode precisar
-
eBay
-
BanggoodCompre o Sensor Ultrassônico HC-SR04 na Banggood.banggood.com
Recursos e referências
-
ExternoBiblioteca Ultrassônica HC-SR04 do site oficial da Arduinoplayground.arduino.cc
Arquivos📁
Nenhum arquivo disponível.