#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definir la dirección de la pantalla LCD (suele ser 0x27 o 0x3F para I2C)
LiquidCrystal_I2C lcd(0x27, 20, 4);
// LEDs
const int ledTemp = 2;
const int ledHum = 4;
const int ledDist = 5;
// Variables para almacenar datos simulados
float temperatura;
float humedad;
float distancia;
void setup() {
Serial.begin(115200); // Iniciar comunicación serial
lcd.init(); // Iniciar la pantalla LCD
lcd.backlight();
// Configurar pines
pinMode(ledTemp, OUTPUT);
pinMode(ledHum, OUTPUT);
pinMode(ledDist, OUTPUT);
// Encender LEDS
digitalWrite(ledTemp, HIGH);
digitalWrite(ledHum, HIGH);
digitalWrite(ledDist, HIGH);
delay(500);
digitalWrite(ledTemp, LOW);
digitalWrite(ledHum, LOW);
digitalWrite(ledDist, LOW);
}
void loop() {
// Generar la trama en formato: <T:temp,H:hum,D:dist>
String trama = "Temperatura-" + String(temperatura, 1) + "-Humedad-" + String(humedad, 1) + "-Distancia-" + String(distancia, 1) + "-";
// Enviar trama al monitor serial
Serial.println(trama);
// Mostrar datos en la pantalla LCD
lcd.clear();
lcd.setCursor(0, 0); lcd.print("Temperatura: " + String(temperatura, 1) + " C");
lcd.setCursor(0, 1); lcd.print("Humedad: " + String(humedad, 1) + " %");
lcd.setCursor(0, 2); lcd.print("Distancia: " + String(distancia, 1) + " cm");
lcd.setCursor(0, 3); lcd.print(trama);
// Reflejar los valores en LEDs
digitalWrite(ledTemp, temperatura > 38 ? HIGH : LOW);
digitalWrite(ledHum, humedad > 85 ? HIGH : LOW);
digitalWrite(ledDist, distancia > 60 ? HIGH : LOW);
delay(2000); // Espera de 2 segundos antes de actualizar nuevamente
}