#define BLYNK_TEMPLATE_ID "TMPL6lu51z5v5"
#define BLYNK_TEMPLATE_NAME "mainan"
#define BLYNK_AUTH_TOKEN "U1CcWm-YVlhEzXa7JngkAuH-4umULYMj"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
char auth[] = "U1CcWm-YVlhEzXa7JngkAuH-4umULYMj";
const int ledPin = 2;
const int buzzerPin = 4;
const int trigPin = 17;
const int echoPin = 5;
bool programRunning = false;
LiquidCrystal lcd(12, 14, 27, 26, 25, 33); // Adjust pin numbers based on your LCD wiring
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
Serial.println();
Blynk.begin(auth, ssid, pass);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance:");
}
void loop() {
Blynk.run();
if (programRunning) {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Blynk.virtualWrite(V2, distance);
Blynk.virtualWrite(V3, digitalRead(buzzerPin));
Blynk.virtualWrite(V4, digitalRead(ledPin));
lcd.setCursor(0, 1);
lcd.print(" "); // Clear the previous distance value
lcd.setCursor(0, 1);
lcd.print("Dist: " + String(distance) + " cm");
if (distance < 150) {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
lcd.setCursor(0, 0);
lcd.print("PENCEROBOH!!! ");
} else {
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
lcd.setCursor(0, 0);
lcd.print("SELAMAT ");
}
delay(500);
}
}
BLYNK_WRITE(V1) {
int switchState = param.asInt();
if (switchState == 1) {
// Start the program
programRunning = true;
} else {
// Stop the program
programRunning = false;
// Turn off LED, Buzzer, and clear LCD when the program stops
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance:");
}
}