/*=====================
|| PROGAM WATER LEVER ||
|| BY: MUHAMMAD IBRAL ||
======================*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD(0x27, 16, 2);
int trig = 12; // Pin untuk mengirim sinyal ultrasonik
int echo = 11; // Pin untuk menerima pantulan sinyal ultrasonik
int buzz = 2; // Pin untuk penghasil suara (buzzer)
int LED = 3; // Pin untuk LED indikator
long jarak, durasi; // Variabel untuk menyimpan data jarak dan durasi
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(buzz, OUTPUT);
pinMode(LED, OUTPUT);
// Inisialisasi layar LCD dan menampilkan pesan selamat datang
LCD.init();
LCD.clear();
LCD.backlight();
LCD.setCursor(3, 0);
LCD.print("WELCOME TO");
LCD.setCursor(2, 1);
LCD.print("WATER LEVEL");
delay(2000);
LCD.clear();
LCD.setCursor(7, 0);
LCD.print("BY");
LCD.setCursor(1, 1);
LCD.print("MUHAMMAD IBRAL");
delay(2000);
LCD.clear();
}
void loop() {
// Mengirim sinyal ultrasonik
digitalWrite(trig, HIGH);
delayMicroseconds(5);
digitalWrite(trig, LOW);
delayMicroseconds(5);
// Menerima durasi dari pantulan sinyal ultrasonik
durasi = pulseIn(echo, HIGH);
// Menghitung jarak berdasarkan durasi
jarak = durasi / 58.35;
// Menampilkan jarak pada layar LCD
LCD.setCursor(0, 0);
LCD.print("Jarak = cm");
LCD.setCursor(8, 0);
LCD.print(jarak);
delay(100);
// Menghasilkan suara berdasarkan jarak
if (jarak >= 100) {
tone(buzz, 1000, 5000);
delay(1000);
tone(buzz, 500, 5000);
delay(1000);
} else if (jarak < 100) {
tone(buzz, 0, 5000);
}
// Menghidupkan atau mematikan LED indikator berdasarkan jarak
if (jarak >= 10) {
digitalWrite(LED, HIGH);
} else if (jarak < 10) {
digitalWrite(LED, LOW);
}
}