#include <LiquidCrystal.h> //lcd library
#define echopin 9
#define trigpin 8
#define autopin A0 //auto switch pin
#define manupin A1 //manual switch pin
#define dryout A2 //dryprotection pin
int relaypin = 10; //output relay pin
int buzzerpin = 11; //output buzzer pin
byte all[8] = {
0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111
};
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //lcd pins
void setup(){
lcd.begin(16, 2);
Serial.begin(9600);
lcd.createChar(0, all);
lcd.setCursor(0,0);
for (int j=0; j<2; j++)
for (int i=0; i<16; i++){
lcd.setCursor (i,j);
lcd.write(byte(0));
delay(100);
}
lcd.clear();
delay(100);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("*WELCOME TO JSK*");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("AUTOMATIC WATER");
lcd.setCursor(0,1);
lcd.print("PUMP CONTROLLER");
delay(3000);
lcd.clear();
Serial.begin(9600);
pinMode(echopin, INPUT_PULLUP);
pinMode(trigpin, OUTPUT);
pinMode(relaypin, OUTPUT); //set relay pin as output
pinMode(buzzerpin, OUTPUT); //set buzzer pin as output
pinMode(autopin, INPUT); //auto switch pin as input
pinMode(manupin, INPUT); //auto switch pin as input
pinMode(dryout, INPUT); //dry out switch pin as input
digitalWrite(echopin,HIGH);
}
void loop(){
digitalWrite(trigpin,LOW);
delayMicroseconds(2);
digitalWrite(trigpin,HIGH);
delayMicroseconds(20);
digitalWrite(trigpin,LOW);
int distance = pulseIn(echopin,HIGH,26000);
distance=distance/58;
distance = map(distance,20,110, 100, 0); //cm to percentage
lcd.setCursor(12,1);
lcd.print(distance); //percentage value print on lcd
lcd.print("%");
delay(1000);
lcd.clear();
lcd.setCursor(1,1);
lcd.print("TANK LEVEL=");
if(distance <= 25 &&
digitalRead(autopin) == HIGH &&
digitalRead(manupin) == LOW &&
digitalRead(dryout) == HIGH)
digitalWrite(relaypin,HIGH);
if(distance <= 25 &&
digitalRead(autopin) == HIGH &&
digitalRead(manupin) == LOW &&
digitalRead(dryout) == LOW)
digitalWrite(relaypin,LOW);
if(distance >= 100 &&
digitalRead(autopin) == HIGH &&
digitalRead(manupin) == LOW)
digitalWrite(relaypin,LOW);
if(digitalRead(autopin) == HIGH &&
digitalRead(manupin) == LOW &&
digitalRead(relaypin) == HIGH &&
digitalRead(dryout) == LOW)
digitalWrite(relaypin,LOW);
if(digitalRead(manupin) == HIGH &&
digitalRead(autopin) == LOW &&
digitalRead(relaypin) == LOW &&
digitalRead(dryout) == HIGH)
digitalWrite(relaypin,HIGH);
if(digitalRead(manupin) == HIGH &&
digitalRead(autopin) == LOW &&
digitalRead(relaypin) == HIGH &&
digitalRead(dryout) == LOW)
digitalWrite(relaypin,LOW);
if(digitalRead(autopin) == LOW &&
digitalRead(manupin) == LOW)
digitalWrite(relaypin,LOW);
if(digitalRead(dryout) == LOW)
digitalWrite(relaypin,LOW);
if(digitalRead(autopin) == HIGH &&
digitalRead(manupin) == HIGH)
digitalWrite(relaypin,LOW);
lcd.setCursor(0,0);
if(digitalRead(autopin) == HIGH && digitalRead(manupin) == LOW)
lcd.print("AUTO");
if(digitalRead(autopin) == LOW && digitalRead(manupin) == HIGH)
lcd.print("MANUAL");
if(digitalRead(autopin) == LOW && digitalRead(manupin) == LOW)
lcd.print("OFF");
if(digitalRead(autopin) == HIGH && digitalRead(manupin) == HIGH)
lcd.print("ERROR!!!");
lcd.setCursor(8,0);
if (digitalRead(relaypin) == LOW)
{
lcd.print("PUMP=OFF");
}
else {
lcd.print("PUMP=ON");
}
if (digitalRead(dryout) == LOW)
{
digitalWrite(relaypin,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("THE WELL IS LOW");
digitalWrite(buzzerpin,HIGH);
delay(1000);
digitalWrite(buzzerpin,LOW);
delay(1000);
lcd.clear();
}
}