#include <DHT.h>
#define DHTPIN 2 // Pin donde está conectado el sensor DHT22
#define DHTTYPE DHT22 // Tipo de sensor DHT22
#define UMBRAL_TEMPERATURA 45 // Umbral de temperatura para la alarma (45 grados Celsius)
#define UMBRAL_HUMEDAD_MIN 25 // Umbral de humedad minima para la alarma (25%)
#define UMBRAL_HUMEDAD_MAX 60 // Umbral de humedad máxima para la alarma (60%)
#define LEDPINTEMPERATURA 14 // Pin donde está conectado el LED de alerta de temperatura
#define LEDPINHUMEDAD 15 // Pin donde está conectado el LED de alerta de humedad
#define BOTON_TEMPERATURA 26 // Pin donde está conectado el botón de temperatura
#define BOTON_HUMEDAD 27 // Pin donde está conectado el botón de humedad
DHT dht(DHTPIN, DHTTYPE);
unsigned long anteriorMilisec = 0;
const long intervalo = 1000; // intervalo de 1 segundo
bool ledTemperaturaApagado = false; // Variable para controlar el estádo del LED de temperatura
bool ledHumedadApagado = false; // Variable para controlar el estádo del LED de humedad
float temperatura = 0; // Variable para almacenar la temperatura
float humedad = 0; // Variable para almacenar la humedad
void setup() {
pinMode(LEDPINTEMPERATURA, OUTPUT);
pinMode(LEDPINHUMEDAD, OUTPUT);
pinMode(BOTON_TEMPERATURA, INPUT_PULLUP);
pinMode(BOTON_HUMEDAD, INPUT_PULLUP);
dht.begin();
Serial.begin(9600);
}
void loop() {
unsigned long actualMilisec = millis();
// Verifica si ha pasado 1 segundo desde la ultima ejecucion
if (actualMilisec - anteriorMilisec >= intervalo) {
// Actualiza el tiempo de referencia
anteriorMilisec = actualMilisec;
temperatura = dht.readTemperature(); // Lee la temperatura
humedad = dht.readHumidity(); // Lee la humedad
//Serial.print("Temperatura: "); Serial.println(temperatura);
Serial.print("Temperatura: " + String(temperatura) + " Humedad: " + String(humedad) + "\n");
// Control del LED de temperatura
if (temperatura > UMBRAL_TEMPERATURA) {
if (!ledTemperaturaApagado) {
digitalWrite(LEDPINTEMPERATURA, HIGH); // Enciende el LED de alerta de temperatura
}
} else {
digitalWrite(LEDPINTEMPERATURA, LOW); // Apaga el LED de alerta de temperatura
ledTemperaturaApagado = true;
}
// Control del LED de humedad
if (humedad < UMBRAL_HUMEDAD_MIN || humedad > UMBRAL_HUMEDAD_MAX) {
if (!ledHumedadApagado) {
digitalWrite(LEDPINHUMEDAD, HIGH); // Enciende el LED de alerta de humedad
}
} else {
digitalWrite(LEDPINHUMEDAD, LOW); // Apaga el LED de alerta de humedad
ledHumedadApagado = true;
}
}
// Verifica si se presionó el botón de temperatura para apagar el LED de temperatura
if (digitalRead(BOTON_TEMPERATURA) == LOW) {
ledTemperaturaApagado = true;
digitalWrite(LEDPINTEMPERATURA, LOW);
} else {
if (temperatura <= UMBRAL_TEMPERATURA) {
ledTemperaturaApagado = false;
}
}
// Verifica si se presionó el botón de humedad para apagar el LED de humedad
if (digitalRead(BOTON_HUMEDAD) == LOW) {
ledHumedadApagado = true;
digitalWrite(LEDPINHUMEDAD, LOW);
} else {
if (humedad >= UMBRAL_HUMEDAD_MIN && humedad <= UMBRAL_HUMEDAD_MAX) {
ledHumedadApagado = false;
}
}
}