//Alfredo Veintimilla
//Variables en forma de arreglos
int Semaf1Pins[] = {13, 12, 11}; //Semaforo 1 (Rojo(0), Amarillo(1), Verde(2))
int Semaf2Pins[] = {7, 6, 5}; //Semaforo 2 (Rojo(0), Amarillo(1), Verde(2))
//Configuracion de los 2 semaforos
void setup() {
//Incrementador para estrablecer que i empieza en 0 y increemnta hata 2
//Los valores de i, dentro de los semafooros son establecidos como OUTPUT
for (int i = 0; i < 3; i++) {
pinMode(Semaf1Pins[i], OUTPUT);//Semaforo 1, colores en forma de salida
pinMode(Semaf2Pins[i], OUTPUT);//Semaforo 2, colores en forma de salida
}
}
//Crea la funcion setSemaforo
void setSemaforo(int Semaforo, int Estado) {
//La funcion, establece las variables Semaforo y Estado
//La variable Semaforo es usado para englobar los 2 semaforos
//La variable Estado es usado para validar si es HIGH o LOW
//Crea el condicional FOR
for (int i = 0; i < 3; i++) {
//Establece que la variable i comienza en 0 y termina en 2, y se va incrementando
digitalWrite((Semaforo == 1 ? Semaf1Pins[i] : Semaf2Pins[i]), (i == Estado ? HIGH : LOW));
//Configura que Semaforo comienza en 1, y maximo hasta 2
//Semaf1Pins, y Semaf2Pins tienen los valores de i (0,1,2)
//ESTADO va a ser igual a i, con valor verdadero de HIGH y falso de LOW (Operador ternario)
//la funcion va a llamar el semaforo, y el color, y los pone en HIGH
//El resto lo pone en LOW
}
}
//Funcionamiento del semaforo
void loop() {
//CASO - 1:
//Semaforo 1: Verde(2)
setSemaforo(1, 2);
//Semaforo 2: Rojo(0)
setSemaforo(2, 0);
delay(2500);
//CASO - 2:
//Semaforo 1: Amarillo(1)
setSemaforo(1, 1);
delay(500);
//CASO - 3:
//Semaforo 1: Rojo(0)
setSemaforo(1, 0);
//Semaforo 2: Verde(2)
setSemaforo(2, 2);
delay(2000);
//CASO - 4:
//Semaforo 2: Amarillo(1)
setSemaforo(2, 1);
delay(500);
//Al estar dentro del loop, se repite automaticamente
}