//pines de los leds del primer semaforo
// led Red = 0;
// led Yellow1 = 1;
// led Green= 2;
int pinP = 26;
const int pinesLed[]={0,1,2};
int button = 3;
//tiempo 1000 = 1s
const int tiempoLeds = 3000;
/*
Autor: Ariel Gueavara
Materia: Computacion Digital
NRC: 17115
--------------------------------------------------------------------
Funcionamiento del codigo
--------------------------------------------------------------------
1. Al no pulsar el boton el semaforo hace su ciclo normal
2. Cuando se quiere realizar la funcion del peaton se debe esperar a que se
encuentre en el led rojo, al hacer el cambio a verde es donde se encuentra
la funcion de escuchar al boton, entonces si mantenemos pulsado el boton
en ese momento llamara a la funcion del peaton.
*/
void setup() {
//pin de pruebas
pinMode(pinP, OUTPUT);
// llamamos a los pines del primer semaforo
for(int i=0; i<3; i++){
pinMode(pinesLed[i], OUTPUT);
}
//llamamos al pin del peaton(naranja)
pinMode(pinP, OUTPUT);
//lamamos al boton
pinMode(button, INPUT_PULLUP);
}
void loop() {
int flag = 0;
flag = encenderVerde();
if(flag == 1){
encenderRojo();
}else{
parpadearAmarillo();
encenderRojo();
}
}
int comprobarBoton(){
if((digitalRead(pinesLed[2]) == HIGH) && digitalRead(button) == LOW){
//apaga el led verde
digitalWrite(pinesLed[2], LOW);
//enciende el led del peaton
digitalWrite(pinP, HIGH);
parpadearAmarillo();
//se apaga el led del peaton
digitalWrite(pinP,LOW);
return 1;
}
return 0;
}
void parpadearAmarillo() {
for (int i = 0; i < 3; i++) {
digitalWrite(pinesLed[1], HIGH);
delay(500);
digitalWrite(pinesLed[1], LOW);
delay(500);
}
}
int encenderVerde(){
digitalWrite(pinesLed[2], HIGH);
int pulsado = comprobarBoton();
//coprubea si se ha pulsado el boton
if(pulsado == 1){
return 1;
}else{
//si no se lo pulso hace el cilco normal del led
delay(tiempoLeds);
digitalWrite(pinesLed[2], LOW);
return 0;
}
}
void encenderRojo(){
digitalWrite(pinesLed[0], HIGH);
delay(tiempoLeds);
digitalWrite(pinesLed[0], LOW);
}