#include <LiquidCrystal_I2C.h>
#define pinBuzzer 5
#define pinEcho 6
#define pinTrig 7
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
Serial.begin(115200);
pinMode(pinBuzzer, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(pinTrig, OUTPUT);
lcd.begin(16,2);
lcd.backlight();
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Deteksi Benda");
}
int catat = 0;
void loop() {
int jarak = ukur_jarak();
//Serial.print(jarak);
if (jarak<25) {
tanda_bahaya();
delay(100);
} else if (jarak<50) {
tanda_peringatan();
delay(500);
} else if (jarak<150) {
tanda_peringatan_awal();
delay(1000);
} else {
tanda_aman();
}
if (catat!=jarak) {
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(jarak);
lcd.print(" cm");
catat = jarak;
}
}
float ukur_jarak() {
digitalWrite(pinTrig, LOW);
delayMicroseconds(2);
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);
digitalWrite(pinEcho, LOW);
int hasil = pulseIn(pinEcho, HIGH);
return hasil * 0.03425 / 2;
}
void tanda_bahaya() {
tone(pinBuzzer,500,100);
tone(pinBuzzer,750,200);
tone(pinBuzzer,600,100);
}
void tanda_peringatan() {
tone(pinBuzzer,700,100);
tone(pinBuzzer,1500,200);
tone(pinBuzzer,900,100);
}
void tanda_peringatan_awal() {
tone(pinBuzzer,1500,200);
}
void tanda_aman() {
noTone(pinBuzzer);
}