
Vídeo
Esquema do circuito

Código-fonte
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// HC-SR04 Distance Measurement (Serial Display)
4// ─────────────────────────────────────────
5// Measures distance with the HC-SR04 ultrasonic sensor and prints results
6// between 3 and 100 cm to the Serial Monitor in cm every 0.5 s.
7//
8// Pins:
9// D7 -> HC-SR04 Trig
10// D6 -> HC-SR04 Echo
11// HC-SR04 VCC to 5V, GND to GND
12
13int echoPin = 6; // Echo input
14int trigPin = 7; // Trigger output
15int maxDistance = 100; // Largest distance shown (cm)
16int minDistance = 3; // Smallest distance shown (cm)
17
18void setup() {
19 pinMode(trigPin, OUTPUT);
20 pinMode(echoPin, INPUT);
21 Serial.begin(9600);
22}
23
24void loop() {
25 // A 10 us trigger pulse sends the sound burst
26 digitalWrite(trigPin, HIGH);
27 delayMicroseconds(10);
28 digitalWrite(trigPin, LOW);
29
30 // How long Echo stays HIGH (us) is the round-trip time. Sound travels at 0.034 cm/us; halving the
31 // path gives the distance
32 unsigned long duration = pulseIn(echoPin, HIGH);
33 double totalPath = (double)duration * 0.034;
34 int distance = totalPath / 2;
35
36 // Print only inside the valid range
37 if (distance > minDistance && distance < maxDistance) {
38 Serial.print("Distance: ");
39 Serial.print(distance);
40 Serial.println("cm");
41 }
42
43 delay(500); // Wait 0.5 s
44}
45
Perguntas frequentes
Como o HC-SR04 mede a distância?▾
O sensor emite uma onda sonora de 40 kHz e mede o tempo que o eco leva para voltar. O som viaja pelo ar a aproximadamente 343 m/s; a distância em centímetros é calculada pela fórmula: distância = tempo × 0,0343 / 2 (a divisão por 2 considera a ida e a volta).
Quais são as distâncias mínima e máxima que ele consegue medir?▾
Na prática, ele mede distâncias de aproximadamente 2 cm a 400 cm. As medições podem estar incorretas ou indicar 0 em distâncias menores que 2 cm, muito grandes ou em superfícies que absorvem som, como tecido ou espuma.
Às vezes, as leituras são 0 ou valores muito altos. Por quê?▾
Se nenhum eco retornar, `pulseIn` atingirá o tempo limite. Verifique se o sensor está voltado para uma superfície plana e rígida, espere pelo menos 60 ms entre as medições e filtre as leituras incorretas no código.
Posso usá-lo com o ESP32?▾
O HC-SR04 funciona com 5 V, e seu pino ECHO fornece uma saída de 5 V. Como o ESP32 usa lógica de 3,3 V, você deve colocar um divisor de tensão (por exemplo, 1 kΩ + 2 kΩ) na linha ECHO ou usar o modelo HC-SR04P, compatível com 3,3 V.
