#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16,2);
const int trigPin = 2;
const int echoPin = 3;
const int LED1 = 4;
const int LED2 = 5;
const int LED3 = 6;
const int buzzerPin = 7;
int frekuensi = 250;
long durasi;
int jarak;
void setup() {
lcd.init();
lcd.clear();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("PROGRAM MULAI");
lcd.clear();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
lcd.clear();
lcd.setCursor(0, 0);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
durasi = pulseIn(echoPin, HIGH);
jarak = durasi * 0.034 / 2;
if (jarak > 60) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(buzzerPin, LOW);
lcd.setCursor(0, 0);
lcd.print("JARAK: ");
lcd.setCursor(7, 0);
lcd.print(jarak);
lcd.setCursor(12,0);
lcd.print("CM");
lcd.setCursor(0, 1);
lcd.print("BERBAHAYA");
noTone(buzzerPin);
} else if (jarak <= 60 && jarak >= 20) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(buzzerPin, LOW);
lcd.setCursor(0, 0);
lcd.print("JARAK: ");
lcd.setCursor(12, 0);
lcd.print(jarak);
lcd.print("CM");
lcd.setCursor(0, 1);
lcd.print("Waspada");
noTone(buzzerPin);
} else if (jarak < 20) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(buzzerPin, LOW);
lcd.setCursor(0, 0);
lcd.print("JARAK: ");
lcd.setCursor(7, 0);
lcd.print(jarak);
lcd.setCursor(12, 0);
lcd.print("CM");
lcd.setCursor(0, 1);
lcd.print("HATI-HATI");
tone(buzzerPin, 1000);
}
}