Sensor de distancia HC-SR04: medir distancias por ultrasonidos con Arduino
¿Cómo funciona el sensor ultrasónico HC-SR04 y cómo se conecta a Arduino? Pines TRIG y ECHO, la fórmula de la distancia, conexión con ESP32 y Pico y consejos para medir con más precisión.
El HC-SR04 es un sensor barato y muy común que mide la distancia a un objeto mediante sonido. Funciona como los murciélagos para orientarse: emite un sonido de alta frecuencia que no oímos y mide cuánto tarda en volver el eco. Es la base de los sensores de aparcamiento, los robots que esquivan obstáculos, los medidores de nivel de depósitos y los medidores de altura.

¿Cómo funciona el HC-SR04?
- El Arduino envía un pulso de 10 microsegundos al pin TRIG.
- El sensor emite 8 pulsos de sonido a 40 kHz.
- El sonido rebota en el objeto y vuelve; mientras tanto el pin ECHO permanece en HIGH.
- El Arduino mide cuánto tiempo está ECHO en HIGH y calcula la distancia.
El sonido viaja por el aire a unos 343 m/s, así que recorre un centímetro en unos 29 microsegundos. El tiempo medido incluye la ida y la vuelta, por lo que se divide entre dos: distancia (cm) = tiempo (µs) × 0,0343 / 2, o simplemente tiempo / 58.
Características técnicas
| Característica | Valor |
|---|---|
| Alimentación | 5 V, unos 15 mA |
| Rango de medida | 2–400 cm |
| Resolución | Unos 3 mm |
| Ángulo de medida | Unos 15° |
| Pines | VCC, TRIG, ECHO, GND |
Medir distancias con Arduino
Conecta VCC a 5V, GND a GND, TRIG al pin 9 y ECHO al pin 10. El código de abajo muestra la distancia en el monitor serie e indica aparte cuando no hay objeto o está demasiado lejos.
const int TRIG_PIN = 9; // tetik / trigger
const int ECHO_PIN = 10; // yankı / echo
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH); // 10 µs darbe / 10 µs pulse
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000); // en fazla 30 ms bekle / wait max 30 ms
if (duration == 0) {
Serial.println("Menzil dışı / out of range");
} else {
float cm = duration * 0.0343 / 2; // gidiş-dönüş / round trip
Serial.print(cm);
Serial.println(" cm");
}
delay(100); // ölçümler arası / between readings
}Uso con ESP32 y Raspberry Pi Pico
Consejos para medir con precisión
- Superficies blandas e inclinadas: la tela, la espuma y las superficies en ángulo no reflejan bien el sonido; pueden perderse lecturas.
- Haz la media: usar la mediana de 3–5 lecturas elimina los saltos repentinos.
- Efecto de la temperatura: la velocidad del sonido cambia unos 0,6 m/s por cada 1 °C; para trabajos precisos, corrígela con un sensor de temperatura.
- Varios sensores: los sensores que se disparan a la vez oyen los ecos de los otros; dispáralos uno tras otro.
- Intervalo entre medidas: deja al menos 60 ms entre lecturas para que se apague el eco anterior.
Para combinar el sensor con un zumbador y hacer un sensor de aparcamiento, lee ¿Qué es un zumbador?, y para conocer otros sensores, la Guía de sensores para Arduino.
Preguntas frecuentes
¿Hasta qué distancia mide el HC-SR04?
En teoría hasta 4 metros. En la práctica se obtienen resultados fiables hasta 2–3 metros sobre una superficie plana y dura.
¿Por qué mi HC-SR04 marca siempre 0 o un valor enorme?
Puede que TRIG y ECHO estén intercambiados, que el objeto esté fuera de rango o que el sensor apunte a una superficie que no refleja el sonido. Revisa el cableado y usa un tiempo límite en pulseIn.
¿Puede el HC-SR04 medir el nivel del agua?
Sí, montado en la tapa del depósito mirando hacia abajo mide la distancia a la superficie del agua. En ambientes húmedos necesita protección; el JSN-SR04T, resistente al agua, es mejor opción.
¿Qué otros sensores de distancia hay para Arduino?
Para distancias cortas y detección de líneas se usa el TCRT5000 infrarrojo, y para precisión milimétrica el láser VL53L0X. El HC-SR04 es el más común por su equilibrio entre precio y alcance.
Proyectos para hacer después de leer esto
Ver todos los proyectos
HC-SR04 Medición de distancia (pantalla en serie)
Sensor ultrasónico HC-SR04 para medir distancias y mostrar el resultado en cm en el monitor serie. Enseña el principio del cálculo de distancias con ondas sonoras.

Sensor de aparcamiento con HC-SR04
Proyecto de sensor de aparcamiento con sensor HC-SR04 que aumenta la frecuencia del pitido del zumbador a medida que se acerca el objeto y avisa con un LED. Enseña lógica de retroalimentación proporci

Medición de distancias mediante pantalla LCD
El proyecto que muestra el valor leído del sensor de distancia HC-SR04 en cm en tiempo real en la pantalla LCD 2x16. Combina los datos del sensor y la pantalla LCD.

Proyecto de medición de la altura
El proyecto realiza la medición de altura mediante calibración con sensor HC-SR04 y pantalla LCD I2C. Ofrece una aplicación práctica gestionando los pasos de calibración y medición con dos botones.

Robot para evitar obstáculos
¿Qué le parece construir un vehículo inteligente que encuentre su propio camino? El Robot Evitador de Obstáculos explora constantemente su entorno gracias al sensor ultrasónico que lleva delante. Cuan

ESP32 HC-SR04 Medidor de distancia por ultrasonidos
El sensor ultrasónico HC-SR04 calcula la distancia midiendo el tiempo de vuelo (Time of Flight) de la onda sonora que emite al chocar contra un objeto y rebotar. En este proyecto, enviaremos un pulso de 10 microsegundos al pin TRIG del ESP32 y leeremos el tiempo de eco procedente del pin ECHO mediante `pulseIn()`. Imprimiremos la distancia calculada en centímetros en el monitor serie. Dado que el HC-SR04 funciona a 5 V, es obligatorio utilizar un **divisor de tensión** en el pin ECHO; de lo cont

Contador de rak'ahs para la oración con ESP32 (HC-SR04 + OLED SSD1306 + 2 botones)
¿A veces te olvidas de en qué raka'at estás mientras rezas? Este proyecto consiste en crear un contador de raka'ats que se coloca junto al tapete de oración y que cuenta las prosternaciones cuando acercas la mano. El sensor de distancia ultrasónico HC-SR04 detecta la proximidad de la mano, la pantalla OLED SSD1306 muestra el número de rakats y, mediante dos botones, puedes seleccionar 2, 3 o 4 rakats y poner el contador a cero. Cuenta con una máquina de estados inteligente que evita activaciones

Sensor de aparcamiento ESP32 (HC-SR04 + barra de 5 LED + zumbador + OLED)
¡La versión ESP32 del sensor de aparcamiento para coches! Medimos la distancia al objeto que hay delante mediante el sensor ultrasónico HC-SR04. A medida que la distancia disminuye, la barra de 5 LED se va llenando (verde → amarillo → rojo) y la frecuencia de los pitidos del zumbador se acorta. Cuando se acerca demasiado (menos de 10 cm), suena una alarma continua y se encienden todos los LED. En la pantalla OLED SSD1306 se muestra, en letra grande, el valor actual en centímetros, un mensaje de
Más artículos
Aprende cómo el HC-SR04 mide distancias con sonido, cómo conectarlo a Arduino, la fórmula de la distancia y cómo estabilizar las lecturas.

