#define BLYNK_TEMPLATE_ID "TMPL6j1Nbht2P"
#define BLYNK_TEMPLATE_NAME "OnOff Led"
#define BLYNK_AUTH_TOKEN "KG78xQVv2iFT6ORZTyOud3WNy8bsdDub"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
#define ledPin 13
#define buttonPin 2
#define button2_vpin V2
BLYNK_CONNECTED() {
Serial.println("Connected to Blynk server.");
Blynk.syncVirtual(button2_vpin);
}
bool ledState = false;
bool lastButtonState = HIGH;
bool currentButtonState = HIGH;
BLYNK_WRITE(button2_vpin) {
ledState = param.asInt();
digitalWrite(ledPin, ledState ? HIGH : LOW);
Serial.print("LED State Updated from Blynk: ");
Serial.println(ledState ? "ON" : "OFF");
}
void btn() {
currentButtonState = digitalRead(buttonPin);
if (currentButtonState == LOW && lastButtonState == HIGH) {
ledState = !ledState;
digitalWrite(ledPin, ledState ? HIGH : LOW);
Serial.print("LED State Changed by Physical Button to: ");
Serial.println(ledState ? "ON" : "OFF");
Blynk.virtualWrite(button2_vpin, ledState);
}
lastButtonState = currentButtonState;
}
void checkConnection() {
if (!Blynk.connected()) {
Serial.println("Reconnecting to Blynk...");
Blynk.disconnect();
Blynk.connect();
}
}
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Starting ESP32 Blynk connection...");
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
digitalWrite(ledPin, ledState ? HIGH : LOW);
Serial.println("Pin modes set. Attempting to connect to WiFi and Blynk...");
Blynk.begin(auth, ssid, pass);
timer.setInterval(10000L, checkConnection);
}
void loop() {
Blynk.run();
timer.run();
btn();
}