// Pines de botones
const int boton1 = 32; // Botón 1
const int boton2 = 33; // Botón 2
// Pines de LEDs indicadores
const int ledBoton1y2 = 14; // LED en D14 para botón 1
const int ledAutomatico = 12; // LED en D12 para botón 2
// Pines de semáforo N-S
const int verde1 = 2;
const int amarillo1 = 4;
const int rojo1 = 5;
// Pines de semáforo S-N
const int verde2 = 18;
const int amarillo2 = 19;
const int rojo2 = 21;
// Pines de semáforo SEC
const int verde3 = 22;
const int amarillo3 = 23;
const int rojo3 = 25;
void setup() {
int leds[] = {verde1, amarillo1, rojo1, verde2, amarillo2, rojo2, verde3, amarillo3, rojo3};
for (int i = 0; i < 9; i++) {
pinMode(leds[i], OUTPUT);
}
pinMode(boton1, INPUT_PULLUP);
pinMode(boton2, INPUT_PULLUP);
pinMode(boton1, INPUT_PULLUP);
pinMode(boton2, INPUT_PULLUP);
pinMode(ledBoton1y2, OUTPUT);
pinMode(ledAutomatico, OUTPUT);
}
void loop() {
// LED D14 se enciende si se presiona botón 1
if (digitalRead(boton1) == LOW) {
digitalWrite(ledBoton1y2, HIGH);
//SEMAFORO 3 SEC.
// Verde
digitalWrite(rojo3, LOW);
digitalWrite(verde3, HIGH);
digitalWrite(rojo1, HIGH);
digitalWrite(rojo2, HIGH);
delay(5000);
digitalWrite(verde3, LOW);
delay(500);
// Amarillo
digitalWrite(amarillo3, HIGH);
delay(2000);
digitalWrite(amarillo3, LOW);
delay(500);
// Rojo
digitalWrite(rojo3, HIGH);
delay(5000);
digitalWrite(rojo1, LOW);
delay(500);
//SEMAFORO 1 N - S.
// Verde
digitalWrite(verde1, HIGH);
digitalWrite(rojo2, HIGH);
digitalWrite(rojo3, HIGH);
delay(5000);
digitalWrite(verde1, LOW);
delay(500);
// Amarillo
digitalWrite(amarillo1, HIGH);
delay(2000);
digitalWrite(amarillo1, LOW);
delay(500);
// Rojo
digitalWrite(rojo1, HIGH);
delay(5000);
digitalWrite(rojo2, LOW);
delay(500);
//SEMAFORO 2 S - N.
// Verde
digitalWrite(verde2, HIGH);
digitalWrite(rojo1, HIGH);
digitalWrite(rojo3, HIGH);
delay(5000);
digitalWrite(verde2, LOW);
delay(500);
// Amarillo
digitalWrite(amarillo2, HIGH);
delay(2000);
digitalWrite(amarillo2, LOW);
delay(500);
// Rojo
digitalWrite(rojo2, HIGH);
delay(5000);
digitalWrite(rojo3, LOW);
delay(500);
digitalWrite(ledBoton1y2, LOW);
} else {
digitalWrite(ledAutomatico, HIGH);
//SEMAFORO 1 N - S.
// Verde
digitalWrite(verde1, HIGH);
digitalWrite(rojo2, HIGH);
digitalWrite(rojo3, HIGH);
delay(5000);
digitalWrite(verde1, LOW);
delay(500);
// Amarillo
digitalWrite(amarillo1, HIGH);
delay(2000);
digitalWrite(amarillo1, LOW);
delay(500);
// Rojo
digitalWrite(rojo1, HIGH);
delay(5000);
digitalWrite(rojo2, LOW);
delay(500);
//SEMAFORO 2 S - N.
// Verde
digitalWrite(verde2, HIGH);
digitalWrite(rojo1, HIGH);
digitalWrite(rojo3, HIGH);
delay(5000);
digitalWrite(verde2, LOW);
delay(500);
// Amarillo
digitalWrite(amarillo2, HIGH);
delay(2000);
digitalWrite(amarillo2, LOW);
delay(500);
// Rojo
digitalWrite(rojo2, HIGH);
delay(5000);
digitalWrite(rojo1, LOW);
delay(500);
digitalWrite(ledAutomatico, LOW);
}
}