duda con còdigo para motor a pasos

buenas noches foro estoy empezando en esto de arduino especialmente en los motores a pasos, actualmente planeo ejecutar un programa con un arduino uno, un motor nema 17 y un pololulu, la idea es que por medio de 3 pulsadores el motor se mueva hacia la derecha(1er pulsador) hacia la izquierda (segundo pulsador) y un movimiento continuo izquierda-derecha al presionar el tercer pulsador y que al volverlo a presionar este movimiento pare, hasta ahora solo he podido hacer que al presionar un pulsador gire automaticamente izquierda-derecha pero no puedo pararlo al volver a presionar ese pulsador :frowning: he estado buscando e intente hacerlo como si fuera el encendido de un led pero no me salio, este es mi còdigo:

#define VELOCIDAD 2000

int pulsador = 0; 
int estado = 0 ;                                
 int entrada = 4;
 
int steps = 2;
int direccion = 3;
int reset = 9;
int pasos = 800;


// the setup routine runs once when you press reset:
void setup() {                 // initialize the digital pin as an output.
  pinMode(4, INPUT);
  pinMode(steps, OUTPUT); 
  pinMode(direccion, OUTPUT); 
  pinMode(reset, OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);

}

// the loop routine runs over and over again forever:
void loop() {

  pulsador = digitalRead(entrada);
    if (pulsador == HIGH) {
     estado=1-estado; }
   if( estado ==1){
  digitalWrite(reset, LOW); //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
  delay(100);
  digitalWrite(reset, HIGH);   //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
  digitalWrite(direccion, HIGH);
  digitalWrite(13,HIGH);
  digitalWrite(12,LOW);
  
  for (int i = 0; i<pasos; i++)       //Equivale al numero de vueltas (200 es 360º grados) o micropasos
  {
    digitalWrite(steps, HIGH);  // This LOW to HIGH change is what creates the
    digitalWrite(steps, LOW); // al A4988 de avanzar una vez por cada pulso de energia.  
    delayMicroseconds(VELOCIDAD);     // Regula la velocidad, cuanto mas bajo mas velocidad.

  } 
  
  digitalWrite(reset, LOW);   //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
  delay(100);
  digitalWrite(reset, HIGH);   //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
  digitalWrite(direccion, LOW);
   digitalWrite(13,LOW);
    digitalWrite(12,HIGH);

  for (int i = 0; i<pasos; i++)       //Equivale al numero de vueltas (200 es 360º grados) o micropasos
  {
      
    digitalWrite(steps, LOW);   // LOW to HIGH hace que el motor avance ya que da la orden
    digitalWrite(steps, HIGH);    // al A4988 de avanzar una vez por cada pulso de energia.
    delayMicroseconds(VELOCIDAD);         // Regula la velocidad, cuanto mas bajo mas velocidad.
  }
}

else{  
digitalWrite(reset, LOW);    //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
  delay(100);
  digitalWrite(reset, LOW);   //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
  digitalWrite(direccion, LOW);
  digitalWrite(13,LOW);
  digitalWrite(12,LOW);

}
}

ojalà puedan ayudarme con esta duda les estare agradecido mientras seguire buscando e intentando, de antemano les agradezco su tiempo , saludos