#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define trigPin 5 // Pin trigger sensor HC-SR04
#define echoPin 18 // Pin echo sensor HC-SR04
#define greenLedPin 4// Pin untuk LED hijau
#define yellowLedPin1 2 // Pin untuk LED kuning 1
#define yellowLedPin2 2 // Pin untuk LED kuning 2
#define redLedPin 15// Pin untuk LED merah
LiquidCrystal_I2C lcd(0x27, 20, 4); // Alamat I2C LCD 20x4
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(yellowLedPin1, OUTPUT);
pinMode(yellowLedPin2, OUTPUT);
pinMode(redLedPin, OUTPUT);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
lcd.setCursor(0,0);
lcd.print("SENSOR BANJIR");
lcd.setCursor(0,1);
lcd.print("POLJAN CIPARAY");
lcd.setCursor(0,2);
lcd.print("CITARUM");
lcd.setCursor(0,3);
lcd.print("STATUS: "); // Status akan diganti
}
void loop() {
long duration, distance;
// Mengirimkan pulsa ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menerima waktu yang diperlukan untuk kembaliannya
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak berdasarkan waktu yang dibutuhkan
distance = duration * 0.034 / 2;
// Menggambarkan status berdasarkan jarak
if (distance >= 180) {
lcd.setCursor(8, 3);
lcd.print("AMAN");
digitalWrite(greenLedPin, HIGH);
digitalWrite(yellowLedPin1, LOW);
digitalWrite(yellowLedPin2, LOW);
digitalWrite(redLedPin, LOW);
} else if (distance >= 150 && distance < 180) {
lcd.setCursor(8, 3);
lcd.print("SIAGA 1");
digitalWrite(greenLedPin, LOW);
digitalWrite(yellowLedPin1, HIGH);
digitalWrite(yellowLedPin2, LOW);
digitalWrite(redLedPin, LOW);
} else if (distance >= 120 && distance < 150) {
lcd.setCursor(8, 3);
lcd.print("SIAGA 2");
digitalWrite(greenLedPin, LOW);
digitalWrite(yellowLedPin1, HIGH); // Mengaktifkan LED kuning 1
digitalWrite(yellowLedPin2, HIGH); // Mengaktifkan LED kuning 2
digitalWrite(redLedPin, LOW);
} else {
lcd.setCursor(8, 3);
lcd.print("SIAGA 3");
digitalWrite(greenLedPin, LOW);
digitalWrite(yellowLedPin1, LOW);
digitalWrite(yellowLedPin2, LOW);
digitalWrite(redLedPin, HIGH);
}
delay(1000); // Memberi jeda 1 detik antar pembacaan
}