12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // AFMotor_MultiStepper.pde
- // -*- 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)
- // Caution, does not work with Adafruit Motor Shield V2
- // See https://github.com/adafruit/Adafruit_Motor_Shield_V2_Library
- // for examples that work with Adafruit Motor Shield V2.
- #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();
- }
|