#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define pinTrigger 6
#define pinEcho 7
#define ledRojo 2
#define ledAmarillo 3
#define ledVerde 4
#define ledAzul 5
long distancia, duracion;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(ledRojo, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledAzul, OUTPUT);
pinMode(pinTrigger, OUTPUT);
pinMode(pinEcho, INPUT);
lcd.print("Medidor U.S");
lcd.setCursor(0, 1); // posiciona cursor en la segunda fila
lcd.print("Cargando");
delay(5000);
lcd.clear(); // Borramos la pantalla
}
void loop() {
digitalWrite(pinTrigger, LOW);
delayMicroseconds(2);
digitalWrite(pinTrigger, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrigger, LOW);
duracion = pulseIn(pinEcho, HIGH);
distancia = (duracion / 2) / 29;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("dist.");
lcd.print(distancia);
if (distancia < 30) {
digitalWrite(ledRojo, HIGH);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, LOW);
digitalWrite(ledAzul, LOW);
// Enciende el ledRojo
lcd.setCursor(0, 1);
lcd.print("Posible choque");
} else if (distancia >= 30 && distancia <= 70) {
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, HIGH);
digitalWrite(ledVerde, LOW);
digitalWrite(ledAzul, LOW); // Enciende el ledAmarillo
lcd.setCursor(0, 1);
lcd.print("Alejate");
} else if (distancia > 70) {
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, HIGH);
digitalWrite(ledAzul, LOW); // Enciende el ledVerde
lcd.setCursor(0, 1);
lcd.print("Distancia segura");
} else {
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, LOW);
digitalWrite(ledAzul, HIGH);
lcd.setCursor(0, 1);
lcd.print("Fuera del rango");
}
delay(1000); // Pausa para una mejor lectura
}