// Definición de pines para el primer semáforo
const int ledRojo1[] = {2, 3, 4}; // 3 LEDs rojos
const int ledAmarillo1[] = {5, 6, 7, 8}; // 4 LEDs amarillos
const int ledVerde1[] = {9, 10, 11, 12, 13}; // 5 LEDs verdes
// Definición de pines para el segundo semáforo
const int ledRojo2[] = {A0, A1, A2, A3, A4, A5}; // 6 LEDs rojos
const int ledAmarillo2[] = {A6, A7, A8, A9, A10, A11, A12}; // 7 LEDs amarillos
const int ledVerde2[] = {A13, 14, 15, 16, 17, 18, 19, 20}; // 8 LEDs verdes
// Tiempos para cada fase del semáforo (en milisegundos)
const unsigned long tiempoRojoVerde = 3000; // 3 segundos
const unsigned long tiempoAmarillo = 500; // 500 ms
void setup() {
// Configuración de pines como salida
configurarPines(ledRojo1, 3);
configurarPines(ledAmarillo1, 4);
configurarPines(ledVerde1, 5);
configurarPines(ledRojo2, 6);
configurarPines(ledAmarillo2, 7);
configurarPines(ledVerde2, 8);
}
void loop() {
// Secuencia 1: Rojo 1, Verde 2 durante 3 segundos
encenderSemaforo1Rojo();
encenderSemaforo2Verde();
delay(tiempoRojoVerde);
// Secuencia 2: Rojo 1, Amarillo 2 durante 500 ms
encenderSemaforo1Rojo();
encenderSemaforo2Amarillo();
delay(tiempoAmarillo);
// Secuencia 3: Verde 1, Rojo 2 durante 3 segundos
encenderSemaforo1Verde();
encenderSemaforo2Rojo();
delay(tiempoRojoVerde);
// Secuencia 4: Amarillo 1, Rojo 2 durante 500 ms
encenderSemaforo1Amarillo();
encenderSemaforo2Rojo();
delay(tiempoAmarillo);
}
void configurarPines(const int pines[], int cantidad) {
for (int i = 0; i < cantidad; i++) {
pinMode(pines[i], OUTPUT);
}
}
void encenderSemaforo1Rojo() {
encenderPines(ledRojo1, 3);
apagarPines(ledAmarillo1, 4);
apagarPines(ledVerde1, 5);
}
void encenderSemaforo1Amarillo() {
apagarPines(ledRojo1, 3);
encenderPines(ledAmarillo1, 4);
apagarPines(ledVerde1, 5);
}
void encenderSemaforo1Verde() {
apagarPines(ledRojo1, 3);
apagarPines(ledAmarillo1, 4);
encenderPines(ledVerde1, 5);
}
void encenderSemaforo2Rojo() {
encenderPines(ledRojo2, 6);
apagarPines(ledAmarillo2, 7);
apagarPines(ledVerde2, 8);
}
void encenderSemaforo2Amarillo() {
apagarPines(ledRojo2, 6);
encenderPines(ledAmarillo2, 7);
apagarPines(ledVerde2, 8);
}
void encenderSemaforo2Verde() {
apagarPines(ledRojo2, 6);
apagarPines(ledAmarillo2, 7);
encenderPines(ledVerde2, 8);
}
void encenderPines(const int pines[], int cantidad) {
for (int i = 0; i < cantidad; i++) {
digitalWrite(pines[i], HIGH);
}
}
void apagarPines(const int pines[], int cantidad) {
for (int i = 0; i < cantidad; i++) {
digitalWrite(pines[i], LOW);
}
}