// Definisi pin untuk sensor ultrasonik dan LED
const int ECHO_PIN = 2; // Pin echo sensor ultrasonik
const int TRIG_PIN = 3; // Pin trigger sensor ultrasonik
const int LED_HIGH = 4; // LED indikator air tinggi
const int LED_MEDIUM = 5; // LED indikator air sedang
const int LED_LOW = 6; // LED indikator air rendah
// Jarak threshold untuk level air
const float HIGH_THRESHOLD = 50; // Batasan jarak untuk level tinggi
const float MEDIUM_THRESHOLD = 100; // Batasan jarak untuk level sedang
// Fungsi untuk mengukur jarak menggunakan sensor ultrasonik
float measureDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return (duration * 0.034) / 2; // Menghitung jarak dari durasi pantulan
}
// Mengatur status LED berdasarkan jarak yang terukur
void setLEDs(float distance) {
if (distance > MEDIUM_THRESHOLD) {
// Jika jarak lebih dari MEDIUM_THRESHOLD, level rendah
digitalWrite(LED_LOW, HIGH); // Menyalakan LED level rendah
digitalWrite(LED_MEDIUM, LOW);
digitalWrite(LED_HIGH, LOW);
} else if (distance <= MEDIUM_THRESHOLD && distance > HIGH_THRESHOLD) {
// Jika jarak antara HIGH_THRESHOLD dan MEDIUM_THRESHOLD, level sedang
digitalWrite(LED_LOW, LOW);
digitalWrite(LED_MEDIUM, HIGH); // Menyalakan LED level sedang
digitalWrite(LED_HIGH, LOW);
} else {
// Jika jarak kurang dari atau sama dengan HIGH_THRESHOLD, level tinggi
digitalWrite(LED_LOW, LOW);
digitalWrite(LED_MEDIUM, LOW);
digitalWrite(LED_HIGH, HIGH); // Menyalakan LED level tinggi
}
}
// Fungsi setup untuk inisialisasi
void setup() {
pinMode(ECHO_PIN, INPUT); // Pin echo sebagai input
pinMode(TRIG_PIN, OUTPUT); // Pin trigger sebagai output
pinMode(LED_HIGH, OUTPUT); // LED level tinggi sebagai output
pinMode(LED_MEDIUM, OUTPUT); // LED level sedang sebagai output
pinMode(LED_LOW, OUTPUT); // LED level rendah sebagai output
}
// Fungsi loop utama untuk mengukur dan mengatur LED
void loop() {
float distance = measureDistance(); // Mengukur jarak
setLEDs(distance); // Mengatur status LED berdasarkan jarak
delay(500); // Memberi jeda singkat sebelum pengukuran berikutnya
}