#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definición de pines
const int sensor1Pin = A1; // Sensor de humedad planta 1
const int sensor2Pin = A2; // Sensor de humedad planta 2
const int sensor3Pin = A3; // Sensor de humedad planta 3
const int rele1Pin = 2; // Relé para bomba planta 1
const int rele2Pin = 3; // Relé para bomba planta 2
const int rele3Pin = 4; // Relé para bomba planta 3
// Umbral de humedad (ajusta según tus necesidades)
const int umbralHumedad = 500;
// Inicializa la pantalla LCD con dirección I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(rele1Pin, OUTPUT);
pinMode(rele2Pin, OUTPUT);
pinMode(rele3Pin, OUTPUT);
lcd.begin();
lcd.backlight(); // Enciende la luz de fondo de la LCD
Serial.begin(9600);
}
void loop() {
int humedad1 = analogRead(sensor1Pin);
int humedad2 = analogRead(sensor2Pin);
int humedad3 = analogRead(sensor3Pin);
// Verifica el estado de cada planta y activa el riego si es necesario
if (humedad1 < umbralHumedad) {
digitalWrite(rele1Pin, LOW); // Activa bomba planta 1
lcd.setCursor(0, 0);
lcd.print("Planta 1: Regando");
delay(2000); // Mantener regando por un tiempo
digitalWrite(rele1Pin, HIGH); // Desactiva bomba planta 1
} else {
lcd.setCursor(0, 0);
lcd.print("Planta 1: Normal ");
}
if (humedad2 < umbralHumedad) {
digitalWrite(rele2Pin, LOW); // Activa bomba planta 2
lcd.setCursor(0, 1);
lcd.print("Planta 2: Regando");
delay(2000); // Mantener regando por un tiempo
digitalWrite(rele2Pin, HIGH); // Desactiva bomba planta 2
} else {
lcd.setCursor(0, 1);
lcd.print("Planta 2: Normal ");
}
if (humedad3 < umbralHumedad) {
digitalWrite(rele3Pin, LOW); // Activa bomba planta 3
lcd.setCursor(0, 1);
lcd.print("Planta 3: Regando");
delay(2000); // Mantener regando por un tiempo
digitalWrite(rele3Pin, HIGH); // Desactiva bomba planta 3
} else {
lcd.setCursor(0, 1);
lcd.print("Planta 3: Normal ");
}
delay(5000); // Esperar antes de la siguiente lectura
}