#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_TEMPLATE_ID "TMPL6ECP1E1nc"
#define BLYNK_TEMPLATE_NAME "Home automation"
#define BLYNK_AUTH_TOKEN "t-rjJKVuwU8gX3FH8R8LwmRkGtJP5Y8o"
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Ultrasonic Sensor Pin Definitions
#define TRIG_PIN 5
#define ECHO_PIN 4
// Traffic Light Pin Definitions
#define RED_LED 16
#define YELLOW_LED 17
#define GREEN_LED 27
void setup() {
Serial.begin(115200);
connectToWiFi();
// Setup ultrasonic sensor pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Setup traffic light pins
pinMode(RED_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
}
void loop() {
// Read ultrasonic sensor distance
int distance = getDistance(TRIG_PIN, ECHO_PIN);
// Serial.println("distance:");
// Serial.println(distance);
// Control traffic lights based on sensor reading
updateTrafficLights(distance);
// Your Wi-Fi code can go here or in separate functions.
}
int getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) / 58; // Convert pulse duration to distance in cm
}
void updateTrafficLights(int distance) {
if (distance < 20) {
// Obstacle detected, red light
digitalWrite(RED_LED, HIGH);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(GREEN_LED, LOW);
} else if (distance < 50) {
// Prepare to stop, yellow light
digitalWrite(RED_LED, LOW);
digitalWrite(YELLOW_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
} else {
// Safe to go, green light
digitalWrite(RED_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
}
}
void connectToWiFi() {
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}