// -------------------------------------------------------------------------- //
#include <DHT.h>
#include <DHT_U.h>
// -- DHT CONFIG ------------------------------------------------------------ //
#define DHTPIN 15 // Pin conectado.
#define DHTTYPE DHT22 // Tipo de DHT.
DHT dht(DHTPIN, DHTTYPE);
// -- COMPONENTS CONFIG ----------------------------------------------------- //
#define BuzzerPIN 5
#define LedRiegoPIN1 16
#define LedRiegoPIN2 17
#define LedDiaNochePIN 18
// -- VARIABLES ------------------------------------------------------------- //
const int TempMaxDIA = 24; // Temperatura máxima durante el día.
const int TempMinDIA = 18; // Temperatura mínima durante el día.
const int TempMaxNOCHE = 10; // Temperatura máxima durante la noche.
const int HumedadMIN = 50; // Humedad mínima.
const int HumedadMAX = 70; // Humedad máxima.
bool CicloDIA = true; // ¿Día o noche? ;)
unsigned long UltimoCiclo = 0;
// -------------------------------------------------------------------------- //
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(BuzzerPIN, OUTPUT);
pinMode(LedRiegoPIN1, OUTPUT);
pinMode(LedRiegoPIN2, OUTPUT);
pinMode(LedDiaNochePIN, OUTPUT);
digitalWrite(LedDiaNochePIN, HIGH); // Simula que es de día.
}
// -------------------------------------------------------------------------- //
void loop() {
float Humedad = dht.readHumidity();
float Temperatura = dht.readTemperature();
if (isnan(Humedad) || isnan(Temperatura)) {
Serial.println(F("ERROR: Lectura fallida del sensor DHT."));
return;
}
// LECTURA DEL SENSOR
Serial.print(F("Humedad: "));
Serial.print(Humedad);
Serial.print(F("% "));
Serial.print(F("Temperatura: "));
Serial.print(Temperatura);
Serial.println(F("°C"));
// CONTROL DE VENTILACIÓN
if ((CicloDIA == true && Temperatura > TempMaxDIA && Humedad >= HumedadMIN && Humedad <= HumedadMAX) ||
(CicloDIA == false && Temperatura > TempMaxNOCHE && Humedad >= HumedadMIN && Humedad <= HumedadMAX)) {
Serial.println(F('El BUZZER está sonando'));
digitalWrite(BuzzerPIN, HIGH);
delay(4000); // Tiempo de activación del Buzzer.
digitalWrite(BuzzerPIN, LOW);
}
// const int TempMaxDIA = 24; // Temperatura máxima durante el día.
// const int TempMaxNOCHE = 10; // Temperatura máxima durante la noche.
// const int HumedadMIN = 50; // Humedad mínima.
// const int HumedadMAX = 70; // Humedad máxima.
// CONTROL DE RIEGO
if (Temperatura <= TempMaxDIA && Temperatura >= TempMinDIA && Humedad < HumedadMIN) {
digitalWrite(LedRiegoPIN1, LOW);
digitalWrite(LedRiegoPIN2, HIGH);
delay(2000); // Tiempo de activación del LED de riego.
digitalWrite(LedRiegoPIN2, LOW);
} else {
digitalWrite(LedRiegoPIN1, HIGH);
digitalWrite(LedRiegoPIN2, LOW);
delay(2000); // Tiempo de activación del LED de riego.
digitalWrite(LedRiegoPIN1, LOW);
}
// CONTROL DE CICLO DIA-NOCHE
if (millis() - UltimoCiclo > 12000) { // Cambia cada 12 segundos.
CicloDIA = !CicloDIA;
digitalWrite(LedDiaNochePIN, CicloDIA ? HIGH : LOW);
UltimoCiclo = millis();
}
delay(2000); // Espera 2 segundos antes de leer nuevamente.
}
// -------------------------------------------------------------------------- //