#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
//Pines
#define SDA A4 // Pin donde está conectado la pantalla LCD
#define SCL A5 // Pin donde está conectado la pantalla LCD
#define bombaAgua 8
#define sensorTemp 9
#define potenciometro A0 // Añade el pin del potenciómetro
//variables
int temp;
int hum;
int umbral; // Añade una variable para el umbral
//Objetos
LiquidCrystal_I2C lcd(0x27,20,4); // Cambia a LiquidCrystal_I2C
DHT dht(sensorTemp, DHT22);
void setup() {
//setup Pantalla
lcd.begin(20, 4); // Cambia las dimensiones de la pantalla
//setup rele
pinMode(bombaAgua,OUTPUT);
//setup Sensor temp
dht.begin();
}
void loop() {
//Inicializacion de Variables sensor
temp = dht.readTemperature();
hum = dht.readHumidity();
umbral = analogRead(potenciometro); // Lee el valor del potenciómetro
//Pantalla
lcd.setCursor(0,0);
lcd.print("Temperatura: " + String(temp) +" °C");
lcd.setCursor(0,1);
lcd.print("Humedad: "+ String(hum) +" % " );
lcd.setCursor(0,2);
lcd.print("Umbral: "+ String(umbral) +"% " ); // Muestra el umbral
if(temp>=30 || hum<= umbral){ //Condicion para regar automaticamente
digitalWrite(bombaAgua, LOW); //Prender bomba de agua
lcd.setCursor(0,3);
lcd.print("Bomba: ON "); // Muestra el estado de la bomba
delay(5000); //Durante 5 segundos
} else { //Si ninguna de las condiciones anteriores...
digitalWrite(bombaAgua, HIGH); //Bomba apagada
lcd.setCursor(0,3);
lcd.print("Bomba: OFF"); // Muestra el estado de la bomba
}
//Si no recibe informacion del sensor
if(temp==0 || hum==0){
lcd.setCursor(0,0);
lcd.print("*****ERROR******"); // Mostrar en la pantalla LCD
lcd.setCursor(0,1);
lcd.print("***NO SENSOR***");
delay(1000); //Actualizacion cada segundo
}
}