Marcha paro de un semaforo temporizado

Hola,

tengo un problema con la programación de un encendido temporizado de un semaforo. Tengo el progrma hecho. La secuencia es la siguiente:

HIGH led1 Temporizado de 2 seg. HIGH led2 Temporizado de 2 seg. HIGH led 3 temporizado de 2 seg.

pero la cosa es que lo hago mediante un pulsador de marcha y otro de paro. El de marcha pone en funcionamiento secuencial de encendido y el paro para en el momento de pulsar toda la secuencia aunque la este ejecutando.

Mi problema es que no consigo cortar la secuencia mediante el pulsador de paro.

os paso el código:

int leduno =  8; 
int leddos =  9;  
int ledtres =  10;
int pinpulsador =  2;
int pinparo = 4;


int estadopulsador = 0;
int estadoleddos = 0;
int estadoleduno = 0;
int estadoparo = 0;
int marchamemoria =0;

void setup() {
 pinMode(leduno, OUTPUT);
 pinMode(leddos, OUTPUT);
 pinMode(ledtres, OUTPUT);
 pinMode(pinpulsador, INPUT);
 pinMode(pinparo, INPUT);
}

void loop() {
estadopulsador = digitalRead (pinpulsador);
estadoparo = digitalRead  (pinparo);
estadoleduno = digitalRead (leduno);
estadoleddos = digitalRead (leddos);

if(estadopulsador == HIGH && estadoparo != HIGH){
 marchamemoria=1;  
}
if(estadoparo == HIGH){
 marchamemoria=0;
}
if (marchamemoria == 1){
 digitalWrite(leduno,HIGH);
 delay (2000);
 digitalWrite(leddos,HIGH);
 delay(2000);
}
if (marchamemoria ==0){
 digitalWrite(leduno, LOW);
 digitalWrite(leddos, LOW);  
}

}

Muchas gracias,

Moderador Por favor edita tu post usando etiquetas de código. Lee las Normas del foro

Perfecto, ya he puesto las etiquetas

gracias!

Claro que no, es imposible si usas esto

if (marchamemoria == 1){
        digitalWrite(leduno,HIGH);
        delay (2000);
        digitalWrite(leddos,HIGH);
        delay(2000);                       // <========= CULPABLE DE TODOS LOS MALES
    }

Si en un código el programa encuentra un delay() no hace nada por 2 segundos en tu caso.
Entonces presiona todo lo que quieras y no responderá hasta 2 segundos despues.

Solución => millis()

Ve a Documentación => Indice de temas tutoriales => millis()