// Incluimos las librerias
#include "DHTesp.h"
// Declaramos las constantes para los LEDs
#define LED1 5 // Pin para el primer LED (Rojo)
#define LED2 2 // Pin para el segundo LED (Verde)
// Declaramos el pin para el sensor DHT22
int pinDHT = 15;
// Instanciamos el sensor DHT
DHTesp dht;
void setup() {
Serial.begin(115200);
// Inicializamos el sensor DHT
dht.setup(pinDHT, DHTesp::DHT22);
// Configuramos los pines de los LEDs como salidas
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
}
void loop() {
// Obtenemos los datos de temperatura y humedad
TempAndHumidity data = dht.getTempAndHumidity();
// Verificamos si se pudo leer correctamente la temperatura
if (isnan(data.temperature) || isnan(data.humidity)) {
Serial.println("Error obteniendo la temperatura o humedad!");
} else {
// Mostramos los datos de la temperatura y humedad
Serial.print("Temperatura: ");
Serial.print(data.temperature, 2);
Serial.println(" °C");
Serial.print("Humedad: ");
Serial.print(data.humidity, 1);
Serial.println(" %");
Serial.println("---");
// Control de LEDs según las condiciones de temperatura y humedad
if (data.temperature > 80.0 && data.humidity > 90.0) {
// Parpadeo de ambos LEDs si la temperatura es > 80°C y humedad > 90%
blinkLEDs();
} else if (data.temperature > 40.0) {
// Encender LED rojo si la temperatura es > 40°C
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW); // Aseguramos que el LED verde esté apagado
} else {
digitalWrite(LED1, LOW);
}
if (data.humidity < 20.0) {
// Encender LED verde si la humedad es < 20%
digitalWrite(LED2, HIGH);
digitalWrite(LED1, LOW); // Aseguramos que el LED rojo esté apagado
} else {
digitalWrite(LED2, LOW);
}
}
delay(1000); // Esperamos un segundo antes de la próxima lectura
}
// Función para hacer parpadear ambos LEDs
void blinkLEDs() {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
delay(500);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
delay(500);
}