#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigger = 32;
const int echo = 33;
const int pump = 25;
const int buzzer = 26;
bool buzzFlag = false;
float levellow = 20.0;
float levelhigh = 40.0;
long duration;
float distance;
int waterlevel;
void setup(){
lcd.init();
lcd.backlight();
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(pump, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop(){
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
duration = pulseIn(echo, HIGH);
distance = (duration/2)/29.1;
waterlevel = ((distance - levellow)/(levelhigh - levellow))*100;
if(waterlevel <0){
waterlevel = 0;
}
if(waterlevel >100){
waterlevel = 100;
}
lcd.setCursor(0,0);
lcd.print("WATERLEVEL=");
lcd.setCursor(11,0);
lcd.print(waterlevel);
lcd.print("% ");
if(waterlevel <= 10){
digitalWrite(pump, HIGH);
if(!buzzFlag){
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
buzzFlag = true;
}
lcd.setCursor(0,1);
lcd.print("WATERPUMP=ON ");
}
else if(waterlevel >= 90){
digitalWrite(pump, LOW);
lcd.setCursor(0,1);
lcd.print("WATERPUMP=OFF");
}
}