// Smart traffic light with pedestrian crossing
int carRed = 12;
int carYellow = 11;
int carGreen = 10;
int pedRed = 9;
int pedGreen = 8;
int button = 2;
int buzzer = 7;
int crossTime = 10000; // 10 seconds for pedestrian crossing
int buttonState = 0;
unsigned long changeTime;
void setup() {
pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(button, INPUT_PULLUP); // Use INPUT_PULLUP for button
pinMode(buzzer, OUTPUT);
digitalWrite(carGreen, HIGH);
digitalWrite(pedRed, HIGH);
}
void loop() {
buttonState = digitalRead(button);
// Check if the button is pressed and at least 10 seconds have passed
if (buttonState == HIGH && (millis() - changeTime) > crossTime) {
changeLights();
}
}
void changeLights() {
// Car traffic lights
digitalWrite(carGreen, HIGH);
delay(5000); // Keep the green light on for 5 second
digitalWrite(carGreen, LOW);
digitalWrite(carYellow, HIGH);
delay(3000); // Keep the yellow light on for 5 second
digitalWrite(carYellow, LOW);
// Pedestrian crossing
digitalWrite(carRed, HIGH);
digitalWrite(pedRed, LOW);
digitalWrite(pedGreen, HIGH);
delay(crossTime);
for (int x = 0; x < 10; x++) {
digitalWrite(pedGreen, HIGH);
digitalWrite(buzzer, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
digitalWrite(buzzer, LOW);
delay(250);
}
digitalWrite(pedRed, HIGH);
delay(1000);
// Reset traffic lights
digitalWrite(carRed, LOW);
digitalWrite(carGreen, HIGH);
digitalWrite(carYellow, LOW);
// Record the current time for the next change
changeTime = millis();
}