#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigger = 9;
const int echo = 10;
const int buzzer = 11;
const int ledm = 13;
const int ledk = 4;
const int ledh = 3;
void setup() {
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(ledm, OUTPUT);
pinMode(ledk, OUTPUT);
pinMode(ledh, OUTPUT);
Serial.begin(9600);
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on the backlight
}
void buzzer_dangkal(){
tone(buzzer, 200);
delay(500);
tone(buzzer, 200);
delay(500);
tone(buzzer, 200);
delay(500);
noTone(buzzer);
}
void buzzer_cukup(){
tone(buzzer, 100);
delay(500);
tone(buzzer, 100);
delay(500);
tone(buzzer, 100);
delay(500);
noTone(buzzer);
}
void buzzer_waspada(){
tone(buzzer, 500);
delay(500);
tone(buzzer, 500);
delay(500);
tone(buzzer, 500);
delay(500);
noTone(buzzer);
}
void buzzer_bahaya(){
tone(buzzer, 1000);
delay(500);
tone(buzzer, 1000);
delay(500);
tone(buzzer, 1000);
delay(500);
noTone(buzzer);
}
void loop() {
digitalWrite(trigger, LOW);
delayMicroseconds(5);
digitalWrite(trigger, HIGH);
delayMicroseconds(13);
digitalWrite(trigger, LOW);
long duration = pulseIn(echo, HIGH);
long kedalaman = (duration * 0.0343) / 2;
lcd.setCursor(0, 0);
lcd.print("Kedalaman: ");
lcd.print(kedalaman);
lcd.print("cm");
lcd.setCursor(0, 1);
lcd.print("Status: ");
if(kedalaman > 100){
digitalWrite(ledh, LOW);
digitalWrite(ledk, LOW);
digitalWrite(ledm, HIGH);
}
else if(kedalaman < 100 && kedalaman > 50){
digitalWrite(ledh, LOW);
digitalWrite(ledk, HIGH);
digitalWrite(ledm, LOW);
}
else if(kedalaman < 50 && kedalaman > 20){
digitalWrite(ledk, LOW);
digitalWrite(ledh, HIGH);
digitalWrite(ledm, LOW);
lcd.setCursor(8, 1);
lcd.print("Dangkal ");
buzzer_dangkal();
delay(100);
}
else if(kedalaman <=20){
digitalWrite(ledk, LOW);
digitalWrite(ledh, LOW );
digitalWrite(ledm, LOW);
}
}