#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // initialize a
int set_val, percentage1,percentage2;
bool state,gov_pump,ele_pump;
const int t1 = 2;
const int e1 = 3;
const int t2 = 4;
const int e2 = 5;
int l1 = 6;
int l2 = 7;
int distance,duration;
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("WATER LEVEL:");
lcd.setCursor(0, 1);
lcd.print("PUMP:OFF");// initialize to pump off
pinMode(t1, OUTPUT);// set pin 2 to output tank1
pinMode(e1, INPUT);// set pin 3 to input tank 1
pinMode(t2,OUTPUT);// set pin 3 to output tank 2
pinMode(e2,INPUT);// set pin 3 to input tank 2
pinMode(l1, OUTPUT);
pinMode(l2, OUTPUT);
set_val=400;
}
void loop() {
percentage1 = 0;
percentage2 = 0;
digitalWrite(t1, LOW);
delayMicroseconds(2);
digitalWrite(t1, HIGH);
delayMicroseconds(10);
digitalWrite(t1, LOW);
duration = pulseIn(e1, HIGH,20000);
distance = duration * 0.034 / 2;
percentage1 = (1 - ((float)distance / set_val)) * 100;
digitalWrite(t2, LOW);
delayMicroseconds(2);
digitalWrite(t2, HIGH);
delayMicroseconds(10);
digitalWrite(t2, LOW);
duration = pulseIn(e2, HIGH,20000);
distance = duration * 0.034 / 2;
percentage2 = (1 - ((float)distance / set_val)) * 100;
if(percentage1<0)percentage1=false;
if(percentage2<0)percentage2=false;
if(percentage1 < 95){
gov_pump = true;
digitalWrite(l1, HIGH);
}
else{
gov_pump = false;
digitalWrite(l1, LOW);
}
if(percentage2 < 30 && ((percentage1) > 30 && (percentage1) < 100 ) || (percentage1 >= 95 && percentage2 < 95))
{
ele_pump = true;
digitalWrite(l2, HIGH);
}
if(percentage2 > 95 || percentage1 < 30)
{
ele_pump = false;
digitalWrite(l2, LOW);
}
lcd.setCursor(12, 0);
if(percentage1<0)percentage1=0;
lcd.print(percentage2);
lcd.print("% ");
if(percentage2>95)ele_pump=false;
lcd.setCursor(5, 1);
if(ele_pump==1)lcd.print("ON ");
else if(ele_pump==0) lcd.print("OFF");
lcd.setCursor(9, 1);
delay(100);
}
long microsecondsToInches(long microseconds) {
return microseconds / 74 / 2;
}