int tiempoCruce = 5000;
unsigned long tiempoCambio = 0;
void setup() {
// semaforo coches
pinMode(7, OUTPUT); // rojo
pinMode(8, OUTPUT); // amarillo
pinMode(9, OUTPUT); // verde
//semaforo peatones
pinMode(10, OUTPUT); // rojo
pinMode(11, OUTPUT); // verde
pinMode(6, INPUT); // pulsador, cambio
digitalWrite(9, HIGH); // iniciamos con el verde encendido, coche
digitalWrite(10, HIGH); // iniciamos con el rojo encendido, peaton
}
void loop(){
int estado = digitalRead(6);
if (estado == LOW && (millis() - tiempoCambio) > 5000 ){
cambioLuz();
}
}
void cambioLuz(){
digitalWrite(9, LOW); //verde apagado, coche
digitalWrite(8, HIGH); //amarillo encendido,coche
delay(2000);
digitalWrite(8, LOW); // amarillo encendido, coche
digitalWrite(7, HIGH); //rojo encendido, coche
delay(1000);
digitalWrite(10, LOW); // rojo apagado, peatòn
digitalWrite(11, HIGH); // verde encendido, peatòn
delay(tiempoCruce);
// parpadeo de la luz verde del peatòn
for(int x=0; x < 10; x++) {
digitalWrite(11, HIGH);
delay(250);
digitalWrite(11, LOW);
delay(250);
}
digitalWrite(10, HIGH); // rojo encendido, peatòn
delay(500);
digitalWrite(7, LOW); // rojo apagado,coche
digitalWrite(9, HIGH); // verde encendido, coche
tiempoCambio = millis();
}