#define BLYNK_TEMPLATE_ID "TMPL3S-CRZpDb"
#define BLYNK_TEMPLATE_NAME "virtual reality navigation"
#define BLYNK_AUTH_TOKEN "t75ZG9sv6zSWmofgSK_o1eGVbwOIiN-h"
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "t75ZG9sv6zSWmofgSK_o1eGVbwOIiN-h";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define TRIG_PIN 12
#define ECHO_PIN 14
#define BUZZER_PIN 26
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;
int distance = 0;
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
// Initialize LCD
lcd.init();
lcd.backlight();
// Setup a function to be called every 1 second
timer.setInterval(1000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
}
BLYNK_WRITE(V1) {
int pinValue = param.asInt();
if (pinValue == 1) {
// Activate buzzer
tone(BUZZER_PIN, 1000);
} else {
// Deactivate buzzer
noTone(BUZZER_PIN);
}
}
void sendSensorData() {
long duration;
// Trigger ultrasonic sensor
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Measure echo duration
duration = pulseIn(ECHO_PIN, HIGH);
// Calculate distance
distance = duration * 0.034 / 2;
// Display distance on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");
// Send distance value to Blynk app
Blynk.virtualWrite(V5, distance);
}