#include <LiquidCrystal_I2C.h>
#define trigPin 8 // set pin Trig pada pin 8 Arduino
#define echoPin 7 // set pin Echo pada pin 7 Arduino
#define ledR 12 // set pin Led Merah pada pin 12 Arduino
#define ledY 11 // set pin Led Kuning pada pin 11 Arduino
#define ledG 10 // set pin Led Hijau pada pin 10 Arduino
#define Buzzer 9 // set pin positif Buzzer pada pin 9 Arduino
LiquidCrystal_I2C lcd (0x27, 16,2);
float mengukur_jarak(){
digitalWrite(trigPin, HIGH);
delayMicroseconds (10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration/58;
return distance;
}
void kondisi_aman(){
digitalWrite(ledG, HIGH);
}
void kondisi_hati(){
digitalWrite(ledY, HIGH);
delay(500);
digitalWrite(ledY, LOW);
delay(500);
}
void kondisi_bahaya(){
digitalWrite(ledR, HIGH);
delay(500);
digitalWrite(ledR, LOW);
delay(200);
}
void setup() {
// deklarasi mode pin yang digunakan
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledR, OUTPUT);
pinMode(ledY, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(Buzzer, OUTPUT);
// memulai lcd dengan fungsi bawaan library I2C
lcd.init();
lcd.backlight(); // setting lampu lcd agar menyala
digitalWrite(trigPin, LOW);
delayMicroseconds (2);
}
void loop() {
lcd.clear();
digitalWrite(ledR, LOW);
digitalWrite(ledY, LOW);
digitalWrite(ledG, LOW);
digitalWrite(Buzzer, LOW);
float jarak_terukur = mengukur_jarak();
if (jarak_terukur >= 100) {
lcd.setCursor(0,0);
lcd.print("Jarak Aman");
kondisi_aman();
}
else if (jarak_terukur < 100 && jarak_terukur >= 50) {
lcd.setCursor(0,0);
lcd.print("Jarak: ");
lcd.print(jarak_terukur);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("Hati-Hati");
kondisi_hati();
}
else{
lcd.setCursor(0,0);
lcd.print("Jarak: ");
lcd.print(jarak_terukur);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("BAHAYA");
kondisi_bahaya();
}
delay(500);}