Medir el nivel de agua con Arduino

Hoy utilicé un sensor de nivel de agua con mi nuevo arduino Mega, pero es igual para arduino Uno. La forma de conectarlo es muy sencilla, simplemente tiene tres pines:

Indicador en el sensor Conexión en la placa Arduino
+ se conecta al positivo (5v)
va conectado al negativo (GND)
S a un pin analógico. En mi ejemplo lo conecté a A0

Arduino UNOSensor de nivel de agua
Gracias a este tutorial de Prometec aprendí que alcanza con este sencillo código para ver la medición:

void setup()
   {
       Serial.begin(9600);
   }
 
void loop()
   {
       Serial.println(analogRead(A0));
   }

Utilizando el menú abrimos el monitor serial (en el menú Herramientas), y podemos ver cómo se muestra el nivel de agua:

Monitor serial

No conforme con ver en el monitor serial el resultado, conecté también un display LCM 1602. La explicación de como conectarlo es sencilla:

GND – va a GND

VCC – a 5v

SDA y SCL, en el caso del arduino Mega, va a los pines que tienen ese nombre: SDA y SCL. En el caso del arduino Uno, van a A4 / A5 (aquí, más información)

Una vez realizadas todas las conexiones, este fue el código que utilicé:

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
int agua = 0;

void setup()
{
Serial.begin(9600); // para utilizar el sensor de agua
lcd.begin(16,2); // inicializa el display
lcd.backlight(); // enciende la luz del display
lcd.setCursor(0, 0); // acomoda el cursor
lcd.print("Nivel de agua: "); // escribe el texto

}
void loop()
{
lcd.clear(); // borra el contenido del display
lcd.setCursor(0, 0); // acomoda el cursor
lcd.print("Nivel de agua: "); // escribe el texto
lcd.setCursor(12, 1); // acomoda el cursor
agua = analogRead(A0); // guarda en variable valor del sensor de agua
lcd.print(agua); //Escribe en el display el valor del sensor
Serial.println(agua); //Escribe en el monitor serial el valor de agua
delay(50); // espera un poquito antes de continuar

}

Un dato: Al conectar el display, el valor devuelto por el sensor de agua se altera, no vuelve a 0 sino que queda en 8 aproximadamente.