#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#define DHTPIN A0 // Digital pin connected to the DHT sensor
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dhtPlanta1(DHTPIN, DHTTYPE);
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
byte TemperatureIcon[] = {
B01110,
B01010,
B01010,
B01010,
B01010,
B10001,
B10001,
B01110
};
byte gradosC[] = {
B11100,
B10100,
B11100,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte iconoAlto[] = {
B00000,
B00000,
B00001,
B00001,
B00101,
B00101,
B10101,
B10101
};
byte iconoBajo[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B10000,
B10000
};
byte iconoIdeal[] = {
B00000,
B00000,
B00000,
B00000,
B00100,
B00100,
B10100,
B10100
};
byte iconoHumedad[] = {
B00000,
B00100,
B01010,
B10001,
B10001,
B10001,
B01110,
B00000
};
void setup() {
//inicializa la pantalla lcd
lcd.init();
lcd.backlight();
lcd.createChar(0, gradosC);
lcd.createChar(1, TemperatureIcon);
lcd.createChar(2, iconoBajo);
lcd.createChar(3, iconoIdeal);
lcd.createChar(4, iconoAlto);
lcd.createChar(5, iconoHumedad);
//inicializa el puerto serial
Serial.begin(9600);
Serial.println(F("PUERTO SERIAL INICIADO PARA DHT11"));
dhtPlanta1.begin();
Serial.println("Maquina,Humedad,Temp,Celsius,TempF,estadoHumedad,estadoTemp");
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
delay(2000);
int humedadPlanta1 = dhtPlanta1.readHumidity();
int temperaturaPlanta1 = dhtPlanta1.readTemperature();
float temperaturaPlanta1F = dhtPlanta1.readTemperature(true);
String estadoHumedad;
String estadoTemp;
temperaturaPlanta1 = random(15,40);
humedadPlanta1 = random(50,90);
if(temperaturaPlanta1 < 18){
digitalWrite(10, HIGH);
estadoTemp = "Bajo ";
lcd.setCursor(0,1);
lcd.write(2);
}else{ digitalWrite(10, LOW); }
if(temperaturaPlanta1 >= 18 && temperaturaPlanta1 <= 24){
digitalWrite(9, HIGH);
estadoTemp = "Ideal";
lcd.setCursor(0,1);
lcd.write(3);
}else{ digitalWrite(9, LOW); }
if(temperaturaPlanta1 > 24){
digitalWrite(8, HIGH);
estadoTemp = "Alto ";
lcd.setCursor(0,1);
lcd.write(4);
}else{ digitalWrite(8, LOW); }
if(humedadPlanta1 < 60){
digitalWrite(4, HIGH);
estadoHumedad = "Bajo ";
lcd.setCursor(9,1);
lcd.write(2);
}else{ digitalWrite(4, LOW); }
if(humedadPlanta1 >= 60 && humedadPlanta1 <= 80){
digitalWrite(3, HIGH);
estadoHumedad = "Ideal";
lcd.setCursor(9,1);
lcd.write(3);
}else{ digitalWrite(3, LOW); }
if(humedadPlanta1 > 80){
digitalWrite(2, HIGH);
estadoHumedad = "Alto ";
lcd.setCursor(9,1);
lcd.write(4);
}else{ digitalWrite(2, LOW); }
Serial.print("Mq 1,");
Serial.print(humedadPlanta1); Serial.print(",");
Serial.print(temperaturaPlanta1); Serial.print(",");
Serial.print(temperaturaPlanta1F); Serial.print(",");
Serial.print(estadoHumedad); Serial.print(",");
Serial.print(estadoTemp);
Serial.println("");
lcd.setCursor(0, 0);
lcd.write(1);
lcd.print("T:");
lcd.print(temperaturaPlanta1);
lcd.setCursor(5,0);
lcd.write(0);
lcd.print("C");
lcd.setCursor(10, 0);
lcd.write(5);
lcd.print("H:");
lcd.print(humedadPlanta1);
lcd.setCursor(1, 1);
lcd.print(estadoTemp);
lcd.setCursor(10, 1);
lcd.print(estadoHumedad);
}