#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
#include <Wire.h>
int buzzer = 18;
#define TRIG 15
#define ECHO 2
#define lampumerah 0
#define lampukuning 4
#define lampuhijau 16
#define lampuungu 17
#define lampubiru 5
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
Wire.begin(22, 21);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("sensor HC-SR04");
lcd.setCursor(0, 1);
lcd.print("Dimulai....");
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(lampumerah, OUTPUT);
pinMode(lampukuning, OUTPUT);
pinMode(lampuhijau, OUTPUT);
pinMode(lampuungu, OUTPUT);
pinMode(lampubiru, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
float distance = duration * 0.034/2;
Serial.print("jarak");
Serial.print(distance);
Serial.println(".cm");
if (distance > 0 && distance < 50)
{
digitalWrite(lampumerah, HIGH);
digitalWrite(lampukuning, LOW);
digitalWrite(lampuhijau, LOW);
digitalWrite(lampuungu, LOW);
digitalWrite(lampubiru, LOW);
tone(buzzer, 256);
delay(200);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Status: Stop!!!");
}
else if (distance > 50 && distance < 100)
{
digitalWrite(lampumerah, HIGH);
digitalWrite(lampukuning, LOW);
digitalWrite(lampuhijau, LOW);
digitalWrite(lampuungu, LOW);
digitalWrite(lampubiru, LOW);
tone(buzzer, 256);
delay(500);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Status: Waspada!!");
}
else if (distance > 100 && distance < 150)
{
digitalWrite(lampukuning, HIGH);
digitalWrite(lampumerah, LOW);
digitalWrite(lampuhijau, LOW);
digitalWrite(lampuungu, LOW);
digitalWrite(lampubiru, LOW);
tone(buzzer, 297);
delay(600);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hati-Hati");
}
else if (distance > 150 && distance < 200)
{
digitalWrite(lampuhijau, HIGH);
digitalWrite(lampuungu, LOW);
digitalWrite(lampumerah, LOW);
digitalWrite(lampukuning, LOW);
digitalWrite(lampubiru, LOW);
tone(buzzer, 330);
delay(700);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Status: Ok");
}
else if (distance > 200 && distance < 250)
{
digitalWrite(lampuungu, HIGH);
digitalWrite(lampubiru, LOW);
digitalWrite(lampukuning, LOW);
digitalWrite(lampumerah, LOW);
digitalWrite(lampuhijau, LOW);
tone(buzzer, 352);
delay(800);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Status: Aman");
}
else if (distance > 250)
{
digitalWrite(lampubiru, HIGH);
digitalWrite(lampumerah, LOW);
digitalWrite(lampukuning, LOW);
digitalWrite(lampuhijau, LOW);
digitalWrite(lampuungu, LOW);
tone(buzzer, 396);
delay(1000);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Status: Tenang");
}
}