void setup() {
// Configuración de pines para los LEDs de los semáforos
// Pines (Verde, Amarillo, Rojo)
// Semáforo 1 (1, 2, 3)
// Semáforo 2 (4, 5, 6)
// Semáforo 3 (7, 8, 9)
// Semáforo 4 (10, 11, 12)
for (int i = 1; i <= 12; i++) {
pinMode(i, OUTPUT);
}
}
// Definición de los tiempos de espera (delays)
int verdeDelay = 500; // 4 segundos
int amarilloDelay = 300; // 2 segundos
int rojoDelay = 200; // 1 segundo
void loop() {
// Semáforo 1 en verde, otros en rojo
digitalWrite(1, HIGH); // Verde 1
digitalWrite(2, LOW); // Amarillo 1
digitalWrite(3, LOW); // Rojo 1
digitalWrite(4, LOW); // Verde 2
digitalWrite(5, LOW); // Amarillo 2
digitalWrite(6, HIGH); // Rojo 2
digitalWrite(7, LOW); // Verde 3
digitalWrite(8, LOW); // Amarillo 3
digitalWrite(9, HIGH); // Rojo 3
digitalWrite(10, LOW); // Verde 4
digitalWrite(11, LOW); // Amarillo 4
digitalWrite(12, HIGH); // Rojo 4
delay(verdeDelay);
// Semáforo 1 en amarillo, otros en rojo
digitalWrite(1, LOW); // Verde 1
digitalWrite(2, HIGH); // Amarillo 1
delay(amarilloDelay);
// Semáforo 1 en rojo, otros en rojo
digitalWrite(2, LOW); // Amarillo 1
digitalWrite(3, HIGH); // Rojo 1
delay(rojoDelay);
// Ciclo para cambiar el semáforo activo del 2 al 4
for (int i = 1; i < 4; i++) {
// Enciende el siguiente semáforo en verde, otros en rojo
digitalWrite((i * 3) + 1, HIGH); // Verde
digitalWrite((i * 3) + 2, LOW); // Amarillo
digitalWrite((i * 3) + 3, LOW); // Rojo
delay(verdeDelay);
// Apaga el semáforo en verde, dejando el amarillo encendido brevemente
digitalWrite((i * 3) + 1, LOW); // Verde
digitalWrite((i * 3) + 2, HIGH); // Amarillo
delay(amarilloDelay);
// Apaga el semáforo en amarillo y lo pone en rojo
digitalWrite((i * 3) + 2, LOW); // Amarillo
digitalWrite((i * 3) + 3, HIGH); // Rojo
delay(rojoDelay);
}
}