diff options
author | Ladyada <limor@ladyada.net> | 2011-02-23 23:43:28 +0300 |
---|---|---|
committer | Ladyada <limor@ladyada.net> | 2011-02-23 23:43:28 +0300 |
commit | d2ffa1973282686b85dc4d890947b0587d23ea94 (patch) | |
tree | fec6d87cd9a53b9a360b847bb96d2df29fca5620 | |
parent | 33d0c38f450ad8b6390a5bda4a027eb42a37fefe (diff) |
added accelstepper examples, fixed casting problem for stepper timing
-rw-r--r-- | AFMotor.cpp | 2 | ||||
-rw-r--r-- | examples/AFMotor_ConstantSpeed/AFMotor_ConstantSpeed.pde | 37 | ||||
-rw-r--r-- | examples/AFMotor_MultiStepper/AFMotor_MultiStepper.pde | 56 |
3 files changed, 94 insertions, 1 deletions
diff --git a/AFMotor.cpp b/AFMotor.cpp index 89c0dc8..bab2b8c 100644 --- a/AFMotor.cpp +++ b/AFMotor.cpp @@ -352,7 +352,7 @@ AF_Stepper::AF_Stepper(uint16_t steps, uint8_t num) { } void AF_Stepper::setSpeed(uint16_t rpm) { - usperstep = 60000000 / (revsteps * rpm); + usperstep = 60000000 / ((uint32_t)revsteps * (uint32_t)rpm); steppingcounter = 0; } diff --git a/examples/AFMotor_ConstantSpeed/AFMotor_ConstantSpeed.pde b/examples/AFMotor_ConstantSpeed/AFMotor_ConstantSpeed.pde new file mode 100644 index 0000000..523150f --- /dev/null +++ b/examples/AFMotor_ConstantSpeed/AFMotor_ConstantSpeed.pde @@ -0,0 +1,37 @@ +// ConstantSpeed.pde +// -*- mode: C++ -*- +// +// Shows how to run AccelStepper in the simplest, +// fixed speed mode with no accelerations +// Requires the AFMotor library (https://github.com/adafruit/Adafruit-Motor-Shield-library) +// And AccelStepper with AFMotor support (https://github.com/adafruit/AccelStepper) +// Public domain! + +#include <AccelStepper.h> +#include <AFMotor.h> + +AF_Stepper motor1(200, 1); + + +// you can change these to DOUBLE or INTERLEAVE or MICROSTEP! +void forwardstep() { + motor1.onestep(FORWARD, SINGLE); +} +void backwardstep() { + motor1.onestep(BACKWARD, SINGLE); +} + +AccelStepper stepper(forwardstep, backwardstep); // use functions to step + +void setup() +{ + Serial.begin(9600); // set up Serial library at 9600 bps + Serial.println("Stepper test!"); + + stepper.setSpeed(50); +} + +void loop() +{ + stepper.runSpeed(); +} diff --git a/examples/AFMotor_MultiStepper/AFMotor_MultiStepper.pde b/examples/AFMotor_MultiStepper/AFMotor_MultiStepper.pde new file mode 100644 index 0000000..d6db8b1 --- /dev/null +++ b/examples/AFMotor_MultiStepper/AFMotor_MultiStepper.pde @@ -0,0 +1,56 @@ +// MultiStepper +// -*- mode: C++ -*- +// +// Control both Stepper motors at the same time with different speeds +// and accelerations. +// Requires the AFMotor library (https://github.com/adafruit/Adafruit-Motor-Shield-library) +// And AccelStepper with AFMotor support (https://github.com/adafruit/AccelStepper) +// Public domain! + +#include <AccelStepper.h> +#include <AFMotor.h> + +// two stepper motors one on each port +AF_Stepper motor1(200, 1); +AF_Stepper motor2(200, 2); + +// you can change these to DOUBLE or INTERLEAVE or MICROSTEP! +// wrappers for the first motor! +void forwardstep1() { + motor1.onestep(FORWARD, SINGLE); +} +void backwardstep1() { + motor1.onestep(BACKWARD, SINGLE); +} +// wrappers for the second motor! +void forwardstep2() { + motor2.onestep(FORWARD, SINGLE); +} +void backwardstep2() { + motor2.onestep(BACKWARD, SINGLE); +} + +// Motor shield has two motor ports, now we'll wrap them in an AccelStepper object +AccelStepper stepper1(forwardstep1, backwardstep1); +AccelStepper stepper2(forwardstep2, backwardstep2); + +void setup() +{ + stepper1.setMaxSpeed(200.0); + stepper1.setAcceleration(100.0); + stepper1.moveTo(24); + + stepper2.setMaxSpeed(300.0); + stepper2.setAcceleration(100.0); + stepper2.moveTo(1000000); + +} + +void loop() +{ + // Change direction at the limits + if (stepper1.distanceToGo() == 0) + stepper1.moveTo(-stepper1.currentPosition()); + stepper1.run(); + stepper2.run(); +} |