#include <EEPROM.h>
#include <Wire.h>
#include <TimerOne.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
long duration, inches;
int set_val_percentage;
bool state_pump;
void setup(){
Wire.begin();
lcd.begin(16,2);
lcd.backlight();
lcd.print("Water level:");
lcd.setCursor(0,1);
lcd.print("Pump:off manual");
pinMode(6,OUTPUT);
pinMode(7, INPUT);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(13, OUTPUT);
set_val-EEPROM.read(0);
if(set_val>150)set_val=150;
}
void loop(){
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
duration=pulseIn(7,HIGH);
inches =MicrosecondsToInches(duration);
percentage=(set_val-inche)*100/set_val;
lcd.setCursor(12,0);
if(percentage<0)percentage=0;
lcd.print(percentage);
lcd.print("% ");
if(percentage<70&digitalRead(11))pump=0;
if(percentage>93)pump=1;
digitalWrite(13,!pump);
lcd.setCursor(5,1);
if(pump==1)lcd.print("OFF");
else if(pump==0) lcd.print("ON");
lcd.setCursor(9,1);
if(digitalRead(11))lcd.print("MANNUAL");
else lcd.print("AUTO ");
if(digitalRead(10)&!state.digitalWrite(11))
{
state=1;
pump=!pump;
}
if(digitalRead(10))state=0;
delay(5000);
}
long MicrosecondsToInches(long microseconds)
{
return Microseconds / 54/2;
}