#include <LiquidCrystal_I2C.h> // Library LCD I2C
// Inisialisasi Sensor Ultrasonik
const int trigPin = 12;
const int echoPin = 13;
// Inisialisasi LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C, 16 karakter (kolom), 2 baris
// inisialisasi Buzzer
int melody = 800;
int durasiMelody = 500;
void setup() {
// inisialisasi pin buzzer
pinMode(7, OUTPUT);
// Inisialisasi pin trigPin dan echoPin untuk sensor ultrasonik
pinMode(trigPin, OUTPUT); // pin output sebagai trigger atau pemicu
pinMode(echoPin, INPUT); // pin untuk input atau menangkap data
// Inisialisasi LCD
lcd.init();
lcd.backlight();
Serial.begin(115200); // Inisialisasi serial monitor
}
void loop() {
long duration;
float jarakCm, jarakM;
// Mengirim sinyal trigger ke sensor ultrasonik
digitalWrite(trigPin, LOW); // memastikan sensor ultrasonik belum memancarkan gelombang
delayMicroseconds(2); // menunggu 2 mikrodetik
digitalWrite(trigPin, HIGH); // sensor ultrasonik memancarkan gelombang ultrasonik (aktif)
delayMicroseconds(10); // durasi pancaran
digitalWrite(trigPin, LOW); // menghentikan pancaran gelombang ultrasonik
// Membaca durasi pantulan gelombang ultrasonik
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak
jarakCm = (duration * 0.034 / 2); // Rumus jarak dalam cm
jarakM = jarakCm / 100; // Konversi jarak dari cm ke meter
// Cek apakah ada objek yang terdeteksi dalam jarak tertentu (misal 200 cm / 2 meter)
if (jarakCm < 200) {
// Menghasilkan suara buzzer saat objek terdeteksi
tone(7, melody, durasiMelody);
} else {
noTone(7);
}
// Menampilkan jarak pada LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak: ");
lcd.print(jarakCm);
lcd.print(" cm");
// Menampilkan jarak pada serial monitor
Serial.print("Jarak: ");
Serial.print(jarakCm);
Serial.print(" cm ");
Serial.print(jarakM);
Serial.println(" m");
delay(1000); // Tunggu 1 detik sebelum mengukur lagi
}