#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// Sensor ultrasonik
#define trigPin 22
#define echoPin 23
// LED
#define redLedPin 26
#define yellowLedPin 27
#define greenLedPin 14 // GPIO14 for LED Hijau
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Variabel untuk mengukur jarak dan tinggi air
long duration;
int distance;
int waterLevelDanger = 20; // Tinggi air level bahaya
int waterLevelMedium = 15; // Tinggi air untuk level sedang
void setup() {
Wire.begin(); // Inisialisasi I2C
lcd.init(); // Inisialisasi LCD
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Monitoring Banjir");
pinMode(trigPin, OUTPUT); // Mengatur pin trigPin sebagai output
pinMode(echoPin, INPUT); // Mengatur pin echoPin sebagai input
pinMode(redLedPin, OUTPUT); // Mengatur pin redLedPin sebagai output
pinMode(yellowLedPin, OUTPUT); // Mengatur pin yellowLedPin sebagai output
pinMode(greenLedPin, OUTPUT); // Mengatur pin greenLedPin sebagai output
Serial.begin(9600); // Inisialisasi komunikasi serial
}
void loop() {
// Mengirim sinyal ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menerima echo dan menghitung jarak
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// Menampilkan jarak di LCD
lcd.setCursor(0, 1);
lcd.print("Tinggi Air: ");
lcd.print(distance);
lcd.print(" cm ");
// Memeriksa level air dan mengontrol LED berdasarkan tinggi air
if (distance >= waterLevelDanger) {
digitalWrite(redLedPin, HIGH); // LED Merah menyala
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
lcd.setCursor(0, 0);
lcd.print("Peringatan!");
} else if (distance >= waterLevelMedium) {
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, HIGH); // LED Kuning menyala
digitalWrite(greenLedPin, LOW);
lcd.setCursor(0, 0);
lcd.print("Tinggi Air Sedang");
} else {
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, HIGH); // LED Hijau menyala
lcd.setCursor(0, 0);
lcd.print("Pengukuran Ketinggian Air atau Waduk");
}
delay(1000);
}