#define LedRojo1 13
#define LedAmarillo1 12
#define LedVerde1 11
#define LedRojo2 10
#define LedAmarillo2 9
#define LedVerde2 8
#define BotonSemaforo1 7
#define BotonSemaforo2 6
bool semaforoActivo = true;
int tiempoCambio = 1000; //Tiempo de espera entre tranicion de LED
int tiempoEspera = 2000; //Tiempo de espera hasta comenzar transicion
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LedRojo1, OUTPUT);
pinMode(LedAmarillo1, OUTPUT);
pinMode(LedVerde1, OUTPUT);
pinMode(LedRojo2, OUTPUT);
pinMode(LedAmarillo2, OUTPUT);
pinMode(LedVerde2, OUTPUT);
pinMode(BotonSemaforo1, INPUT);
pinMode(BotonSemaforo2, INPUT);
digitalWrite(LedVerde1, HIGH);
digitalWrite(LedRojo2, HIGH);
}
void loop() {
int valorSemaforo1 = digitalRead(BotonSemaforo1);
int valorSemaforo2 = digitalRead(BotonSemaforo2);
Serial.println("Semaforo Estado: " + String(semaforoActivo));
Serial.println("Semaforo1: " + String(valorSemaforo1));
Serial.println("Semaforo2: " + String(valorSemaforo2));
if (valorSemaforo1 == HIGH) {
encenderSemaforo1();
}
else if (valorSemaforo2 == HIGH) {
encenderSemaforo2();
}
else{
if(semaforoActivo == true){ //Semaforo 1 Activo
encenderSemaforo2();
semaforoActivo = false;
}
else{ //Semaforo 2 Activo
encenderSemaforo1();
semaforoActivo = true;
}
}
}
void encenderSemaforo1(){
//Apagamos semaforo 2
delay(tiempoEspera);
//Pasamos luz amarilla
digitalWrite(LedVerde2, LOW);
digitalWrite(LedAmarillo2, HIGH);
//Esperamos cambio led
delay(tiempoCambio);
//Pasamos luz roja
digitalWrite(LedAmarillo2, LOW);
digitalWrite(LedRojo2, HIGH);
//Encendemos Semaforo 1
//Esperamos cambio led
delay(tiempoCambio);
//Pasamos luz verde
digitalWrite(LedRojo1, LOW);
digitalWrite(LedVerde1, HIGH);
}
void encenderSemaforo2(){
//Apagamos semaforo 1
delay(tiempoEspera);
//Pasamos luz amarilla
digitalWrite(LedVerde1, LOW);
digitalWrite(LedAmarillo1, HIGH);
//Esperamos cambio led
delay(tiempoCambio);
//Pasamos luz roja
digitalWrite(LedAmarillo1, LOW);
digitalWrite(LedRojo1, HIGH);
//Encendemos Semaforo 2
//Esperamos cambio led
delay(tiempoCambio);
//Pasamos luz verde
digitalWrite(LedRojo2, LOW);
digitalWrite(LedVerde2, HIGH);
}