#include <DHTesp.h>
#include <TM1637TinyDisplay.h> 
 
// INSTANCIAR SENSORES Y ACTUADORES
DHTesp DHT_PIN;                        // Sensor DHT22
TM1637TinyDisplay display(33, 32);     // Display TM1637  PIN 33 CLK,  PIN 32 DIO
// DEFINICION DE PINES
const int sensorDHT22 = 13;            // OUT (SDA)
const int lampCalefaccion = 27;
const int ventilador = 26;
void setup() 
{
  Serial.begin(115200);
  pinMode(lampCalefaccion, OUTPUT);
  pinMode(ventilador, OUTPUT);
  DHT_PIN.setup(sensorDHT22, DHTesp::DHT22);
  display.setBrightness(15);     // Brillo del display
  delay(100);
}
void loop() 
{
  controlTemperatura();
  controlHumedad();
  mostrarMonitorS();
}
//////////////////////////////////////////////////////////////////
void controlTemperatura()
{
  // Mostrar temperatura en display
  float temp =  DHT_PIN.getTempAndHumidity().temperature;
  String TEMPERATURA = String(temp, 0) + "oC";
  display.showString(TEMPERATURA.c_str());
  delay(2000);
  // Encendido de ventilador y lampara
  if (temp <= 15)
  {
    digitalWrite(lampCalefaccion, HIGH);
    digitalWrite(ventilador, LOW);
    Serial.println("⚠️ Temperatura por debajo de 15°C");
    Serial.println("Calefacción encedida");
  }
  else if (temp >=25)
  {
    digitalWrite(lampCalefaccion, LOW);
    digitalWrite(ventilador, HIGH);
    Serial.println("⚠️ Temperatura por encima de 25°C");
    Serial.println("Ventilador encedido");   
  }
  Serial.println("------------------------------------");
}
void controlHumedad()
{
   // Mostrar humedad en display
  float hum =  DHT_PIN.getTempAndHumidity().humidity;
  String HUMEDAD = String(hum, 0);
  display.showString(HUMEDAD.c_str());
  delay(2000);
}
void mostrarMonitorS()
{
  // Mostrar temp y humedad en monitor serial
  TempAndHumidity  data = DHT_PIN.getTempAndHumidity();
  Serial.println("Temp: " + String(data.temperature, 1) + "°C");
  Serial.println("Humedad: " + String(data.humidity, 1) + "%");
}