// Declaración de pines
const int botonStar = 1;
const int vehicularVerde = 2;
const int vehicularAmarillo = 3;
const int vehicularRojo = 4;
const int peatonalVerde = 5;
const int peatonalRojo = 6;
const int botonStop = 7;
// Variables para estados de los botones
int estadoBotonStar = LOW;
int estadoBotonStop = LOW;
bool semaforoEncendido = false;
void setup() {
// Configuración de pines
pinMode(botonStar, INPUT);
pinMode(vehicularVerde, OUTPUT);
pinMode(vehicularAmarillo, OUTPUT);
pinMode(vehicularRojo, OUTPUT);
pinMode(peatonalVerde, OUTPUT);
pinMode(peatonalRojo, OUTPUT);
pinMode(botonStop, INPUT);
// Inicializar semáforo apagado (vehicular rojo, peatonal verde)
digitalWrite(vehicularVerde, LOW);
digitalWrite(vehicularAmarillo, LOW);
digitalWrite(vehicularRojo, HIGH);
digitalWrite(peatonalVerde, LOW);
digitalWrite(peatonalRojo, HIGH);
}
void loop() {
// Leer el estado de los botones
estadoBotonStar = digitalRead(botonStar);
estadoBotonStop = digitalRead(botonStop);
// Si se presiona el botón de inicio y el semáforo está apagado
if (estadoBotonStar == HIGH && !semaforoEncendido) {
semaforoEncendido = true; // Activar el ciclo del semáforo
}
// Si se presiona el botón de parada, apagar el semáforo
if (estadoBotonStop == HIGH && semaforoEncendido) {
apagarSemaforo();
semaforoEncendido = false;
}
// Si el semáforo está encendido, ejecutar el ciclo
if (semaforoEncendido) {
// Ciclo del semáforo
// Vehicular verde y peatonal rojo por 5 segundos
digitalWrite(vehicularVerde, HIGH);
digitalWrite(peatonalRojo, HIGH);
delay(5000);
// Apagar vehicular verde y encender vehicular amarillo por 2 segundos
digitalWrite(vehicularVerde, LOW);
digitalWrite(vehicularAmarillo, HIGH);
delay(2000);
// Apagar vehicular amarillo y encender vehicular rojo y peatonal verde por 5
segundos
digitalWrite(vehicularAmarillo, LOW);
digitalWrite(vehicularRojo, HIGH);
digitalWrite(peatonalRojo, LOW);
digitalWrite(peatonalVerde, HIGH);
delay(5000);
// Reiniciar al estado inicial
digitalWrite(vehicularRojo, LOW);
digitalWrite(peatonalVerde, LOW);
semaforoEncendido = false;
}
}
void apagarSemaforo() {
// Apagar todas las luces
digitalWrite(vehicularVerde, LOW);
digitalWrite(vehicularAmarillo, LOW);
digitalWrite(vehicularRojo, LOW);
digitalWrite(peatonalVerde, LOW);
digitalWrite(peatonalRojo, LOW);
}