//#define WOKWI_SIMULATION
//#ifdef WOKWI_SIMULATION
//#include <Arduino.h>
//#else
//#define BLYNK_TEMPLATE_ID "TMPL3rK8_6WUV"
//#define BLYNK_TEMPLATE_NAME "LED Blink"
//#define BLYNK_AUTH_TOKEN "Wc1uFUswL_OsyYSZwqEkJ8-ryh-0lBpz"
#define BLYNK_TEMPLATE_NAME "VR NAVIGATION MODEL FOR VISUALLY IMPAIRED"
#define BLYNK_AUTH_TOKEN "X7GREpXeilOXpQ8CZS2RlujYNkGyPKfP"
#define BLYNK_TEMPLATE_ID "TMPL3oPA-6a8V"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
//#include <Simpletimer.h>
//#endif
#define TRIG_PIN 12
#define ECHO_PIN 13
#define BUZZER_PIN 14
//#ifndef WOKWI_SIMULATION
char auth[] = "X7GREpXeilOXpQ8CZS2RlujYNkGyPKfP";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
//#endif
long distance;
void sendDistanceToBlynk() {
//#ifndef WOKWI_SIMULATION
// Ensure distance is within the range 1 to 50 cm
distance = constrain(distance, 1, 50);
Blynk.virtualWrite(V2, distance);
//#endif
}
void setup() {
Serial.begin(115200);
Serial.println("Starting...");
//#ifdef WOKWI_SIMULATION
Serial.println("Wokwi simulation started");
//#else
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
Serial.println("Connecting to Blynk...");
Blynk.begin(auth, ssid, pass); // Initialize Blynk connection
while (!Blynk.connect()) {
Serial.println("Retrying Blynk connection...");
delay(1000);
}
Serial.println("Blynk connected");
timer.setInterval(1000L, sendDistanceToBlynk); // Update Blynk every second
//#endif
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
//#ifndef WOKWI_SIMULATION
Blynk.run();
//timer.run();
//#endif
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
//#ifdef WOKWI_SIMULATION
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
//#endif
if (distance < 50) {
tone(BUZZER_PIN, 1000);
delay(1000);
} else {
noTone(BUZZER_PIN);
delay(1000);
}
delay(100);
}