#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;
int pumpstate = LOW;
bool buzzFlag = false;
int waterlevel;
int levellow = 0;
int levelhigh = 400;
byte zero[8] = {0b00100, 0b01010, 0b10001, 0b10001, 0b10001, 0b10001, 0b10001, 0b11111};
byte ten[8] = {0b00100, 0b01010, 0b10001, 0b10001, 0b10001, 0b10001, 0b11111, 0b11111};
byte twentyfive[8] = {0b00100, 0b01010, 0b10001, 0b10001, 0b10001, 0b11111, 0b11111, 0b11111};
byte fifty[8] = {0b00100, 0b01010, 0b10001, 0b10001, 0b11111, 0b11111, 0b11111, 0b11111};
byte seventyfive[8] = {0b00100, 0b01010, 0b10001, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111};
byte hundred[8] = {0b00100, 0b01010, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111};
void setup(){
lcd.init();
lcd.clear();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("SMART");
lcd.setCursor(2, 1);
lcd.print("WATER PUMP");
delay(2000);
lcd.createChar(0, zero);
lcd.createChar(1, ten);
lcd.createChar(2, twentyfive);
lcd.createChar(3, fifty);
lcd.createChar(4, seventyfive);
lcd.createChar(5, hundred);
lcd.clear();
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(pump, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void pumpAutomate(){
if(waterlevel <= 15 && pumpstate == LOW){
if(buzzFlag == false){
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
buzzFlag = true;
}
pumpstate = HIGH;
}
else if(waterlevel >= 90 && pumpstate == HIGH){
pumpstate = LOW;
}
}
void tank() {
if (waterlevel >= 0 && waterlevel < 10) {
lcd.setCursor(15, 0);
lcd.write(0);
}
if (waterlevel >= 10 && waterlevel < 25) {
lcd.setCursor(15, 0);
lcd.write(1);
}
if (waterlevel >= 25 && waterlevel < 50) {
lcd.setCursor(15, 0);
lcd.write(2);
}
if (waterlevel >= 50 && waterlevel < 75) {
lcd.setCursor(15, 0);
lcd.write(3);
}
if (waterlevel >= 75 && waterlevel < 100) {
lcd.setCursor(15, 0);
lcd.write(4);
}
if (waterlevel >= 100){
lcd.setCursor(15, 0);
lcd.write(5);
}
}
void loop(){
digitalWrite(pump, pumpstate);
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
float duration = pulseIn(echo, HIGH);
float distance = 0.017 * duration;
waterlevel = map(distance, levellow, levelhigh, 0, 100);
lcd.setCursor(11, 0);
lcd.print(waterlevel);
lcd.setCursor(14, 0);
lcd.print("%");
void pumpAutomate();
void tank();
lcd.setCursor(1,1);
lcd.print("WATER PUMP=");
lcd.println(pumpstate ? "ON " : "OFF");
}