#define BLYNK_TEMPLATE_ID "TMPL20eDU4lWz"
#define BLYNK_TEMPLATE_NAME "devises 2"
#define BLYNK_AUTH_TOKEN "5ViRLreFL2ewIEnLrZ6ISIHl5OWzu6Ni"
bool fetch_blynk_state = true; //true or false
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define LED_PIN 4
#define BUTTON_PIN 0 // LED switch pin connected to digital pin 26
bool ledState = LOW;
bool buttonPressed = false;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 10;
// Variables for relay and motor control
#define wifiLed 2 //D2
int wifiFlag = 0;
WidgetLCD lcd(V0);
char auth[] = BLYNK_AUTH_TOKEN;
BlynkTimer timer;
void checkButton() {
int reading = digitalRead(BUTTON_PIN);
if (reading == LOW && !buttonPressed) {
buttonPressed = true;
ledState = !ledState;
digitalWrite(LED_PIN, ledState);
Blynk.virtualWrite(V1, ledState);
lastDebounceTime = millis();
}
if (reading == HIGH && buttonPressed && (millis() - lastDebounceTime > debounceDelay)) {
buttonPressed = false;
}
}
BLYNK_WRITE(V1) {
ledState = param.asInt();
digitalWrite(LED_PIN, ledState);
}
void checkBlynkStatus()
{ // called every 3 seconds by SimpleTimer
bool isconnected = Blynk.connected();
if (isconnected == false)
{
wifiFlag = 1;
Serial.println("Blynk Not Connected");
digitalWrite(wifiLed, LOW);
}
if (isconnected == true)
{
wifiFlag = 0;
if (!fetch_blynk_state)
{
Blynk.virtualWrite(LED_PIN,ledState);
}
digitalWrite(wifiLed, HIGH);
Serial.println("Blynk Connected");
}
}
BLYNK_CONNECTED()
{
// Request the latest state from the server
if (fetch_blynk_state)
{
Blynk.syncVirtual(BUTTON_PIN);
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(wifiLed, OUTPUT);
WiFi.begin(ssid, pass);
timer.setInterval(2000L, checkBlynkStatus); // check if Blynk server is connected every 2 seconds
Blynk.config(auth);
timer.setInterval(15L, checkButton);
timer.setInterval(10L, updateLCD); // Update LCD every 2 seconds
}
void loop() {
Blynk.run();
timer.run();
}
void updateLCD() {
if (ledState) {
lcd.print(0, 0,"LED ON");
} else {
lcd.print(0, 0,"LED OFF");
}
}