#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define ECHO_PIN 2
#define TRIG_PIN 3
int ledRojo = 8;
int ledAmarillo = 9;
int ledVerde = 10;
void setup() {
pinMode(ledRojo, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledVerde, OUTPUT);
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop() {
float distance = readDistanceCM();
bool muyCerca = distance < 100;
bool cerca = distance > 100 && distance < 200;
bool lejos = distance > 200 && distance < 300 || distance > 300;
if (muyCerca) {
digitalWrite(ledRojo, HIGH);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, LOW);
} else if (cerca) {
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, HIGH);
digitalWrite(ledVerde, LOW);
} else if (lejos) {
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, HIGH);
}
lcd.setCursor(2, 0);
lcd.print("DISTANCIA:");
lcd.setCursor(1, 1);
lcd.print(readDistanceCM());
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}