#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define ECHO_PIN 1
#define TRIG_PIN 2
#define BUZZER 3
#define SOUND_SPEED 0.034 // Kecepatan suara dalam cm/us
long duration;
float distanceCm;
float distanceM;
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER, OUTPUT);
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Mengukur waktu pantulan
duration = pulseIn(ECHO_PIN, HIGH);
// Menghitung jarak dalam cm dan m
distanceCm = (duration * SOUND_SPEED / 2);
distanceM = distanceCm / 100;
// Tampilkan jarak di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kedalaman: ");
lcd.setCursor(11, 0);
lcd.print(distanceM, 2); // Menampilkan dua angka di belakang koma
lcd.setCursor(15, 0);
lcd.print("M");
// Menampilkan status dan mengontrol buzzer
lcd.setCursor(0, 1);
if (distanceM < 0.76) {
lcd.print("Status: Aman ");
noTone(BUZZER); // Matikan buzzer jika aman
}
else if (distanceM >= 0.76 && distanceM <= 1.50) {
lcd.print("Status: Waspada");
noTone(BUZZER); // Matikan buzzer jika waspada
}
else {
lcd.print("Status: Bahaya ");
tone(BUZZER, 100); // Frekuensi 1000 Hz
}
delay(1100); // Jeda sebelum pengukuran ulang
}