Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/adafruit/Adafruit-Motor-Shield-library.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLadyada <limor@ladyada.net>2011-02-23 23:43:28 +0300
committerLadyada <limor@ladyada.net>2011-02-23 23:43:28 +0300
commitd2ffa1973282686b85dc4d890947b0587d23ea94 (patch)
treefec6d87cd9a53b9a360b847bb96d2df29fca5620
parent33d0c38f450ad8b6390a5bda4a027eb42a37fefe (diff)
added accelstepper examples, fixed casting problem for stepper timing
-rw-r--r--AFMotor.cpp2
-rw-r--r--examples/AFMotor_ConstantSpeed/AFMotor_ConstantSpeed.pde37
-rw-r--r--examples/AFMotor_MultiStepper/AFMotor_MultiStepper.pde56
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();
+}