#include <LiquidCrystal_I2C.h> // masukkan kode i2c dari library arduino
LiquidCrystal_I2C lcd(0x27, 16, 2); // masukkan dan atur alamat lcd, dan ukuran lcd
#define triggerpin 7 //mendefinisikan pin 7 arduino sebagai output dari trigger ultrasonik
#define echopin 6 // mendefinisikan pin 6 arduino sebagai input echopin dari ultrasonik
#define buzzer 11 //mendefinisikan pinn 11 arduino sebagai output buzzer
#define ledmerah 10 // mendefinisikan pin 10 arduino sebagai output led merah
#define ledkuning 9 // mendefinisikan pin 9 arduino sebagai output led kuning
#define ledhijau 8 // mendefinisikan pin 8 arduino sebagai output led hijau
int volume = 250; // nilai variabel volume dari buzzer
void setup() {
lcd.init(); // inisialisasi lcd
lcd.backlight(); // atur backlight pada lcd
Serial.begin(9600); // serial begin 9600
pinMode(triggerpin, OUTPUT); // atur triggerpin sebagai output
pinMode(echopin, INPUT); // atur echopin sebagai input
pinMode(ledmerah, OUTPUT); // atur led merah sebagai output
pinMode(ledkuning, OUTPUT); // atur led kuning sebgai output
pinMode(ledhijau, OUTPUT); // atur led hijau sebagai output
}
void loop() {
long durasi, jarak; // nilai variabel durasi dan jarak
digitalWrite(triggerpin, LOW); // nonaktifkan triggerpin ultrasonic
delay(20); // delay selama 20ms
digitalWrite(triggerpin, HIGH); // aktifkan triggerpin ultrasonic
delay(20); // delay selama 20ms
digitalWrite(triggerpin, LOW); // nonaktifkan triggeroin ultrasonic
durasi = pulseIn(echopin, HIGH); //
jarak = (durasi/2) / 29.1;
if (jarak <= 150){ // jika jarak kurang dari sama dengan 150
digitalWrite(ledhijau, HIGH); // aktifkan led hijau
volume = 150; //dengan volume buzzer sebesar 150
}
else {
digitalWrite(ledhijau, LOW); // jika tidak nonaktifkan led hijau
}
if (jarak <= 100){ // jika jarak kurang dari sama dengan 100
digitalWrite(ledkuning, HIGH); // aktifkan led kuning
volume = 200; // dengan volume buzzer sebesar 200
}
else {
digitalWrite(ledkuning, LOW); // jika tidak nonaktifkan led kuning
}
if (jarak <= 50){ // jika jarak kurang dari sama dengan 50
digitalWrite(ledmerah, HIGH); //aktifkan led merah
volume = 250; // dengan volume buzzer sebesar 250 atau maksimum
}
else {
digitalWrite(ledmerah, LOW); // jika tidak nonaktifkan led merah
}
if (jarak > 150){ // jika jarak lebih dari 150
lcd.print(" Tak Terdefinisi"); // cetak di lcd "Tak terdefinisi"
Serial.println("Jarak Tak Terdefinisi"); // cetak di serial monitor "Jarak Tak Terdefinisi"
noTone(buzzer); // nonaktifkan buzzer
}
else { // jika tidak
Serial.print(jarak); // cetak jarak di serial monitor
Serial.println(" cm"); // cetak "cm" di serial monitor
tone(buzzer, volume); // aktifkan buzzer sesuai volume
lcd.setCursor(0, 0); // atur cursor led di 0,0
lcd.print("Jarak : "); // cetak jarak di lcd
lcd.print(jarak); // cetak kata "jarak" di lcd
lcd.print(" cm"); // cetak kata "cm" di lcd
lcd.setCursor(0, 1); // atur cursor lcd di 0,1
lcd.print("by : Hudzaifi"); // cetak kata "by : Hudzaifi" di lcd
}
delay(500); // delay selama 500ms
}