#include <LiquidCrystal_I2C.h>
#define ECHO_PIN 2
#define TRIG_PIN 3
#define buzzer 4
#define ledmerah 13
#define ledkuning 12
#define ledhijau 11
#define ledputih 10
#define ledbiru 9
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
pinMode(ledmerah, OUTPUT);
pinMode(ledkuning, OUTPUT);
pinMode(ledhijau, OUTPUT);
pinMode(ledputih, OUTPUT);
pinMode(ledbiru, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
digitalWrite(ledmerah, HIGH);
digitalWrite(ledkuning, HIGH);
digitalWrite(ledhijau, HIGH);
digitalWrite(ledputih, HIGH);
digitalWrite(ledbiru, HIGH);
tone(4,300,500);
lcd.setCursor(0,0);
lcd.print(" PngkrPntuAirDpk");
lcd.setCursor(5,1);
lcd.print("oleh");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Tio Andrew");
lcd.setCursor(0,1);
lcd.print(" Univ Siber Asia");
delay(3000);
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
digitalWrite(ledputih, LOW);
digitalWrite(ledbiru, LOW);
digitalWrite(buzzer, LOW);
lcd.clear();
}
float kedalaman() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int durasi = pulseIn(ECHO_PIN, HIGH);
return 400-durasi * 0.034 / 2;
}
void updateDisplay(int kdlm, int status) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kdlmn :");
lcd.setCursor(7, 0);
lcd.print(kdlm);
lcd.setCursor(14, 0);
lcd.print("cm");
lcd.setCursor(0, 1);
lcd.print("Status :");
lcd.setCursor(9, 1);
switch (status) {
case 5:
lcd.print("Siaga 4");
digitalWrite(ledmerah, HIGH);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
digitalWrite(ledputih, LOW);
digitalWrite(ledbiru, LOW);
tone(4, 800, 1000);
delay(1000);
break;
case 4:
lcd.print("Siaga 3");
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, HIGH);
digitalWrite(ledhijau, LOW);
digitalWrite(ledputih, LOW);
digitalWrite(ledbiru, LOW);
delay(1000);
break;
case 3:
lcd.print("Siaga 2");
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, HIGH);
digitalWrite(ledputih, LOW);
digitalWrite(ledbiru, LOW);
delay(1000);
break;
case 2:
lcd.print("Siaga 1");
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
digitalWrite(ledputih, HIGH);
digitalWrite(ledbiru, LOW);
delay(1000);
break;
default:
lcd.print("Aman");
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
digitalWrite(ledputih, LOW);
digitalWrite(ledbiru, HIGH);
delay(1000);
break;
}
lcd.clear();
delay(100);
}
void loop() {
float kdlm = kedalaman();
if (kdlm > 370) {
updateDisplay(kdlm, 5);
} else if (kdlm >= 320 && kdlm < 370) {
updateDisplay(kdlm, 4);
} else if (kdlm >= 270 && kdlm < 320) {
updateDisplay(kdlm, 3);
} else if (kdlm >= 220 && kdlm < 270) {
updateDisplay(kdlm, 2);
} else {
updateDisplay(kdlm, 1);
}
}