3 semáforos, 2 semáforos peatonales y 1 semáforo de giro

int state = 0;
void setup()
{
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(PIND, INPUT);

}

void loop()
{
digitalWrite(2, HIGH);
digitalWrite(0, HIGH);
digitalWrite(5, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
delay(15000);
laputamadre();
delay(2000);
digitalWrite(3, HIGH);
digitalWrite(0, HIGH);
digitalWrite(2, LOW);
digitalWrite(8, HIGH);
delay(2000);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(2000);
digitalWrite(12, LOW);
digitalWrite(1, HIGH);
delay(2000);
digitalWrite(1, LOW);
digitalWrite(13, HIGH);
delay(10000);
digitalWrite(13, LOW);
digitalWrite(1, HIGH);
delay(2000);
digitalWrite(1, LOW);
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(24000);
digitalWrite(3, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delay(2000);
digitalWrite(6, LOW);
digitalWrite(10, LOW);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(8, LOW);
}
void laputamadre(){
for(int i=1;i<21; i++){
state=digitalRead(9);
if (state==0) {
delay(1000);
}
else if (state=1){
delay(500);
return;
}
}
}

tengo 3 semaforos, 2 semaforos peatonales y 1 semaforo de giro, con este codigo intente hacer que todos los semaforos excepto los peatonales queden en rojo, pero no funcionó, alguien me ayuda?

Moderador:
Comienza editando el título y tu código usando etiquetas.
El título debe ser descriptivo de tu problema, nada de Ayuda...
Lee las normas del foro y verás en el punto 5 porque este título es considerado uno Inútil o sea que no transmite de que hablas.
El foro es de ayuda, pedirla esta de más.

Respecto de tu código el primer y gran problema que veo y que no resolverá o tal vez si tu problema es el uso y abuso de delay.
Si usas delay olvidate de que un pulsador peatonal sea atendido durante la secuencia del semáforo.
Por qué no responde? Pues porque el delay detiene al microcontrolador sin hacer nada. En cada instrucción delay el micro se detiene y no presta atención a nada mas salvo gastar tiempo.
Hay solución? Si, y se llama millis() y en tu caso asociado con máquina de estados.
En Documentación tenemos tutoriales que explican ambas cosas.
Ve y léelos y luego con gusto reescribimos tu código.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.