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 de color
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 apagado, coche
digitalWrite(7, HIGH); // rojo encendido, coche
delay(1000);
digitalWrite(10, LOW); // rojo apagado, peaton
digitalWrite(11, HIGH); // verde encendido, peaton
delay(tiempoCruce);
// parpadeo de la luz verde del peaton
for (int x=0; x < 10; x++) {
digitalWrite(11, HIGH);
delay(250);
digitalWrite(11,LOW);
delay(250);
}
digitalWrite(10, HIGH); // rojo encendido, peaton
delay(500);
digitalWrite(7, LOW ); // rojo apagado, coche
digitalWrite(9, HIGH); // verde encendido, coche
tiempoCambio = millis();
}