Motor paso a paso

Hola soy un novato y estoy intentando montar un sistema para controlar un motor paso a paso con un arduino uno y un driver a4988, pero necesito que el motor avance un numero de pasos definido, también tengo problemas para la conexión del motor, porque he visto que hay configuraciones en las que puentean el sleep y el rest y otras en las que conectan el reset step y direction, necesitaria un poco de ayuda
He intentado hacerlo por tiempo pero solo mueve un paso hacia un lado y un paso hacia el otro:

#define VELOCIDAD 2300 //Velocidad del motor. Recomendalbe entre (750 - 2300)

int steps = 13;  //Salida de los pasos. PIN 9
int direccion = 9; //Salida de la dirección: HIGH - DERECHA, LOW - IZQUIERDA. PIN 8
int reset = 10; //Salida de reset. Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados. Cuando esté en LOW el motor se apagará y no se leerán los comando. PIN 10
int stepcounter = 0;
int botonDerecha = 5; //Entrada del botón derecho. PIN 5
int botonIzquierda = 6; //Entrada del botón izquierdo. PIN 6

// Iniciamos las entradas y salidas
void setup() {
  //SALIDAS
  pinMode(steps, OUTPUT);
  pinMode(direccion, OUTPUT);
  pinMode(reset, OUTPUT);
  //ENTRADAS
  pinMode(botonDerecha, INPUT);
  pinMode(botonIzquierda, INPUT);
}

// Bucle infinito del programa
void loop() {

  while (digitalRead(botonDerecha) == HIGH or digitalRead(botonIzquierda) == HIGH) { //Si se está pulsado cualquiera de los botones, entra en el while y saldrá de el cuando dejemos de pulsarlos

    //AGINACION DIRECCION DEL MOTOR
    if (digitalRead(botonDerecha) == HIGH) { //Asignamos la dirección del motor según el botón que esté pulsado
      digitalWrite(direccion, HIGH);//Asigna DERECHA
    } else {
      digitalWrite(direccion, LOW);//Asigna IZQUIERDA
    }
    
    if (digitalRead(botonDerecha) == HIGH) {
      digitalWrite(direccion, HIGH);
      digitalWrite(reset, HIGH);
      digitalWrite(steps, HIGH);         // Aqui generamos un flanco de bajada HIGH - LOW
          delayMicroseconds(1000);                              // Pequeño retardo para formar el pulso en STEP
      digitalWrite(steps, LOW);
      //delayMicroseconds(1000);
      //delay(500);


    }
    
    if (digitalRead(botonIzquierda) == HIGH) {
      
      digitalWrite(direccion, LOW);
      digitalWrite(reset, HIGH);
      delay(500);
      digitalWrite(steps, HIGH);
      // Aqui generamos un flanco de bajada HIGH - LOW
      delayMicroseconds(1000);              // Pequeño retardo para formar el pulso en STEP
     digitalWrite(steps, LOW);
      delay (1000);
      


    }
//delay(1000);
    
    //digitalWrite(reset, LOW);


/*

    //ARRANQUE DEL MOTOR
    digitalWrite(reset, HIGH);   //Ponemos el reset en HIGH para que arranque el motor

    //MOVIMIENTO DEL MOTOR
    digitalWrite(steps, HIGH);  // LOW to HIGH hace que el motor avance ya que da la orden
    delayMicroseconds (500);
    digitalWrite(steps, LOW);  // al A4988 de avanzar una vez por cada pulso de energia.

    //ASIGNACION DE LA VELOCIDAD AL MOTOR
    delayMicroseconds(VELOCIDAD); //Tiempo de espera entre paso y paso, esta sentencia es la que cambia la velocidad del motor. Cuanto mas bajo el valor, mas rapido

  }

  digitalWrite(reset, LOW);   //Mientras no pulsamos ningún botón, reset este en LOW y el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
*/

}

Prueba_1.ino (2.86 KB)