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

Popular posts from this blog

Python con Arduino + Interfaz

Te cuento mi aventura como mestra IB de Design y STEM

¡ParkingBot 3000! – Tu cochera con cerebro electrónico