#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define HUMEDAD_PIN A0
#define RELE_PIN 3
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(RELE_PIN, OUTPUT);
digitalWrite(RELE_PIN, HIGH);
lcd.init();
lcd.backlight();
dht.begin();
lcd.setCursor(0,0);
lcd.print("Sistema Riego");
delay(2000);
lcd.clear();
}
void regar(String planta, int humedadMin, int tiempoRiego) {
int lectura = analogRead(HUMEDAD_PIN);
int humedadSuelo = map(lectura, 1023, 0, 0, 100);
float temperatura = dht.readTemperature();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(planta);
lcd.setCursor(0,1);
lcd.print("H:");
lcd.print(humedadSuelo);
lcd.print("%");
if (humedadSuelo < humedadMin) {
digitalWrite(RELE_PIN, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(planta);
lcd.setCursor(0,1);
lcd.print("Regando...");
delay(tiempoRiego * 1000);
digitalWrite(RELE_PIN, HIGH);
}
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp:");
lcd.print(temperatura);
lcd.print("C");
delay(2000);
}
void loop() {
// Lechuga: necesita más agua
regar("Lechuga", 70, 10);
// Berro: necesita mucha humedad
regar("Berro", 80, 12);
}