// Programa para usar el sensor ultrasónico HC-SR04 con Arduino
// Muestra la distancia en una pantalla LCD con I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Dirección típica de la pantalla I2C (puede variar: 0x27 o 0x3F)
// Si tu pantalla no muestra nada, cambia la dirección.
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pines del sensor
const int trigPin = 9; // Pin de disparo (envía el pulso ultrasónico)
const int echoPin = 10; // Pin de eco (recibe el rebote del pulso)
// Variables para medir tiempo y distancia
long duracion;
int distancia;
void setup() {
// Configuración de pines
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Inicializa la pantalla
lcd.init();
lcd.backlight(); // enciende la luz de fondo
// Mensaje inicial
lcd.setCursor(0, 0);
lcd.print("Sensor Ultrasonico");
lcd.setCursor(0, 1);
lcd.print("Iniciando...");
delay(2000);
lcd.clear();
}
void loop() {
// Aseguramos que el pin de disparo esté apagado
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Enviamos un pulso ultrasónico de 10 microsegundos
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Medimos el tiempo que tarda en regresar el eco
duracion = pulseIn(echoPin, HIGH);
// Calculamos la distancia (velocidad del sonido ≈ 343 m/s)
distancia = duracion * 0.034 / 2;
// Mostramos en la pantalla
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distancia:");
lcd.setCursor(0, 1);
lcd.print(distancia);
lcd.print(" cm");
delay(500); // Esperamos medio segundo antes de la siguiente medida
}