// Define the pins for the 7-segment display segments
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
// Define the LED pins for traffic lights
int red = 11;
int yellow = 10;
int green = 9;
void setup() {
// Set segment pins as outputs
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
// Set LED pins as outputs
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
// Initially turn on the red LED and turn off the yellow and green LEDs
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
}
// Function to display a number on the 7-segment display
void displayDigit(int digit[]) {
digitalWrite(a, digit[0]);
digitalWrite(b, digit[1]);
digitalWrite(c, digit[2]);
digitalWrite(d, digit[3]);
digitalWrite(e, digit[4]);
digitalWrite(f, digit[5]);
digitalWrite(g, digit[6]);
}
// Segment data for digits 0-9
int digitZero[] = {LOW, LOW, LOW, LOW, LOW, LOW, HIGH};
int digitOne[] = {HIGH, LOW, LOW, HIGH, HIGH, HIGH, HIGH};
int digitTwo[] = {LOW, LOW, HIGH, LOW, LOW, HIGH, LOW};
int digitThree[] = {LOW, LOW, LOW, LOW, HIGH, HIGH, LOW};
int digitFour[] = {HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW};
int digitFive[] = {LOW, HIGH, LOW, LOW, HIGH, LOW, LOW};
int digitSix[] = {LOW, HIGH, LOW, LOW, LOW, LOW, LOW};
int digitSeven[] = {LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH};
int digitEight[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int digitNine[] = {LOW, LOW, LOW, LOW, HIGH, LOW, LOW};
// Function to display a specific number
void displayNumber(int number) {
switch (number) {
case 0: displayDigit(digitZero); break;
case 1: displayDigit(digitOne); break;
case 2: displayDigit(digitTwo); break;
case 3: displayDigit(digitThree); break;
case 4: displayDigit(digitFour); break;
case 5: displayDigit(digitFive); break;
case 6: displayDigit(digitSix); break;
case 7: displayDigit(digitSeven); break;
case 8: displayDigit(digitEight); break;
case 9: displayDigit(digitNine); break;
}
}
void countdownWithRed() {
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
digitalWrite(green, HIGH);
for (int i = 9; i >= 0; i--) {
displayNumber(i);
delay(2000);
}
}
void countdownWithYellow() {
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
for (int i = 3; i >= 0; i--) {
displayNumber(i);
delay(2000);
}
}
void countdownWithGreen() {
digitalWrite(red, HIGH);
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW);
for (int i = 9; i >= 0; i--) {
displayNumber(i);
delay(2000); // On for half the duration
// Turn green LED back on
}
}
void loop() {
countdownWithRed();
countdownWithYellow();
countdownWithGreen();
}