// Definir los pines para los semáforos
int semaforo1Rojo = 2, semaforo1Amarillo = 3, semaforo1Verde = 4;
int semaforo2Rojo = 5, semaforo2Amarillo = 6, semaforo2Verde = 7;
int semaforo3Rojo = 8, semaforo3Amarillo = 9, semaforo3Verde = 10;
int semaforo4Rojo = 11, semaforo4Amarillo = 12, semaforo4Verde = 13;
// Definir tiempos para cada luz en milisegundos
unsigned long tiempoVerde = 5000; // 5 segundos en verde
unsigned long tiempoAmarillo = 2000; // 2 segundos en amarillo
unsigned long tiempoRojo = 7000; // 7 segundos en rojo
void setup() {
// Configurar los pines como salida para cada semáforo
pinMode(semaforo1Rojo, OUTPUT);
pinMode(semaforo1Amarillo, OUTPUT);
pinMode(semaforo1Verde, OUTPUT);
pinMode(semaforo2Rojo, OUTPUT);
pinMode(semaforo2Amarillo, OUTPUT);
pinMode(semaforo2Verde, OUTPUT);
pinMode(semaforo3Rojo, OUTPUT);
pinMode(semaforo3Amarillo, OUTPUT);
pinMode(semaforo3Verde, OUTPUT);
pinMode(semaforo4Rojo, OUTPUT);
pinMode(semaforo4Amarillo, OUTPUT);
pinMode(semaforo4Verde, OUTPUT);
// Inicializar todos los semáforos en rojo
todosRojo();
}
void loop() {
// Ciclo del semáforo 1
cambiarSemaforo(semaforo1Verde, semaforo1Amarillo, semaforo1Rojo);
// Ciclo del semáforo 2
cambiarSemaforo(semaforo2Verde, semaforo2Amarillo, semaforo2Rojo);
// Ciclo del semáforo 3
cambiarSemaforo(semaforo3Verde, semaforo3Amarillo, semaforo3Rojo);
// Ciclo del semáforo 4
cambiarSemaforo(semaforo4Verde, semaforo4Amarillo, semaforo4Rojo);
}
void todosRojo() {
// Poner todos los semáforos en rojo
digitalWrite(semaforo1Rojo, HIGH);
digitalWrite(semaforo1Amarillo, LOW);
digitalWrite(semaforo1Verde, LOW);
digitalWrite(semaforo2Rojo, HIGH);
digitalWrite(semaforo2Amarillo, LOW);
digitalWrite(semaforo2Verde, LOW);
digitalWrite(semaforo3Rojo, HIGH);
digitalWrite(semaforo3Amarillo, LOW);
digitalWrite(semaforo3Verde, LOW);
digitalWrite(semaforo4Rojo, HIGH);
digitalWrite(semaforo4Amarillo, LOW);
digitalWrite(semaforo4Verde, LOW);
}
void cambiarSemaforo(int verde, int amarillo, int rojo) {
// Ciclo del semáforo: de rojo a verde, luego amarillo, y vuelta a rojo
// Cambiar de rojo a verde
digitalWrite(rojo, LOW);
digitalWrite(verde, HIGH);
delay(5000); // Mantener el verde
// Cambiar de verde a amarillo
digitalWrite(verde, LOW);
digitalWrite(amarillo, HIGH);
delay(5000); // Mantener el amarillo
// Cambiar de amarillo a rojo
digitalWrite(amarillo, LOW);
digitalWrite(rojo, HIGH);
delay(2000); // Mantener el rojo (mientras los otros semáforos cambian)
}