#define BLYNK_TEMPLATE_ID "TMPL3iUF2ruQb"
#define BLYNK_TEMPLATE_NAME "Sahil Tiwari"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
// Blynk credentials
char auth[] = "DaVI--GeOxBWVFUp0kb6VsRPo3JUzA3g";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Define pins for PIR sensors and LEDs
#define PIR1_PIN 22
#define PIR2_PIN 23
#define PIR3_PIN 26
#define LED1_PIN 14
#define LED2_PIN 12
#define LED3_PIN 13
// LED timers
unsigned long led1Timer = 0;
unsigned long led2Timer = 0;
unsigned long led3Timer = 0;
const unsigned long ledDuration = 8000; // 0.5 seconds (500 ms)
// Variables to store LED states
bool led1State = false;
bool led2State = false;
bool led3State = false;
void setup() {
Serial.begin(115200);
// Initialize Wi-Fi and Blynk
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Blynk.begin(auth, ssid, pass);
// Initialize PIR sensor pins as inputs
pinMode(PIR1_PIN, INPUT);
pinMode(PIR2_PIN, INPUT);
pinMode(PIR3_PIN, INPUT);
// Initialize LED pins as outputs
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
// Turn off LEDs initially
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
}
// Function to control LEDs via Blynk app
BLYNK_WRITE(V11) {
led1State = param.asInt();
digitalWrite(LED1_PIN, led1State ? HIGH : LOW);
if (led1State) {
led1Timer = millis();
}
}
BLYNK_WRITE(V12) {
led2State = param.asInt();
digitalWrite(LED2_PIN, led2State ? HIGH : LOW);
if (led2State) {
led2Timer = millis();
}
}
BLYNK_WRITE(V13) {
led3State = param.asInt();
digitalWrite(LED3_PIN, led3State ? HIGH : LOW);
if (led3State) {
led3Timer = millis();
}
}
void loop() {
Blynk.run();
// Check PIR1
if (digitalRead(PIR1_PIN) == HIGH) {
digitalWrite(LED1_PIN, HIGH);
led1Timer = millis(); // Reset the timer
led1State = true;
}
// Check PIR2
if (digitalRead(PIR2_PIN) == HIGH) {
digitalWrite(LED2_PIN, HIGH);
led2Timer = millis(); // Reset the timer
led2State = true;
}
// Check PIR3
if (digitalRead(PIR3_PIN) == HIGH) {
digitalWrite(LED3_PIN, HIGH);
led3Timer = millis(); // Reset the timer
led3State = true;
}
// Turn off LEDs after 0.5 seconds
if (led1State && ((millis() - led1Timer) > ledDuration)) {
digitalWrite(LED1_PIN, LOW);
led1State = false;
}
if (led2State && ((millis() - led2Timer )> ledDuration)) {
digitalWrite(LED2_PIN, LOW);
led2State = false;
}
if (led3State && ((millis() - led3Timer) > ledDuration)) {
digitalWrite(LED3_PIN, LOW);
led3State = false;
}
}