
Video
Diagrama del circuito

Código fuente
1int echoPin = 6;
2int trigPin = 7;
3int maxDistance = 100;
4int minDistance = 3;
5
6void setup() {
7 pinMode(trigPin, OUTPUT);
8 pinMode(echoPin, INPUT);
9 Serial.begin(9600);
10}
11
12void loop() {
13 digitalWrite(trigPin, HIGH);
14 delayMicroseconds(10);
15 digitalWrite(trigPin, LOW);
16
17 unsigned long duration = pulseIn(echoPin, HIGH);
18 double totalPath = (double)duration * 0.034;
19 int distance = totalPath / 2;
20
21 if (distance > minDistance && distance < maxDistance) {
22 Serial.print("Distance: ");
23 Serial.print(distance);
24 Serial.println("cm");
25 }
26
27 delay(500);
28}Preguntas frecuentes
¿Cómo mide la distancia el HC-SR04?▾
El sensor emite una onda sonora de 40 kHz y mide el tiempo de retorno del eco. El sonido se propaga por el aire a una velocidad aproximada de 343 m/s; la distancia se convierte a centímetros mediante la fórmula: distancia = tiempo × 0,0343 / 2 (la división por 2 corresponde al tiempo de ida y vuelta).
¿Cuál es la distancia más corta y la más larga que puede medir?▾
En la práctica, mide distancias de entre 2 cm y 400 cm aproximadamente. A distancias inferiores a 2 cm, así como a distancias muy grandes o en superficies que absorben el sonido (tela, espuma), la medición puede ser errónea o dar un resultado de 0.
A veces se leen valores de 0 o muy grandes, ¿por qué?▾
Si no se recibe el eco, pulseIn entra en tiempo de espera. Asegúrate de que el sensor apunte hacia una superficie plana y dura, espera al menos 60 ms entre mediciones y filtra las lecturas erróneas en el código.
¿Puedo utilizarlo con el ESP32?▾
El HC-SR04 funciona a 5 V y el pin ECHO proporciona una salida de 5 V. Dado que el ESP32 funciona con lógica de 3,3 V, debes colocar un divisor de tensión (por ejemplo, 1 kΩ + 2 kΩ) en la línea ECHO o utilizar el modelo HC-SR04P, compatible con 3,3 V.
