#define BLYNK_TEMPLATE_ID "TMPL3r8i4Lxyl"
#define BLYNK_TEMPLATE_NAME "FINALBOSS IotT Traffic unfinished"
#define BLYNK_AUTH_TOKEN "FzTVXznK2WtKo-qieaPWP81d8jvv4SwD"
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
char ssid[] = "wokwi-GUEST";
char pass[] = "";
int redPin = 27;
int greenPin = 14;
int yellowPin = 12;
// Define ultrasonic sensor pins
int trigPin = 18;
int echoPin = 5;
// Define pedestrian button pin
int buzzerButtonPin = 19;
int irPin = 17;
#define SWITCH_TIME 5000
BlynkTimer timer;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
// Set ultrasonic sensor pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Set pedestrian button pin as INPUT with internal pull-up resistor
pinMode(buzzerButtonPin, OUTPUT);
pinMode(irPin, OUTPUT);
Serial.begin(9600);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
timer.run();
long duration, distance ;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance );
Serial.println(" cm");
delay(1000);
int trafficDensity = map(distance, 2, 397, 1000, 0);
if (trafficDensity >= 50) {
showRedLight();
} else {
showGreenLight();
}
}
void showRedLight() {
// Set RGB LED to red
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, LOW);
delay(SWITCH_TIME); // 5 seconds
}
void showGreenLight() {
// Set RGB LED to green
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(yellowPin, LOW);
delay(SWITCH_TIME); // 5 seconds
}
void showYellowLight() {
// Set RGB LED to yellow
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, HIGH);
delay(SWITCH_TIME); // 5 seconds
}