#define BLYNK_TEMPLATE_ID "TMPL3fbS4LbBo"
#define BLYNK_TEMPLATE_NAME "HOME AUTOMATION"
#define BLYNK_AUTH_TOKEN "bfrxjZmU355OV-Q0qcWr-MF0Fu6ttW9H"
#include <ESP32Servo.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
const int TRIG_PIN = 4;
const int ECHO_PIN = 5;
const int SERVO_PIN = 13;
const int DISTANCE_THRESHOLD = 50;
const int SERVO_ON_ANGLE = 200;
const int SERVO_OFF_ANGLE = 0;
Servo servo;
float distance_cm = 0;
unsigned long servoMovedTime = 0;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
servo.attach(SERVO_PIN);
servo.write(SERVO_OFF_ANGLE); // Set initial servo position
delay(500); // Wait for servo to settle
}
void loop() {
Blynk.run();
timer.run();
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(5);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
distance_cm = duration * 0.034 / 2;
if (distance_cm < DISTANCE_THRESHOLD) {
servo.write(SERVO_ON_ANGLE);
servoMovedTime = millis();
} else {
if (millis() - servoMovedTime >= 7000) {
servo.write(SERVO_OFF_ANGLE);
}
}
}
BLYNK_WRITE(V7) {
int servoState = param.asInt();
if (servoState == HIGH) {
servo.write(SERVO_ON_ANGLE);
servoMovedTime = millis();
} else {
servo.write(SERVO_OFF_ANGLE);
}
}