//PROTOTIPO 1 DE INVERNADERO INTELIGENTE CON SENSORES INDEPENDIENTES
//JEAL, IRG, JARO
//Inclusion de Libreria
#include "DHT.h"
//---------------------------------------------------------------------------------------
//Definicion de Pines de los Sensores e Indicadores
#define DHTPIN1 17
#define DHTPIN2 25
#define DHTPIN3 23
#define DHTTYPE1 DHT22
#define DHTTYPE2 DHT22
#define DHTTYPE3 DHT22
#define LED_COOL1 0 // Pin del LED para temperaturas por debajo de 22°C
#define LED_NORMAL1 4 // Pin del LED para temperaturas entre 22°C y 30°C
#define LED_HOT1 16 // Pin del LED para temperaturas por encima de 30°C
#define LED_VENT1 2 // Pin del LED para 1° Ventilador
#define LED_COOL2 14 // Pin del LED para temperaturas por debajo de 22°C
#define LED_NORMAL2 27 // Pin del LED para temperaturas entre 22°C y 30°C
#define LED_HOT2 26 // Pin del LED para temperaturas por encima de 30°C
#define LED_VENT2 12 // Pin del LED para 2° Ventilador
#define LED_COOL3 19 // Pin del LED para temperaturas por debajo de 22°C
#define LED_NORMAL3 21 // Pin del LED para temperaturas entre 22°C y 30°C
#define LED_HOT3 22 // Pin del LED para temperaturas por encima de 30°C
#define LED_VENT3 18 // Pin del LED para 2° Ventilador
//---------------------------------------------------------------------------------------
//Variables Locales de los Sensores
DHT dht1(DHTPIN1, DHTTYPE1);
DHT dht2(DHTPIN2, DHTTYPE2);
DHT dht3(DHTPIN3, DHTTYPE3);
//---------------------------------------------------------------------------------------
//INICIO DE FUNCIONAMIENTO
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht1.begin();
dht2.begin();
pinMode(LED_COOL1, OUTPUT);
pinMode(LED_NORMAL1, OUTPUT);
pinMode(LED_HOT1, OUTPUT);
pinMode(LED_VENT1, OUTPUT);
pinMode(LED_COOL2, OUTPUT);
pinMode(LED_NORMAL2, OUTPUT);
pinMode(LED_HOT2, OUTPUT);
pinMode(LED_VENT2, OUTPUT);
pinMode(LED_COOL3, OUTPUT);
pinMode(LED_NORMAL3, OUTPUT);
pinMode(LED_HOT3, OUTPUT);
pinMode(LED_VENT3, OUTPUT);
}
void loop() {
// Espera unos segundos entre mediciones.
delay(2000);
// Leer la humedad y temperatura
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();
// Comprobar si la lectura falló y salir temprano (para intentar de nuevo).
if (isnan(h1) || isnan(t1)) {
Serial.println(F("¡Fallo al leer del sensor DHT!"));
return;
}
if (isnan(h2) || isnan(t2)) {
Serial.println(F("¡Fallo al leer del sensor DHT!"));
return;
}
if (isnan(h3) || isnan(t3)) {
Serial.println(F("¡Fallo al leer del sensor DHT!"));
return;
}
//Impresion de Datos de 1° DHT22 en el Serial Port
Serial.print(F("Humedad1: "));
Serial.print(h1);
Serial.print(F("% Temperatura1: "));
Serial.print(t1);
Serial.println(F("°C"));
//Impresion de Datos de 2° DHT22 en el Serial Port
Serial.print(F("Humedad2: "));
Serial.print(h2);
Serial.print(F("% Temperatura2: "));
Serial.print(t2);
Serial.println(F("°C"));
//Impresion de Datos de 3° DHT22 en el Serial Port
Serial.print(F("Humedad3: "));
Serial.print(h3);
Serial.print(F("% Temperatura3: "));
Serial.print(t3);
Serial.println(F("°C"));
// Enciende los LEDs según la temperatura del Sensor 1
if (t1 < 22) {
digitalWrite(LED_COOL1, HIGH);
digitalWrite(LED_NORMAL1, LOW);
digitalWrite(LED_HOT1, LOW);
digitalWrite(LED_VENT1, LOW);
} else if (t1 >= 22 && t1 <= 30) {
digitalWrite(LED_COOL1, LOW);
digitalWrite(LED_NORMAL1, HIGH);
digitalWrite(LED_HOT1, LOW);
digitalWrite(LED_VENT1, LOW);
} else {
digitalWrite(LED_COOL1, LOW);
digitalWrite(LED_NORMAL1, LOW);
digitalWrite(LED_HOT1, HIGH);
digitalWrite(LED_VENT1, HIGH);
}
//------------------------------------------------------------------------------------
// Enciende los LEDs según la temperatura del Sensor 2
if (t2 < 22) {
digitalWrite(LED_COOL2, HIGH);
digitalWrite(LED_NORMAL2, LOW);
digitalWrite(LED_HOT2, LOW);
digitalWrite(LED_VENT2, LOW);
} else if (t2 >= 22 && t2 <= 30) {
digitalWrite(LED_COOL2, LOW);
digitalWrite(LED_NORMAL2, HIGH);
digitalWrite(LED_HOT2, LOW);
digitalWrite(LED_VENT2, LOW);
} else {
digitalWrite(LED_COOL2, LOW);
digitalWrite(LED_NORMAL2, LOW);
digitalWrite(LED_HOT2, HIGH);
digitalWrite(LED_VENT2, HIGH);
}
// Enciende los LEDs según la temperatura del Sensor 3
if (t3 < 22) {
digitalWrite(LED_COOL3, HIGH);
digitalWrite(LED_NORMAL3, LOW);
digitalWrite(LED_HOT3, LOW);
digitalWrite(LED_VENT3, LOW);
} else if (t3 >= 22 && t3 <= 30) {
digitalWrite(LED_COOL3, LOW);
digitalWrite(LED_NORMAL3, HIGH);
digitalWrite(LED_HOT3, LOW);
digitalWrite(LED_VENT3, LOW);
} else {
digitalWrite(LED_COOL3, LOW);
digitalWrite(LED_NORMAL3, LOW);
digitalWrite(LED_HOT3, HIGH);
digitalWrite(LED_VENT3, HIGH);
}
//-------------------------------------------------------------------------------------
}