Lector de Humedad
HÚMEDO – NECESITA RIEGO (cuando está por debajo del umbral deseado)
• MOJADO – NO NECESITA RIEGO (cuando supera el umbral)
Ajustas el umbral con UMBRAL_MOJADO según tu calibración.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// --- Pines ---
const int PIN_SENSOR = A0;
// --- LCD I2C ---
// Si tu módulo usa 0x3F, cámbialo aquí.
LiquidCrystal_I2C lcd(0x27, 16, 2);
// --- Calibración rápida ---
// Reemplaza con tus lecturas reales (seco = al aire, mojado = en tierra bien húmeda/agua)
int val_seco = 700; // lectura en A0 con sensor al aire
int val_mojado = 300; // lectura en A0 con sensor húmedo/mojado
// --- Umbral de decisión ---
// Por encima de este % consideramos "MOJADO" (NO necesita riego).
// Por debajo, mostramos "HUMEDO - NECESITA RIEGO".
int UMBRAL_MOJADO = 70; // % (ajusta tras calibrar)
unsigned long t0 = 0;
const unsigned long PERIODO_MS = 1000;
int humedadPorcentaje(int lectura) {
// En sensores capacitivos: a más humedad, menor lectura analógica
int pct = map(lectura, val_seco, val_mojado, 0, 100);
if (pct < 0) pct = 0;
if (pct > 100) pct = 100;
return pct;
}
void setup() {
pinMode(PIN_SENSOR, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0); lcd.print("Humedad Suelo");
lcd.setCursor(0,1); lcd.print("Iniciando...");
delay(1200);
}
void loop() {
if (millis() - t0 >= PERIODO_MS) {
t0 = millis();
int lectura = analogRead(PIN_SENSOR);
int pct = humedadPorcentaje(lectura);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Humedad: ");
lcd.print(pct);
lcd.print("% ");
lcd.setCursor(0,1);
if (pct >= UMBRAL_MOJADO) {
// Suficientemente mojado
lcd.print("MOJADO: No riego");
} else {
// Aun no alcanza el umbral
lcd.print("HUMEDO: Riego SI");
}
}
}
Cómo calibrar en 3 minutos
1. Carga un sketch simple que imprima analogRead(A0) por Serial o usa temporalmente pct en LCD.
2. Al aire: anota val_seco.
3. En tierra muy húmeda/agua: anota val_mojado.
4. Ajusta UMBRAL_MOJADO (p.ej., 65–80%) hasta que el mensaje cambie donde te parezca correcto para tus plantas/experimento.
Cableado
• LCD I2C: VCC→5V, GND→GND, SDA→A4, SCL→A5 (Arduino UNO).
• Sensor: VCC→3.3–5V (según modelo), GND→GND, AOUT→A0.
Comments
Post a Comment