const int redLight = 2;
const int yellowLight = 3;
const int greenLight = 4;
const int pedestrianLight = 5;
const int buttonPin = 6;
const int buzzerPin = 7;
const int trigPin = 8;
const int echoPin = 9;
long duration;
int distance;
void setup() {
pinMode(redLight, OUTPUT);
pinMode(yellowLight, OUTPUT);
pinMode(greenLight, OUTPUT);
pinMode(pedestrianLight, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(buttonPin) == HIGH) {
// Pedestrian crossing activated
digitalWrite(pedestrianLight, HIGH);
digitalWrite(redLight, HIGH);
digitalWrite(yellowLight, LOW);
digitalWrite(greenLight, LOW);
delay(5000);
digitalWrite(pedestrianLight, LOW);
digitalWrite(redLight, LOW);
}
digitalWrite(greenLight, HIGH);
digitalWrite(yellowLight, LOW);
digitalWrite(redLight, LOW);
delay(5000);
digitalWrite(greenLight, LOW);
digitalWrite(yellowLight, HIGH);
delay(2000);
digitalWrite(yellowLight, LOW);
digitalWrite(redLight, HIGH);
delay(5000);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
if (distance <= 10 && digitalRead(pedestrianLight) == HIGH) {
tone(buzzerPin, 1000);
} else {
noTone(buzzerPin);
}
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Serial.print("Traffic Light: ");
if (digitalRead(redLight) == HIGH) {
Serial.println("Red");
} else if (digitalRead(yellowLight) == HIGH) {
Serial.println("Yellow");
} else if (digitalRead(greenLight) == HIGH) {
Serial.println("Green");
}
Serial.print("Pedestrian Light: ");
if (digitalRead(pedestrianLight) == HIGH) {
Serial.println("ON");
} else {
Serial.println("OFF");
}
delay(1000);
}