Dudas sobre motores paso a paso

Buenas a todos...
Otra vez de regreso. Este fin de semana retome el proyecto y estube trabajando en dos cuestiones:
Por un lado segui intentando mejorar lo que venia haciendo con el Stepper Sanyo Unipolar, y el driver DVU6A80V. Con esta parte quede así:

int PA = 11;
int DIR = 8;
int EN = 10;
int pasos = 200;
int VELOCIDAD = 1100;

void setup() {                
  pinMode(PA, OUTPUT); 
  pinMode(DIR, OUTPUT); 
  pinMode(EN, OUTPUT);
}

void loop(){
  
  digitalWrite(EN, HIGH);
  digitalWrite(EN, LOW);
  digitalWrite(DIR, HIGH);

  for (int i = 0; i<pasos; i++){
    digitalWrite(PA, HIGH);  
    digitalWrite(PA, LOW);  
    delayMicroseconds(VELOCIDAD);     
    
  } 
    delay(2000);
}

Este código funciona bien para lo que quiero, aunque me hubiera gustado tener más flexibilidad a la hora de modificar las velocidades.

Con AccelStepper estube haciendo algo pero sin resultados positivos:

#include <AccelStepper.h>

AccelStepper stepper(3, 8, 10, 12);

void setup()
{  
   stepper.setMaxSpeed(2000);
   stepper.setSpeed(2000);  	
}

void loop(){
  
   stepper.runSpeed();
}

La velocidad que alcanso es bastante considerable pero no me doy cuenta como hacer para que realice la misma rutina que con el otro code: una vuelta completa y parar 1second.

Hoy estube tratando de jugar con algunas cositas pero con el code anterior, es decir, sin la librería AccelStepper:
Le agregue un Pot y dos botones. La idea es regular la variacion de velosidad col el Pot y detener y encender el stepper con los bot. Hice esto:

int PA = 11;//pin pasos
int DIR = 8;//pin dirección
int EN = 10;//pin entrada
int pot;//Potenciometro
int detener=3;//pin boton para detener el stepper
int iniciar=4;//pin boton para encender el stepper
int pasos=200;//pasos de mi stepper(1.8)
int estado;//lo agregue por si las moscas pero no se si cumple alguna función

void setup() {       

  pinMode(detener,INPUT);
  pinMode(iniciar,INPUT);
  pinMode(PA, OUTPUT); 
  pinMode(DIR, OUTPUT); 
  pinMode(EN, OUTPUT);
  
  digitalWrite(PA, LOW);//No se si esto es necesario, pero la idea es que el stepper se inicie parado
  digitalWrite(DIR, LOW);
  digitalWrite(EN, LOW);
  
}

void loop(){
  
  pot = analogRead(A0);                         //Esto funciona de maravilla(mitigue la frustración un poco)
  pot=map(pot, 0, 1023, 600, 1500);
  
  boolean estado=digitalRead(iniciar);//Leemos el estado del pulsador.De acá para abajo no funciona nada
  if(estado==HIGH)//Comparamos estado del pulsador. El boolean no use porque lo vi en algun ejemplo
  
  {
    //digitalWrite(EN, HIGH);
    //digitalWrite(EN, LOW);
    //digitalWrite(DIR, HIGH);
    for (int i = 0; i<pasos; i++)
    digitalWrite(PA, HIGH);  
    digitalWrite(PA, LOW);  
    delayMicroseconds(pot);    
  } 
  bolean estado=digitalRead(detener);//Leemos el estado del pulsador
  if(estado==HIGH)//Comparamos estado del pulsador
  {
    digitalWrite(PA, LOW);  
    digitalWrite(PA, LOW);
  }
 
}

Este lo utilice con algunas leves modificaciones y anda perfecto, pero no funcionan las velocidades:

/*
  www.diymakers.es
  by A.García
  Mover motores paso a paso con Arduino
  Tutorial en: http://diymakers.es/mover-motores-paso-paso-con-arduino/
*/
 
#include <Stepper.h> //Importamos la librería para controlar motores paso a paso
 
#define STEPS 200 //Ponemos el número de pasos que necesita para dar una vuelta. 200 en nuestro caso
 
// Ponemos nombre al motor, el número de pasos y los pins de control
Stepper stepper(STEPS, 8, 10, 9, 11); //Stepper nombre motor (número de pasos por vuelta, pins de control)
 
int pot;  //Variable lectura potenciómetro
int derecha=3;  //Pulsador derecha
int izquierda=4;  //Pulsador izquierda
int direccion;  //Variable para indicar la direccón
 
void setup()
{
  pinMode(derecha,INPUT);
  pinMode(izquierda,INPUT);
}
 
void loop()
{
  pot=analogRead(A0); //Lectura potenciómetro
  pot = map(pot, 0, 1023, 200, 300); //Establecemos la velocidad entre 30 y 150 rpm(?)
 
  stepper.setSpeed(pot); //Indicamos la velocidad al motor
 
  stepper.step(direccion); //Indicamos la dirección al motor
 
  if(digitalRead(izquierda)==HIGH)
  {
     direccion=200;  //Si pulsamos el pulsador izquierdo, el motor se enciende
  }

  
 
  if(digitalRead(derecha)==HIGH)
  {
     direccion=0;  //Si pulsamos el pulsador derecho, el motor se apaga
  }
}

Conclución: La versión sin la librería funcionaría perfecto si pudiera hacer funcionar los botones. Estaría bueno poder aprender como controlar los pasos y los intervalos en la versión con la AccelStepper. Por último, el sketch final sería el optimo si tan solo pudiera saber porque los interbalos de velocidades son tan pequeños(me refiero a que los balores del entorno van de 200 a 300 y funciona muy lento)