#include <Arduino.h>
#include "DHT.h"
// ===== CONFIGURACIÓN DE PINES =====
#define DHTPIN D7 // Pin de datos del DHT22
#define DHTTYPE DHT22 // Tipo de sensor
#define BUTTON_TEMP D2 // Botón para apagar LED de temperatura
#define BUTTON_HUM D3 // Botón para apagar LED de humedad
#define LED_TEMP D4 // LED de alerta de temperatura
#define LED_HUM D5 // LED de alerta de humedad
// ===== UMBRALES =====
#define TEMP_THRESHOLD 28.0 // Temperatura máxima permitida (°C)
#define HUM_LOW 25.0
#define HUM_HIGH 60.0
// ===== OBJETO DEL SENSOR =====
DHT dht(DHTPIN, DHTTYPE);
// ===== VARIABLES =====
bool tempAlert = false;
bool humAlert = false;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(LED_TEMP, OUTPUT);
pinMode(LED_HUM, OUTPUT);
pinMode(BUTTON_TEMP, INPUT_PULLUP); // Botones con resistencia interna
pinMode(BUTTON_HUM, INPUT_PULLUP);
digitalWrite(LED_TEMP, LOW);
digitalWrite(LED_HUM, LOW);
Serial.println("Sistema de alarma con DHT22 iniciado...");
Serial.print("Umbral de humedad: ");
Serial.print(HUM_LOW);
Serial.print(" - ");
Serial.println(HUM_HIGH);
}
void loop() {
// ===== Lectura del sensor =====
float h = dht.readHumidity();
float t = dht.readTemperature();
// Verifica si las lecturas son válidas
if (isnan(h) || isnan(t)) {
Serial.println("Error al leer el sensor DHT22!");
delay(1000);
return;
}
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" °C | Humedad: ");
Serial.print(h);
Serial.println(" %");
// ===== Verificación de umbrales =====
if (t >= TEMP_THRESHOLD) {
tempAlert = true;
}else{
tempAlert = false;
}
if (h < HUM_LOW || h >= HUM_HIGH) {
humAlert = true;
}else{
humAlert = false;
}
// ===== Encendido de LEDs =====
digitalWrite(LED_TEMP, tempAlert ? HIGH : LOW);
digitalWrite(LED_HUM, humAlert ? HIGH : LOW);
// Espera 1 segundo antes de la siguiente lectura
delay(1000);
}