#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22
#define lcdSDAPin A4
#define lcdSCLPin A5
#define pinLedHot 4
#define pinLedCold 5
#define pinServo 9
#define servoHumedad 11
int angle;
Servo myservo;
Servo servoHumedo;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
pinMode(lcdSDAPin, OUTPUT);
pinMode(lcdSCLPin, OUTPUT);
pinMode(pinLedHot, OUTPUT);
pinMode(pinLedCold, OUTPUT);
myservo.attach(pinServo);
servoHumedo.attach(servoHumedad);
dht.begin();
lcd.init();
lcd.backlight();
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if any reads failed and exit early (to try again).
if (isnan(temperature) || isnan(humidity)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("¡Error al cargar el sensor DHT!");
return;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humedad: %");
lcd.setCursor(11, 0);
lcd.print(humidity);
lcd.setCursor(0, 1);
lcd.print("Temp.: ");
lcd.setCursor(8, 1);
lcd.print(temperature);
lcd.setCursor(13, 1);
lcd.print("C ");
delay(100);
//Para la temperatura
if(temperature >=30){
digitalWrite(pinLedHot, HIGH);
for(angle= 0; angle <=90; angle +=1){
myservo.write(angle);
delay(50);
}
} else
{
digitalWrite(pinLedHot, LOW);
myservo.write(90);
}
//Para la humedad
if(humidity >=60){
digitalWrite(pinLedCold, HIGH);
//'+=' significa un acumulador ; '-=' un sustractor
for(angle= 90; angle <= 180; angle++){
servoHumedo.write(angle);
delay(50);
}
}else
{
digitalWrite(pinLedCold, LOW);
servoHumedo.write(90);
}
}