const int pinSensor = A0; // Sensor de humedad de suelo
const int pinRelay = 4; // Relé para la bomba/motor DC
const int pinLedOk = 7; // LED verde: Humedad adecuada
const int pinLedRiego = 8; // LED rojo: Riego activo
// Ajuste de umbrales para sensor analógico estándar:
// Cuanto mayor es el número, MÁS SECO está el suelo.
int umbralSeco = 700; // Si pasa de 700, el suelo está SECO -> activa riego
int umbralHumedo = 400; // Si baja de 400, el suelo está HÚMEDO -> apaga riego
void setup() {
Serial.begin(9600);
pinMode(pinRelay, OUTPUT);
pinMode(pinLedOk, OUTPUT);
pinMode(pinLedRiego, OUTPUT);
// Estado inicial
digitalWrite(pinRelay, LOW);
digitalWrite(pinLedOk, LOW);
digitalWrite(pinLedRiego, LOW);
Serial.println("Sistema de riego automático iniciado");
}
void loop() {
int humedad = analogRead(pinSensor);
Serial.print("Lectura sensor: ");
Serial.println(humedad);
// Suelo SECO (valor alto) -> Activa la bomba
if (humedad > umbralSeco) {
digitalWrite(pinRelay, HIGH);
digitalWrite(pinLedRiego, HIGH);
digitalWrite(pinLedOk, LOW);
Serial.println("Estado: Suelo seco -> Riego encendido");
}
// Suelo HÚMEDO (valor bajo) -> Apaga la bomba
else if (humedad < umbralHumedo) {
digitalWrite(pinRelay, LOW);
digitalWrite(pinLedRiego, LOW);
digitalWrite(pinLedOk, HIGH);
Serial.println("Estado: Suelo húmedo -> Riego apagado");
}
// Si la humedad está entre 400 y 700, mantiene el último estado (Histeresis)
delay(1000); // Lee cada 1 segundo
}