#include <LiquidCrystal_I2C.h> // Mengimpor pustaka untuk LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Menginisialisasi LCD dengan alamat 0x27 dan ukuran 16x2
// Mendeklarasikan pin untuk sensor ultrasonik, buzzer, dan LED
int trig = 12;
int echo = 11;
long jarak, durasi; // Variabel untuk menyimpan jarak dan durasi pulsa ultrasonik
int buzzer = 2; // Pin untuk buzzer
int led = 3; // Pin untuk LED
void setup() {
// put your setup code here, to run once:
// Menetapkan pin mode
pinMode(trig, OUTPUT); // Pin trig digunakan untuk mengirimkan pulsa
pinMode(echo, INPUT); // Pin echo digunakan untuk menerima pulsa
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
pinMode(buzzer, OUTPUT); // Pin buzzer sebagai output
pinMode(led, OUTPUT); // Pin LED sebagai output
lcd.init(); // Inisialisasi LCD
lcd.clear(); // Membersihkan layar LCD
lcd.backlight(); // Mengaktifkan lampu latar LCD
// Menampilkan pesan selamat datang pada LCD
lcd.setCursor(0, 0);
lcd.print(" WELCOME TO ");
lcd.setCursor(0, 1);
lcd.print(" WATER LEVEL ");
delay(2000); // Menunggu selama 2 detik untuk menampilkan pesan
lcd.clear(); // Membersihkan layar setelah pesan selamat datang
}
void loop() {
// put your main code here, to run repeatedly:
// Mengirimkan pulsa ultrasonik
digitalWrite(trig, HIGH); // Mengaktifkan pin trig untuk mengirimkan pulsa
delayMicroseconds(5); // Menunggu 5 mikrodetik
digitalWrite(trig, LOW); // Menonaktifkan pin trig
// Menghitung durasi pulsa yang diterima
durasi = pulseIn(echo, HIGH); // Menghitung durasi pulsa pada pin echo
jarak = durasi / 58.35; // Menghitung jarak dalam cm menggunakan rumus
// Menampilkan jarak pada monitor serial untuk debugging
Serial.print(jarak);
Serial.println(" cm");
// Menampilkan jarak pada LCD
lcd.setCursor(0, 0);
lcd.print("Jarak: "); // Menampilkan label "Jarak: "
lcd.print(jarak); // Menampilkan nilai jarak
lcd.print(" cm "); // Menampilkan satuan cm
// Mengontrol buzzer berdasarkan jarak
if (jarak >= 100) {
tone(buzzer, 1000, 5000); // Jika jarak lebih dari 100 cm, buzzer berbunyi selama 5 detik
digitalWrite(led, HIGH); // Jika jarak lebih dari 100 cm, LED menyala
}
else {
noTone(buzzer); // Jika jarak kurang dari 100 cm, matikan buzzer
// Mengontrol LED berdasarkan jarak
if (jarak < 10) {
digitalWrite(led, LOW); // Jika jarak kurang dari 10 cm, LED padam
}
}
}