#include <EEPROM.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
long duration, inches;
int set_val, percentage;
bool pump;
void setup() {
lcd.begin(16, 2);
lcd.print("WATER LEVEL:");
lcd.setCursor(0, 1);
lcd.print("PUMP: OFF");
pinMode(8, OUTPUT); // Trigger pin for ultrasonic sensor
pinMode(9, INPUT); // Echo pin for ultrasonic sensor
pinMode(10, OUTPUT); // Pump control pin
pinMode(12, OUTPUT); // Buzzer pin
set_val = EEPROM.read(0);
if (set_val > 150) set_val = 150;
}
void loop() {
digitalWrite(8, LOW);
delayMicroseconds(2);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
duration = pulseIn(9, HIGH);
inches = microsecondsToInches(duration);
percentage = (set_val - inches) * 100 / set_val;
lcd.setCursor(12, 0);
if (percentage < 0) percentage = 0;
lcd.print(percentage);
lcd.print("% ");
if (percentage < 30) {
pump = true;
tone(12, 1000); // Turn on buzzer with a frequency of 1000Hz
} else if (percentage > 99) {
pump = false;
noTone(12); // Turn off buzzer
}
digitalWrite(10, pump); // Control the pump
lcd.setCursor(7, 1); // Update the LCD cursor position
if (pump) {
lcd.print("ON ");
} else {
lcd.print("OFF");
}
delay(500);
}
long microsecondsToInches(long microseconds) {
return microseconds / 74 / 2;
}