const int greenCarLed = 2; // LED verde para los conductores
const int yellowCarLed = 4; // LED amarillo para los conductores
const int redCarLed = 5; // LED rojo para los conductores
const int greenPedestrianLed = 14; // LED verde para los peatones
const int redPedestrianLed = 15; // LED rojo para los peatones
const long greenInterval = 5000; // Tiempo en milisegundos que el LED verde de los conductores permanece encendido
const long yellowInterval = 2000; // Tiempo en milisegundos que el LED amarillo de los conductores permanece encendido
const long redInterval = 5000; // Tiempo en milisegundos que el LED rojo de los conductores permanece encendido
const long greenPedestrianInterval = 5000; // Tiempo en milisegundos que el LED verde de los peatones permanece encendido
const long redPedestrianInterval = 2000; // Tiempo en milisegundos que el LED rojo de los peatones permanece encendido
unsigned long previousMillis = 0; // Almacena el tiempo anterior
int state = 0; // Estado actual del semáforo (0: Verde para conductores, 1: Amarillo para conductores, 2: Rojo para conductores, 3: Verde para peatones, 4: Rojo para peatones)
void setup() {
pinMode(greenCarLed, OUTPUT);
pinMode(yellowCarLed, OUTPUT);
pinMode(redCarLed, OUTPUT);
pinMode(greenPedestrianLed, OUTPUT);
pinMode(redPedestrianLed, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= greenInterval) {
previousMillis = currentMillis;
state++;
// Control del semáforo
if (state == 0) {
digitalWrite(greenCarLed, HIGH);
digitalWrite(yellowCarLed, LOW);
digitalWrite(redCarLed, LOW);
digitalWrite(greenPedestrianLed, LOW);
digitalWrite(redPedestrianLed, LOW);
} else if (state == 1) {
digitalWrite(greenCarLed, LOW);
digitalWrite(yellowCarLed, HIGH);
digitalWrite(redCarLed, LOW);
digitalWrite(greenPedestrianLed, LOW);
digitalWrite(redPedestrianLed, LOW);
} else if (state == 2) {
digitalWrite(greenCarLed, LOW);
digitalWrite(yellowCarLed, LOW);
digitalWrite(redCarLed, HIGH);
digitalWrite(greenPedestrianLed, LOW);
digitalWrite(redPedestrianLed, LOW);
} else if (state == 3) {
digitalWrite(greenCarLed, LOW);
digitalWrite(yellowCarLed, LOW);
digitalWrite(redCarLed, LOW);
digitalWrite(greenPedestrianLed, HIGH);
digitalWrite(redPedestrianLed, LOW);
} else if (state == 4) {
digitalWrite(greenCarLed, LOW);
digitalWrite(yellowCarLed, LOW);
digitalWrite(redCarLed, LOW);
digitalWrite(greenPedestrianLed, LOW);
digitalWrite(redPedestrianLed, HIGH);
state = 0; // Reiniciar el ciclo del semáforo
}
}
}