#include <DHT.h> //Cargamos la librería DHT
#define DHTTYPE DHT22 //Definimos el modelo DHT22
#define DHTPIN 13 //Definimos el pin 13 del ESP32
DHT dht(DHTPIN, DHTTYPE, 22); // Definos el objeto dht
//definicion de pines de conexión
#define Boton1 26 //Boton verde
#define Boton2 27 //Boton azul
#define LedH 14 //Led Verde
#define LedT 15 //Led Azul
float T,H; //variables donde se guardarán los datos del sensor
//variables para el antirebote de los botones
boolean estadoB1,estadoB2, estadoAnteriorB1, estadoAnteriorB2;
void setup()
{
pinMode(Boton1, INPUT); //configuración de pines
pinMode(Boton2, INPUT);
pinMode(LedH, OUTPUT);
pinMode(LedT, OUTPUT);
dht.begin(); //iniciar el sensor
Serial.begin(9600); //iniciar comunicación serial
}
void loop()
{
H = dht.readHumidity(); //capturar datos de humedad
T = dht.readTemperature(); //capturar datos de temperatura
Serial.print("Temperatura: "); //enviar por puerto serial los datos de t y h
Serial.print(T);
Serial.print("°C Humedad: ");
Serial.print(H);
Serial.println("%");
estadoB1=digitalRead(Boton1); //capturar el estado de cada boton
estadoB2=digitalRead(Boton2);
if (T>=45) //preguntar si la temperatura es menor o igual a 45°C
{
if(estadoB1!=estadoAnteriorB1) //preguntar si el estado del boton es diferente al estado anterior
{
digitalWrite(LedT,LOW); //apagar el led
estadoAnteriorB1=estadoB1; //reemplazar el estado por el estado anterior (antirrebote).
}
else
{
digitalWrite(LedT, HIGH); //si no se cumple quiere decir que no se a presionado el boton.
}
}
else
{
digitalWrite(LedT, LOW); //apagar el led ya que no se supera el umbral de 45°C
}
if (H<=25 || H>=60 ) //aplicar para validar si alguna de las dos condiciones se cumple
{
if(estadoB2!=estadoAnteriorB2) //el funcionamiento es idenctico al caso anterior.
{
digitalWrite(LedH,LOW);
estadoAnteriorB2=estadoB2;
}
else
{
digitalWrite(LedH, HIGH);
}
}
else
{
digitalWrite(LedH, LOW);
}
delay(1000); //espera un segundo para realizar una nueva lectura o ciclo.
}