// Program Ultrasonik dengan kontrol switch untuk memulai program
// const int pinS1 = 12;
// int buttonstate = 0;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int trig = 7;
int echo = 8;
float jarak;
float durasi=0;
float ttoren = 1.420; //dalam meter
float dtoren = 1.050; //dalam meter
float atoren = 0.25*(dtoren*dtoren)*(22/7);
float vair;
unsigned long interval = 10000;
unsigned long previousMillis = 0;
void setup() {
// put your setup code here, to run once:
// pinMode(pinS1, INPUT);// set pin sebagai input untuk kontrol sistem
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print (" Volume Air Tank ");
pinMode(trig, OUTPUT);// set pin sebagai output untuk mengirim pulsa
pinMode(echo, INPUT);// set pin sebagai input untuk menerima pulsa
Serial.begin(9600);
}
void volumeair(){
// set output menjadi LOW
digitalWrite(trig, LOW);
delayMicroseconds(2); // kirim 5uS pulsa untuk mengaktifkan Ping
digitalWrite(trig, HIGH);
delayMicroseconds(2); // kirim 5uS pulsa untuk mematikan Ping
digitalWrite(trig, LOW);
/* ukur panjang pulsa yang datang */
durasi=pulseIn(echo, HIGH);
// panjang pulsa dibagi dua
durasi= durasi/2;
// ubah kedalam satuan meter
jarak=(durasi/2900);
//kirim ke komputer untuk ditampilkan pada serial monitor
vair = (ttoren-jarak)*atoren;
}
void tampilan(){
if (jarak<=0.3){
Serial.println("Peringatan Air Penuh");
Serial.print("Tinggi Air: ");
Serial.print(ttoren-jarak);
Serial.println(" m");
Serial.print("Volume Air: ");
Serial.print(vair*1000);
Serial.println(" liter");
} else if (jarak>=1.420){
Serial.println("Surut/Error");
} else {
Serial.print("Tinggi Air: ");
Serial.print(ttoren-jarak);
Serial.println(" m");
Serial.print("Volume Air: ");
Serial.print(vair*1000);
Serial.println(" liter");
}
}
void loop() {
//buttonstate=digitalRead(pinS1);
//Serial.println(buttonstate)
unsigned long currentMillis = millis();
if ((unsigned long)(currentMillis - previousMillis)>= interval){
//Serial.println(currentMillis);
//Serial.println(previousMillis);
volumeair();
//delay(10);
tampilan();
if (jarak<=0.3){
lcd.setCursor(0, 1);
lcd.print (" Tanki Air Penuh ");
lcd.setCursor(0, 2);
lcd.print ("Tinggi Air:");
lcd.print (ttoren-jarak);
lcd.print (" m");
lcd.setCursor(0, 3);
lcd.print ("Vol.Air:");
lcd.print (vair*1000);
lcd.print (" ltr");
} else if (jarak>=1.420){
lcd.setCursor(0, 1);
lcd.print (" Surut/Error ");
lcd.setCursor(0, 2);
lcd.print (" ");
lcd.setCursor(0, 3);
lcd.print (" ");
} else {
lcd.setCursor(0, 1);
lcd.print (" ");
lcd.setCursor(0, 2);
lcd.print ("Tinggi Air: ");
lcd.print (ttoren-jarak);
lcd.print (" m");
lcd.setCursor(0, 3);
lcd.print ("Vol.Air: ");
lcd.print (vair*1000);
lcd.print (" ltr");
}
previousMillis = millis();
} //else{
//Serial.print(currentMillis);
//Serial.print(" & ");
//Serial.println(previousMillis);
//}
delay(1000);
}