#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define ECHO_PIN 2
#define TRIG_PIN 3
#define ledMerah 11
#define ledKuning 12
#define ledHijau 13
void setup(){
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledHijau, OUTPUT);
}
float readDistanceCM(){
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;
}
void loop(){
float distance = readDistanceCM();
Serial.print("Measured distance: ");
Serial.print(readDistanceCM());
Serial.println(" cm");
if (distance >= 100){
digitalWrite(ledHijau,HIGH);
digitalWrite(ledMerah,LOW);
digitalWrite(ledKuning,LOW);
lcd.setCursor(0, 0);
lcd.print("Jarak air:");
lcd.print(readDistanceCM());
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" AMAN ");
lcd.print(" ");
}
else if ((distance >= 50) && (distance < 100)){
digitalWrite(ledKuning,HIGH);
digitalWrite(ledMerah,LOW);
digitalWrite(ledHijau,LOW);
lcd.setCursor(0, 0);
lcd.print("Jarak air:");
lcd.print(readDistanceCM());
lcd.print(" ");
lcd.setCursor(3, 1);
lcd.print("Hati2 Banjir");
lcd.print(" ");
}
else if(distance < 50){
digitalWrite(ledMerah,HIGH);
digitalWrite(ledHijau,LOW);
digitalWrite(ledKuning,LOW);
lcd.setCursor(0, 0);
lcd.print("Jarak air:");
lcd.print(readDistanceCM());
lcd.print(" ");
lcd.setCursor(1, 1);
lcd.print("Bahaya Banjir");
lcd.print(" ");
delay(1000);
lcd.setCursor(1, 1);
lcd.print("Segera Evakuasi");
delay(1000);
lcd.print(" ");
}
}