#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL3ulohk-WI"
#define BLYNK_TEMPLATE_NAME "ServoSenseBlynk"
#define BLYNK_AUTH_TOKEN "BTdLJWZxFfUhtOo9JsVzFTZ-enqiTR-8"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define TRIGGER_PIN 2
#define ECHO_PIN 4
#define SERVO_PIN 13
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
int servoPos = 0;
int servoIncrement = 1;
int maxServoPos = 180;
int minServoPos = 0;
void setup() {
Serial.begin(9600); // Initialize serial port for debugging
Blynk.begin(auth, ssid, pass);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
ledcSetup(0, 50, 16);
ledcAttachPin(SERVO_PIN, 0);
timer.setInterval(1000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensorData() {
long duration, distance;
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Blynk.virtualWrite(V1, distance);
// Control the servo motor based on the distance
if (distance < 10) {
servoIncrement = 1;
} else if (distance > 50) {
servoIncrement = -1;
}
servoPos += servoIncrement;
servoPos = constrain(servoPos, minServoPos, maxServoPos);
// Move the servo motor
ledcWrite(0, servoPos);
// Print servo position to Serial Monitor
Serial.print("Servo Position: ");
Serial.println(servoPos);
}