#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 4 // Pin digital donde está conectado el sensor DHT22
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define RED_LED_PIN 12 // Pin donde está conectado el LED rojo
#define GREEN_LED_PIN 14 // Pin donde está conectado el LED verde
#define YELLOW_LED_PIN 27 // Pin donde está conectado el LED amarillo
// Inicializar el sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Inicializar el display LCD I2C (dirección I2C 0x27)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
dht.begin();
// Configurar los pines de los LEDs como salida
pinMode(RED_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
// Apagar todos los LEDs al inicio
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
// Inicializar el display LCD I2C
lcd.begin(16, 2);
lcd.init();
lcd.backlight();
lcd.print("Iniciando...");
delay(2000); // Esperar 2 segundos
lcd.clear(); // Limpiar la pantalla del LCD
}
void loop() {
// Esperar entre lecturas del sensor
delay(2000);
// Leer la humedad y la temperatura
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Verificar si la lectura del sensor es válida
if (isnan(humidity) || isnan(temperature)) {
Serial.println(F("Error al leer del sensor DHT!"));
lcd.clear();
lcd.print("Error de Sensor!");
return;
}
// Mostrar los valores leídos en el monitor serial
Serial.print(F("Humedad: "));
Serial.print(humidity);
Serial.print(F("% Temperatura: "));
Serial.print(temperature);
Serial.println(F("°C"));
// Mostrar los valores en el LCD
lcd.clear();
lcd.setCursor(0, 0); // Posicionar en la primera línea
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1); // Posicionar en la segunda línea
lcd.print("Hum: ");
lcd.print(humidity);
lcd.print(" %");
// Controlar los LEDs según las condiciones
if (temperature > 30) {
digitalWrite(RED_LED_PIN, HIGH); // Encender LED rojo
digitalWrite(GREEN_LED_PIN, LOW); // Apagar LED verde
} else {
digitalWrite(RED_LED_PIN, LOW); // Apagar LED rojo
digitalWrite(GREEN_LED_PIN, HIGH);// Encender LED verde
}
if (humidity > 80) {
digitalWrite(YELLOW_LED_PIN, HIGH); // Encender LED amarillo
} else {
digitalWrite(YELLOW_LED_PIN, LOW); // Apagar LED amarillo
}
}