I've read the AccelStepper documentation on airspayce.com and it seems to be not possible to accelerate a stepper starting with a speed greater 0. Acceleration always starts from speed=0, I tried it with several variations of the code below...

#include <AccelStepper.h>
int onOffPin = 9;

AccelStepper stepper(AccelStepper::DRIVER, 2, 10);

void setup()

void loop()
    //turn motor on
    digitalWrite( onOffPin, HIGH ); 

    // go forwards
    digitalWrite( onOffPin, HIGH );
    stepper.runToPosition(); // stepper shall start from speed 200, but it starts from speed 0; 

    // Now go backwards

    //turn motor off
    digitalWrite( onOffPin, LOW ); 

I also tried to set the speed in the library's method void AccelStepper::computeNewSpeed() directly, but I'm not that good in c++ and don't get it to work.

Anybody any ideas?


I tried to write some custom code in AccelStepper.cpp's method void AccelStepper::computeNewSpeed() My idea was to set the speed manually during acceleration/deceleration if the speed is below my intended value. At first I thought it couldn't be a big deal, but now I see that my cpp skills seems to be not good enough or I don't understand the library quite well.

I tried

void AccelStepper::computeNewSpeed()
    long distanceTo = distanceToGo(); // +ve is clockwise from curent location
    long stepsToStop = (long)((_speed * _speed) / (2.0 * _acceleration)); // Equation 16 

    //now here goes my modification
    if (_speed < 200.0 && _speed >= 0 ){
    //I did no modification below this comment

This results in a very slow stepper movement..


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.