// ———— Blynk credentials ————
#define BLYNK_TEMPLATE_ID "TMPL29ZriYpNi"
#define BLYNK_TEMPLATE_NAME "TrafficLightESP32"
#define BLYNK_AUTH_TOKEN "v1Ep0O1VP4CqQD63FYdsIs3W-vR5PEIc"
// ———— Wi-Fi (Wokwi sim) ————
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// ———— Includes ————
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Blynk/BlynkTimer.h> // ← correct path to BlynkTimer.h
// ———— Pins & Timer handles ————
const int greenPin = 2;
const int yellowPin = 4;
const int redPin = 5;
BlynkTimer timer;
int tGreen, tYellow, tRed;
// ———— Light‐on functions ————
void greenOn() {
digitalWrite(greenPin, HIGH);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, LOW);
}
void yellowOn() {
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, HIGH);
digitalWrite(redPin, LOW);
}
void redOn() {
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, HIGH);
}
// ———— Start/Stop handler for V4 ————
BLYNK_WRITE(V4) {
if (param.asInt()) {
greenOn();
timer.enable(tGreen);
timer.enable(tYellow);
timer.enable(tRed);
} else {
timer.disable(tGreen);
timer.disable(tYellow);
timer.disable(tRed);
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, LOW);
}
}
void setup() {
Serial.begin(115200);
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(redPin, OUTPUT);
// Connect to Blynk.Cloud
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Create but disable your cycle timers:
tGreen = timer.setInterval(6500L, greenOn);
tYellow = timer.setInterval(13000L, yellowOn);
tRed = timer.setInterval(19500L, redOn);
timer.disable(tGreen);
timer.disable(tYellow);
timer.disable(tRed);
}
void loop() {
Blynk.run();
timer.run();
}