#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
// Inicializar LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Inicializar comunicación Bluetooth (RX = pin 10, TX = pin 11)
SoftwareSerial bluetooth(10, 11);
// Pines
#define sensor A0
#define waterPump 3 // Relevo conectado al pin digital 3
void setup() {
Serial.begin(9600);
bluetooth.begin(9600);
pinMode(waterPump, OUTPUT);
digitalWrite(waterPump, HIGH); // Bomba apagada
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("System Loading");
for (int a = 0; a <= 15; a++) {
lcd.setCursor(a, 1);
lcd.print(".");
delay(200);
}
lcd.clear();
}
void loop() {
int value = analogRead(sensor);
value = map(value, 0, 1024, 0, 100);
value = (value - 100) * -1; // 0 = mojado, 100 = seco
// Mostrar en LCD
lcd.setCursor(0, 0);
lcd.print("Moisture: ");
lcd.print(value);
lcd.print("% ");
// Enviar por Bluetooth
bluetooth.print("Humedad: ");
bluetooth.print(value);
bluetooth.println("%");
// Activar bomba si está seco
if (value < 30) {
digitalWrite(waterPump, LOW); // Encender bomba
lcd.setCursor(0, 1);
lcd.print("Pump: ON ");
bluetooth.println("Bomba ENCENDIDA");
} else {
digitalWrite(waterPump, HIGH); // Apagar bomba
lcd.setCursor(0, 1);
lcd.print("Pump: OFF ");
bluetooth.println("Bomba APAGADA");
}
delay(2000);
}