#include <LiquidCrystal_I2C.h>
#define relay_1 2
#define relay_2 3
#define up 8
#define down 9
#define set 10
#define sett 11
#define trigPin A1
#define echoPin A0
LiquidCrystal_I2C lcd(0x27, 16, 2);
int tinggi_tandon=0;
int tinggi=50;
int rendah=20;
int error=0;
int delay_relay=2000;
long duration;
int distance,jarak,jarak1;
int menu=0;
int flag=0;
void sensor ()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
jarak=tinggi_tandon-distance;
jarak1 = map(jarak, 0, error, 0, 100);
Serial.print("Water Level = ");
Serial.println (distance);
delay(500);
//lcd.setCursor(0,1); lcd.print(String () + "Level Air :" + jarak1 +" %" +" ");
lcd.setCursor(0,1); lcd.print(String () + "Level Air :" + distance +" cm" +" ");
}
void setup() {
Serial.begin(9600);
digitalWrite (relay_1, LOW);
digitalWrite (relay_2, LOW);
pinMode (relay_1, OUTPUT);
pinMode (relay_2, OUTPUT);
pinMode (set, INPUT_PULLUP);
pinMode (sett, INPUT_PULLUP);
pinMode (up, INPUT_PULLUP);
pinMode (down, INPUT_PULLUP);
lcd.init();
lcd.backlight();
}
void loop() {
if (digitalRead(sett)==LOW){delay(200); lcd.clear(); menu+=1; if(menu==5) menu=0;}
if (digitalRead(set)==LOW){delay(200); lcd.clear(); menu-=1; if(menu==0) menu=0;
if (menu==-1) menu=4;}
if (distance>=tinggi && flag==0)
{
digitalWrite (relay_1, HIGH); delay(delay_relay);
flag=1;
}
if (distance>=tinggi && flag==1){digitalWrite (relay_1, LOW);digitalWrite (relay_2, HIGH); }
if (distance<=rendah)
{ flag=0;
digitalWrite (relay_1, LOW);
digitalWrite (relay_2, LOW);
}
switch(menu)
{
case 0:
lcd.setCursor(0,0);lcd.print(String() + ">>"+" Setting");
sensor ();
break;
case 1:
lcd.setCursor(1,0);lcd.print(String() +"Tinggi Tandon ");
lcd.setCursor(0,1);lcd.print(String() +">"+ "Set : "+tinggi_tandon + " cm" + " ");
if (digitalRead(up)==LOW){ delay(200); tinggi_tandon++;}
if (digitalRead(down)==LOW){ delay(200);tinggi_tandon--;}
break;
case 2:
lcd.setCursor(1,0);lcd.print(String() +"Error");
lcd.setCursor(0,1);lcd.print(String() +">"+"Set :" +error +" cm" +" ");
if (digitalRead(up)==LOW){ delay(200); error++;}
if (digitalRead(down)==LOW){ delay(200);error--;}
break;
case 3:
lcd.setCursor(0,0);lcd.print(String() +">Tinggi :" +tinggi +" %" + " ");
lcd.setCursor(1,1);lcd.print(String() +"Rendah :" + rendah + " %" + " ");
if (digitalRead(up)==LOW){ delay(200); tinggi++; if (tinggi==101) tinggi=50;}
if (digitalRead(down)==LOW){ delay(200);tinggi--; if (tinggi==50) tinggi=100;}
break;
case 4:
lcd.setCursor(1,0);lcd.print(String() +"Tinggi :" + tinggi +" %" + " " );
lcd.setCursor(0,1);lcd.print(String() +">Rendah :" + rendah + " %" + " ");
if (digitalRead(up)==LOW){ delay(200); rendah++; if (rendah==49) rendah=0;}
if (digitalRead(down)==LOW){ delay(200);rendah--; if (rendah==0) rendah=49;}
break;
}
}