#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trig = 12;
int echo = 14;
int tiempo;
int distancia;
int estado;
int estado2;
int ledVerde = 2;
int ledAmarillo = 4;
int ledRojo = 5;
int ledAzul = 18;
int pulsador1encender = 27;
int pulsador2apagar = 26;
void setup() {
lcd.init();
lcd.backlight();
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledRojo, OUTPUT);
pinMode(ledAzul, OUTPUT);
pinMode(pulsador1encender, INPUT);
pinMode(pulsador2apagar, INPUT);
}
void loop() {
lcd.setCursor(0,0);
long distancia = leerDistancia();
lcd.setCursor(0, 0);
lcd.print("Distancia: ");
lcd.print(distancia);
lcd.print(" cm");
//led verde debe encender cuando la distancia sea menor a 50cm.
if (distancia < 50) {
digitalWrite(ledVerde, HIGH);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, LOW);
lcd.setCursor(0, 1);
lcd.print("Led verde on");
}
//led amarillo debe encender cuando la distancia este entre 50cm y 100cm.(condicional)
else if (distancia >= 50 && distancia <= 100) {
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, HIGH);
digitalWrite(ledRojo, LOW);
lcd.setCursor(0, 1);
lcd.print("Led amarillo on");
}
//led rojo encender cuando la distancia este por arriba de los 100cm.
else {
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, HIGH);
lcd.setCursor(0, 1);
lcd.print("Led rojo on");
}
//led azul controlado por los dos pulsadores, uno para encendido y otro para apagado.
//encender si la distancia es mayor a 100cm y apagarse si la distancia sea menor a 50cm.
if (distancia > 100 && digitalRead(pulsador1encender) == LOW) {
digitalWrite(ledAzul, HIGH);
}
else if (distancia < 50 && digitalRead(pulsador2apagar) == LOW) {
digitalWrite(ledAzul, LOW);
}
delay(200);
}
long leerDistancia() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
long duracion = pulseIn(echo, HIGH);
long distancia = duracion * 0.0344 / 2;
return distancia;
}
//led amarillo debe encender cuando la distancia este entre 50cm y 100cm.(condicional)
//led rojo encender cuando la distancia este por arriba de los 100cm.
//led azul controlado por los dos pulsadores, uno para encendido y otro para apagado.
//encender si la distancia es mayor a 100cm y apagarse si la distancia sea menor a 50cm.
//LCD se debe mostrar en todo momento la distancia y el led que este encendido.
// La distancia debe mostrarse en la fila 0 (Ej. “Distancia: 100”) y el led encendido
//en la fila 1 (Ej. “Led rojo on”). El led azul no se muestra en la pantalla.