#define BLYNK_PRINT Serial
/* Fill in information from Blynk Device Info here */
#define BLYNK_TEMPLATE_ID "TMPL6cZQPd1d3"
#define BLYNK_TEMPLATE_NAME "lab7"
#define BLYNK_AUTH_TOKEN "cu5ra-5u3RlyoxCLi2_2ZmPa8Z2By40O"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
BlynkTimer timer;
Servo servo;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
const int LED = 12, SERVO = 14, TRIG = 27, ECHO = 35; // Update these pins
int last_speed = 0, last_distance = 0, is_break = 0;
BLYNK_CONNECTED()
{
Blynk.syncAll();
}
BLYNK_WRITE(V0)
{
int value = param.asInt();
is_break = value;
if (value) {
servo.write(0);
Blynk.virtualWrite(V2, 0);
Blynk.syncVirtual(V2);
Serial.println("Break!");
} else {
servo.write(last_speed);
Blynk.virtualWrite(V2, last_speed);
Blynk.syncVirtual(V2);
Serial.println("Released!");
}
digitalWrite(LED, value);
}
BLYNK_WRITE(V2)
{
int value = param.asInt();
Serial.print("Speed: ");
Serial.println(value);
last_speed = value;
servo.write(value);
if (is_break && last_speed > 0) {
Blynk.syncVirtual(V0);
}
}
void scanObject()
{
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
int duration = pulseIn(ECHO, HIGH);
float cm = duration / 58.0;
Serial.print("Distance in CM: ");
Serial.println(cm);
last_distance = cm;
Blynk.virtualWrite(V1, cm);
if (cm < 100 && !is_break) {
Blynk.virtualWrite(V0, 1);
Blynk.syncVirtual(V0);
}
}
void setup()
{
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
servo.attach(SERVO);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, "blynk.cloud", 80);
timer.setInterval(200L, scanObject);
}
void loop()
{
Blynk.run();
timer.run();
}