#include <Wire.h> // Memanggil library wire.h
#include <LiquidCrystal_I2C.h> // Memanggil library LCD dengan I2C
LiquidCrystal_I2C lcd(0x20, 16, 2); // Alamat I2C(0x27) LCD dan Jenis LCD (20x2)
#define echoPin A0 //Deklarasi echo terhubung pada pin A0 HC-SR04
#define trigPin A1 //Deklarasi trig terhubung pada pin A1 HC-SR04
#define pump A3 //Deklarasi relay
// defines variables
long durasi; // variabel durasi
int jarak; // variabel untuk mengukur jarak
void setup() {
lcd.init(); // instruksi untuk memulai LCD
lcd.begin(20,2); // instruksi untuk menggunakan lcd 20x2
lcd.backlight(); // instruksi untuk mengaktifkan lampu latar LCD
pinMode(trigPin, OUTPUT); // deklarasi pin trig sebagai output
pinMode(echoPin, INPUT); // deklarasi pin echo sebagai input
pinMode(pump, OUTPUT); // deklarasi pump sebagai output
Serial.begin(9600); // Serial Communication is starting with 9600 of baudrate speed
}
void loop() {
digitalWrite(trigPin, LOW); // Trig tidak aktif
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Trig aktif
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Membaca sinyal masuk pada echo
durasi = pulseIn(echoPin, HIGH);
// Menghitung Jarak
jarak = durasi * 0.034 / 2; // Rumus menghitung jarak ultrasonik
// Tampilkan Disply
lcd.setCursor(0, 1);
lcd.print(" Level : ");
lcd.print(jarak);
lcd.print(" cm");
lcd.setCursor(0, 0);
lcd.print(" Level Tank");
delay(1000);
if (jarak < 5){ // instruksi untuk mengaktifkan pump jika level benda kurang dari 5 cm
digitalWrite(pump, HIGH);
}
else if (jarak > 10){
digitalWrite(pump, LOW); // instruksi untuk mematikan pump jika level benda lebih dari 10 cm
}
delay(1000);
}