#define BLYNK_TEMPLATE_ID "TMPL3AHdxt8qe"
#define BLYNK_TEMPLATE_NAME "smart traffic management"
#define BLYNK_AUTH_TOKEN "tuzIATIOLV_O3I1l5KMpW7oxtojbbuyn"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Your WiFi credentials
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Define the GPIO pins for each traffic light
#define NORTH_RED_PIN 0
#define NORTH_YELLOW_PIN 1
#define NORTH_GREEN_PIN 2
#define SOUTH_RED_PIN 3
#define SOUTH_YELLOW_PIN 4
#define SOUTH_GREEN_PIN 5
#define WEST_RED_PIN 6
#define WEST_YELLOW_PIN 7
#define WEST_GREEN_PIN 8
#define EAST_RED_PIN 9
#define EAST_YELLOW_PIN 10
#define EAST_GREEN_PIN 11
bool trafficLightsOn = false;
// Function to control traffic lights
void controlTrafficLights() {
if (trafficLightsOn) {
// Set all lights to red
digitalWrite(NORTH_RED_PIN, HIGH);
digitalWrite(NORTH_YELLOW_PIN, LOW);
digitalWrite(NORTH_GREEN_PIN, LOW);
digitalWrite(SOUTH_RED_PIN, HIGH);
digitalWrite(SOUTH_YELLOW_PIN, LOW);
digitalWrite(SOUTH_GREEN_PIN, LOW);
digitalWrite(WEST_RED_PIN, HIGH);
digitalWrite(WEST_YELLOW_PIN, LOW);
digitalWrite(WEST_GREEN_PIN, LOW);
digitalWrite(EAST_RED_PIN, HIGH);
digitalWrite(EAST_YELLOW_PIN, LOW);
digitalWrite(EAST_GREEN_PIN, LOW);
// Simulate traffic light control logic here
delay(5000); // example delay, change as needed
// Example of changing lights
digitalWrite(NORTH_RED_PIN, LOW);
digitalWrite(NORTH_GREEN_PIN, HIGH);
delay(5000);
digitalWrite(NORTH_GREEN_PIN, LOW);
digitalWrite(NORTH_YELLOW_PIN, HIGH);
delay(2000);
digitalWrite(NORTH_YELLOW_PIN, LOW);
digitalWrite(NORTH_RED_PIN, HIGH);
// Add other light control logic as needed
} else {
// Turn off all lights
digitalWrite(NORTH_RED_PIN, LOW);
digitalWrite(NORTH_YELLOW_PIN, LOW);
digitalWrite(NORTH_GREEN_PIN, LOW);
digitalWrite(SOUTH_RED_PIN, LOW);
digitalWrite(SOUTH_YELLOW_PIN, LOW);
digitalWrite(SOUTH_GREEN_PIN, LOW);
digitalWrite(WEST_RED_PIN, LOW);
digitalWrite(WEST_YELLOW_PIN, LOW);
digitalWrite(WEST_GREEN_PIN, LOW);
digitalWrite(EAST_RED_PIN, LOW);
digitalWrite(EAST_YELLOW_PIN, LOW);
digitalWrite(EAST_GREEN_PIN, LOW);
}
}
// This function will be called every time the button widget changes state
BLYNK_WRITE(V0) {
int pinValue = param.asInt(); // Get the value from the virtual pin
trafficLightsOn = (pinValue == 1);
}
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Initialize GPIO pins
pinMode(NORTH_RED_PIN, OUTPUT);
pinMode(NORTH_YELLOW_PIN, OUTPUT);
pinMode(NORTH_GREEN_PIN, OUTPUT);
pinMode(SOUTH_RED_PIN, OUTPUT);
pinMode(SOUTH_YELLOW_PIN, OUTPUT);
pinMode(SOUTH_GREEN_PIN, OUTPUT);
pinMode(WEST_RED_PIN, OUTPUT);
pinMode(WEST_YELLOW_PIN, OUTPUT);
pinMode(WEST_GREEN_PIN, OUTPUT);
pinMode(EAST_RED_PIN, OUTPUT);
pinMode(EAST_YELLOW_PIN, OUTPUT);
pinMode(EAST_GREEN_PIN, OUTPUT);
}
void loop() {
// Run Blynk
Blynk.run();
// Control traffic lights
controlTrafficLights();
}