//***********************************
//********** ACTIVIDAD 1 ************
//********JOSE A. BUCHELI C.*********
//*********27 DE ABRIL DEL 2024******
//***********************************

// Libreria DHT22
#include <DHT.h>
  // definimos los pines que vamos a utilizar del sensor DHT22
 #define DHTPIN 2
 #define DHTTYPE DHT22
 DHT dht (DHTPIN, DHTTYPE);
  // Definimos las variables para la humedad y temperatura
 float humedad;
 float celsius;

  // Definimos variables para utilizar en los pulsadores
 int Recal1;
 int Recal2;

 // Variables Auxiliares
 int contadorT;
 int contadorH;
 
 // Definimos los pines que se utilizan para los botones y leds, del esp32.
 int Boton1 = 14;
 int Boton2 = 13;
 int Led1=4;
 int Led2 = 0;

void setup() {
  dht.begin(); // Inicializar DHT22
  pinMode(Led1, OUTPUT); // Asignación de pin de salida para el led rojo.
  pinMode(Led2, OUTPUT); // Asignación de pin de salida para el led azul.
  pinMode(Boton1, INPUT); // Asignación de pin de entrada para el boton verde.
  pinMode(Boton2, INPUT); // Asignación de pin de entrada para el boton azul.

  // Contador Auxiliares
  contadorT=0;
  contadorH=0;
  Serial.begin(115200); // Iniciamos la ESP32
}


void loop() {
  Recal1= digitalRead(Boton1); //Reconocimiento alarma 1
  Recal2= digitalRead(Boton2); //Reconocimiento alarma 2

  // Lectura del DHT22 para Humedad y Temperatura
  humedad = dht.readHumidity();
  celsius = dht.readTemperature();
  Serial.print("Temperatura en Celsius: ");
  Serial.println(celsius);
  Serial.print("Humedad del ambiente: ");
  Serial.println(humedad);
  Serial.println("---");

// Bucle para encender y apagar alarmas
    // Temperatura
    if (celsius <= 45 && contadorT==0) 
    {
      digitalWrite(Led1, HIGH);
      contadorT=1;
    }
    else
    {
      digitalWrite(Led1, LOW);
      contadorT=0;
    }
    // Humedad
    if ((humedad <= 25 || humedad >= 60) && contadorH==0)
    {
      digitalWrite(Led2, HIGH);
      contadorH=1;
    }
    else
    {
      digitalWrite(Led2, LOW);
      contadorH=0;
    }

// Bucle para urilizar los pulsadores y apagar las alarmas.
    if (contadorT=1 && (Recal1==HIGH || Recal2==HIGH))
    {
      digitalWrite(Led1, LOW);
      contadorT=1;
    }

    if (contadorH=1 && (Recal1==HIGH || Recal2==HIGH))
    {
      digitalWrite(Led1, LOW);
      contadorH=1;
    }
  delay(500);  
}