#include "LiquidCrystal_I2C.h"
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
#define WATER_SENSOR A0
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
delay(100);
lcd.init();
lcd.backlight();
pinMode(WATER_SENSOR, INPUT);
}
void loop() {
// Read potentiometer/water sensor
int sensorValue = analogRead(WATER_SENSOR);
// Convert ADC reading to percentage (0-100%)
int waterLevel = map(sensorValue, 0, 1023, 0, 100);
// Limit value between 0 and 100
waterLevel = constrain(waterLevel, 0, 100);
lcd.clear();
// First line: Display water level
lcd.setCursor(0, 0);
lcd.print("Level: ");
lcd.print(waterLevel);
lcd.print("%");
// Second line: Display status
lcd.setCursor(0, 1);
if (waterLevel <= 20) {
lcd.print("LOW WATER!");
}
else if (waterLevel <= 80) {
lcd.print("WATER LEVEL OK");
}
else if (waterLevel < 100) {
lcd.print("TANK NEAR FULL");
}
else {
lcd.print("TANK FULL!");
}
delay(500);
}