Inconveniente con librería stepper

Hola

Un saludo desde Bogotá, Colombia

Les comento...

En un proyecto necesito utilizar dos motores, un servo y tambien un motor de pasos BYj48 con el controlador ULN2003

Quiero con un potenciómetro controlar la velocidad y sentido de giro del motor de pasos, pero cuando este se acerca a una velocidad 0 hasta que no termine de dar un paso no envía la instrucción al servo, cuando el motor de pasos trabaja a alta velocidad el servo se mueve fluidamente con cada instrucción que se le dé.

Leí lo siguiente en otra página:

step(steps)
Descripción:
Enciende el motor durante un número determinado de pasos, a una velocidad determinada por la llamada más reciente a setSpeed (). Esta función es bloqueante; es decir, se va a esperar hasta que el motor se haya terminado de mover para pasar el control a la siguiente línea en su programa. Por ejemplo, si se establece la velocidad de, digamos, 1 RPM y se llama a step(100) en un motor de 100 pasos, esta función podría tardar un minuto en resolver. Para un mejor control, mantenga la velocidad alta y sólo ir unos pasos con cada llamada a step().

Alguna forma de evitar que esto suceda?
O hay otro método para controlar la velocidad y dirección de giro del motor.

Agrego parte del código del proyecto.

Mil gracias.

if ((val>=520)&&(val<=530)){
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,LOW);
  }
   
    if ((val >= 530)&&(val <= 1023)){
      int speed_= map(val,530,1023,0,250);
      stepper.setSpeed(speed_);
      stepper.step(1);
    }
    
    if ((val >=0)&&(val <= 520)){
      int speed_=map(val,0,520,250,0);
      stepper.setSpeed(speed_);
      stepper.step(-1);
    }