.
Ejemplos Arduino y sensor ultrasónico HC-SR04
Indice.
- Todo a saber del sensor HC-SR04
- Mostrar datos del sensor ultrasonico por monitor serial
- Mostrar datos del sensor ultrasonico en pantalla lcd
1. Todo a saber del sensor HC-SR04
En muchos de nuestros proyectos, tenemos la necesidad de sensar nuestro entorno, saber si en frente hay un obstáculo y a que distancia se encuentra, el sensor HC-SR04 nos permite hacer eso.
En este tutorial, vamos a conocer de forma detallada las características del sensor HC-SR04, como calibrar el sensor, como conectarlo y como utilizarlo con Arduino.
El sensor HC-SR04 es un sensor de distancia de bajo costo, su uso es muy frecuente en la robótica, utiliza transductores de ultrasonido para detectar objetos.
Su funcionamiento consiste en emitir un sonido ultrasónico por uno de sus transductores, y esperar que el sonido rebote de algún objeto presente, el eco es captador por el segundo transductor. La distancia es proporcional al tiempo que demora en llegar el eco.
Para empezar a utilizar el sensor HC-SR04 solo necesitas una placa Arduino, en este tutorial utilizaremos un Arduino Uno R3, pero puedes utilizar cualquier placa de Arduino, el procedimiento es el mismo.
Empezamos insertando el sensor ultrasónico en un protoboard y con cables hacemos las siguientes conexiones:
– Trigger del sensor al pin 2 del arduino
– Echo del sensor al pin 3 del arduino
Todas las conexiones se realizan con el Arduino Apagado (desconectado de la PC o de cualquier fuente externa):
Partimos de la siguiente formula:

Donde Velocidad es la velocidad del sonido 340m/s, pero usaremos las unidades en cm/us pues trabajaremos en centímetros y microsegundos, tiempo es el tiempo que demora en llegar el ultrasonido al objeto y regresar al sensor, y la distancia recorrida es dos veces la distancia hacia el objeto, reemplazando en la formula tenemos:

Finalmente enviamos serialmente el valor de la distancia y terminamos poniendo una pausa de 100ms, que es superior a los 60ms recomendado por los datos técnicos del sensor
A continuación se muestra el código completo del programa.
2. Mostrar datos del sensor ultrasonico por monitor serial

const int Trigger = 2; // Pin digital 2 para el Trigger (disparador)
const int Echo = 3; // Pin digital 3 para el Echo (receptor)
void setup() {
Serial.begin(9600); // Inicia comunicación serial a 9600 baudios
pinMode(Trigger, OUTPUT); // Configura el Trigger como salida de pulso
pinMode(Echo, INPUT); // Configura el Echo como entrada de señal
digitalWrite(Trigger, LOW); // Inicializa el Trigger en 0V para limpieza
}
void loop() {
long t; // Tiempo que demora en llegar el eco (microsegundos)
long d; // Distancia calculada en centímetros
// Generación del pulso ultrasónico
digitalWrite(Trigger, HIGH); // Activa el pulso de salida
delayMicroseconds(10); // Mantiene el pulso por 10 microsegundos
digitalWrite(Trigger, LOW); // Corta el pulso de salida
// Medición y cálculo
t = pulseIn(Echo, HIGH); // Mide el tiempo que el pin Echo está en HIGH
d = t / 59; // Fórmula para convertir tiempo en cm
// Impresión de resultados en el Monitor Serie
Serial.print("Distancia: "); // Imprime el texto de referencia
Serial.print(d); // Imprime el número de la distancia
Serial.println(" cm"); // Imprime la unidad y salta de línea
delay(100); // Pausa de 100ms antes de la siguiente lectura
}
Conecte el Arduino Uno y cargue el programa.
Después de esto el Arduino y sensor ya deben estar trabajando, para poder visualizar los datos vaya a herramientas y habrá el monitor serial

En el monitor serial le aparecerán los valores de la distancia que sensa el HC-SR04, ponga un objeto al frente y varíe su distancia respecto al sensor y verifique que la distancia mostrada en el monitor serial sea la correcta.

3. Mostrar datos del sensor ultrasonico en pantalla lcd.

#include <Wire.h> // Librería para comunicación I2C
#include <LiquidCrystal_I2C.h> // Librería para el LCD I2C
// Configuración LCD: Dirección 0x27 (común), 16 columnas y 2 filas
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int Trigger = 2; // Pin digital 2 para el Trigger
const int Echo = 3; // Pin digital 3 para el Echo
void setup() {
Serial.begin(9600); // Inicia monitor serial
// Configuración del LCD
lcd.init(); // Inicializa la pantalla
lcd.backlight(); // Enciende la luz de fondo
lcd.setCursor(0, 0); // Se ubica en columna 0, fila 0
lcd.print("Iniciando...");
pinMode(Trigger, OUTPUT);
pinMode(Echo, INPUT);
digitalWrite(Trigger, LOW);
delay(1000); // Pausa para estabilizar
lcd.clear(); // Limpia el mensaje inicial
}
void loop() {
long t; // Tiempo
long d; // Distancia en cm
// Pulso del sensor
digitalWrite(Trigger, HIGH);
delayMicroseconds(10);
digitalWrite(Trigger, LOW);
t = pulseIn(Echo, HIGH);
d = t / 59;
// --- Mostrar en LCD ---
lcd.setCursor(0, 0); // Primera fila
lcd.print("Distancia: "); // Espacios para limpiar restos de números previos
lcd.setCursor(0, 1); // Segunda fila
lcd.print(d); // Imprime el valor
lcd.print(" cm "); // Imprime unidad y limpia sobrantes
// --- Mostrar en Monitor Serial ---
Serial.print("Distancia: ");
Serial.print(d);
Serial.println(" cm");
delay(200); // Pausa ligeramente mayor para que el LCD no parpadee tanto
}
Detalles importantes para que funcione:
- Librería: Si no tienes la librería instalada, ve a Programa -> Incluir Librería -> Administrar Bibliotecas y busca «LiquidCrystal I2C». Instala la de Frank de Brabander.
- Dirección I2C: La mayoría de módulos usan la dirección
0x27, pero algunos usan0x3F. Si no enciende nada, prueba cambiando0x27por0x3Fen el código. - Contraste: Si la pantalla enciende pero no ves las letras, ajusta el potenciómetro azul que está detrás del módulo I2C del LCD.