#define BLYNK_TEMPLATE_ID "TMPL3qBa0YpH8"
#define BLYNK_TEMPLATE_NAME "exp7"
#define BLYNK_AUTH_TOKEN "K4j1L7XeOekk-k13C5zsjTEHnywkAznM"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
int relay1 = 23;
const int motionsensor = 14;
int pinStateCurrent = LOW;
int pinStatePrevious = LOW;
BlynkTimer timer;
BLYNK_CONNECTED() {
Blynk.syncVirtual(V0);
Blynk.syncVirtual(V1);
}
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(motionsensor, INPUT);
pinMode(relay1, OUTPUT);
}
void blinkLED(int pin, int times, int delayMs) {
for (int i = 0; i < times; i++) {
digitalWrite(pin, HIGH);
Blynk.virtualWrite(V0, 255); // Turn Blynk LED on
delay(delayMs);
digitalWrite(pin, LOW);
Blynk.virtualWrite(V0, 0); // Turn Blynk LED off
delay(delayMs);
}
}
void loop() {
Blynk.run();
timer.run();
pinStatePrevious = pinStateCurrent;
pinStateCurrent = digitalRead(motionsensor);
if (pinStatePrevious == LOW && pinStateCurrent == HIGH) {
Blynk.logEvent("alarm_system");
Serial.println("Motion detected!");
blinkLED(relay1, 3, 500); // Blink both LEDs 3 times with a 500ms interval
Blynk.virtualWrite(V1, "Motion Detected");
} else if (pinStatePrevious == HIGH && pinStateCurrent == LOW) {
Serial.println("Motion stopped!");
digitalWrite(relay1, LOW);
Blynk.virtualWrite(V0, 0); // Ensure Blynk LED is off
Blynk.virtualWrite(V1, "Motion Stopped");
}
}