const int ledRojo = 10;
const int ledAmarillo = 9;
const int ledVerde = 8;
const int ledRojoPeatonal = 12;
const int ledVerdePeatonal = 11;
int tiempo = 1000;
byte display[] = {
0b01111110, // 0
0b00001100, // 1
0b10110110, // 2
0b10011110, // 3
0b11001100, // 4
0b11011010, // 5
0b11111000, // 6
0b00001110, // 7
0b11111110, // 8
0b11001110, // 9
};
void setup() {
pinMode(ledRojo, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRojoPeatonal, OUTPUT);
pinMode(ledVerdePeatonal, OUTPUT);
DDRD = 0xFF;
}
void loop() {
// Semáforo vehicular
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, HIGH);
digitalWrite(ledRojoPeatonal, HIGH);
for (int i = 9; i >= 0; i--) {
PORTD = display[i];
delay(tiempo);
}
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, HIGH);
digitalWrite(ledRojoPeatonal, HIGH);
delay(2000); // 2 segundos
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, HIGH);
digitalWrite(ledRojoPeatonal, LOW);
delay(300);
digitalWrite(ledVerdePeatonal, HIGH);
delay(300);
for (int i = 9; i >= 0; i--) {
PORTD = display[i];
delay(tiempo);
}
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, HIGH);
digitalWrite(ledRojoPeatonal, HIGH);
digitalWrite(ledVerdePeatonal, LOW);
delay(3000);
}