#include <LiquidCrystal_I2C.h>
#define trigpin 10
#define echopin 11
#define ledR 6
#define ledY 5
#define ledG 4
#define Buzzer 9
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);
}
void kondisi_bahaya(){
digitalWrite(ledR, HIGH);
delay(500);
digitalWrite(ledR, LOW);
delay(200);
}
void setup() {
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
pinMode(ledR, OUTPUT);
pinMode(ledY, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(Buzzer, OUTPUT);
lcd.init();
lcd.backlight();
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 Aaman");
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);
mengukur_jarak();
}