// 1. Identitas Blynk
#define BLYNK_TEMPLATE_ID "TMPL6dVXwuhpd"
#define BLYNK_TEMPLATE_NAME "IOT Sensor Jarak"
#define BLYNK_AUTH_TOKEN "reyd5rn4nMnTd-BvX4hCrdWJUks-AHt5"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
// 2. Konfigurasi WiFi & Sensor
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
//3. Pin ESP32 yang digunakan
LiquidCrystal_I2C lcd (0x27, 16, 2);
int echoPin = 12;
int trigPin = 13;
int ledM = 15;
int ledK = 16;
int ledH = 4;
BlynkTimer timer;
void cekjarak(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long durasi = pulseIn(echoPin,HIGH);
int jarak = durasi * 0.0343/2;
String status;
if(jarak < 50 ){
digitalWrite(ledM, HIGH);
digitalWrite(ledK, LOW);
digitalWrite(ledH, LOW);
status = "Terlalu dekat";
Blynk.virtualWrite(V2, 255);
Blynk.virtualWrite(V3, 0);
Blynk.virtualWrite(V4, 0);
}else if(jarak < 100 ){
digitalWrite(ledM, LOW);
digitalWrite(ledK, HIGH);
digitalWrite(ledH, LOW);
status = "Masih Jauh";
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 255);
Blynk.virtualWrite(V4, 0);
} else{
digitalWrite(ledM, LOW);
digitalWrite(ledK, LOW);
digitalWrite(ledH, HIGH);
status = "Aman ";
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 0);
Blynk.virtualWrite(V4, 255);
}
lcd.setCursor (0,0);
lcd.print("jarak:");
lcd.print(jarak);
lcd.print("Cm");
lcd.setCursor (0,1);
lcd.print("status:");
lcd.print(status);
delay(500);
Blynk.virtualWrite(V0, jarak);
Blynk.virtualWrite(V1, status);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
lcd.init();
lcd.clear();
lcd.backlight();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledM, OUTPUT);
pinMode(ledK, OUTPUT);
pinMode(ledH, OUTPUT);
Blynk.begin(auth, ssid, pass);
timer.setInterval(500L, cekjarak);
}
void loop() {
Blynk.run();
timer.run();
}