Professional Documents
Culture Documents
Harelabb 3 Stepper
Harelabb 3 Stepper
Harelabb 3 Stepper
h>
#include <arduinostepper.h>
// Define 3 steppers
Stepper steppers[3];
void setup() {
/// Initialize the stepper motor controllers
for (auto& ctl : stepper_ctl) {
ctl.begin();
}
// Forward is CCW
constexpr auto CW = Stepper::BACKWARD;
constexpr auto CCW = Stepper::FORWARD;
void loop() {
float pos = 0; // keep track of position
delay(4000);
delay(2000);
// next
loopClock::tick();
for (auto& stepper: steppers) {
stepper.direction(CCW);
stepper.turn(0.5);
}
pos -= 0.5;
while (anyRunning()) {
loopClock::tick();
for (auto& ctl : stepper_ctl) {
ctl.run();
}
yield();
}
delay(2000);
loopClock::tick();
for (auto& stepper: steppers) {
stepper.direction(CCW);
stepper.turn(0.75);
}
pos -= 0.75;
while (anyRunning()) {
loopClock::tick();
for (auto& ctl : stepper_ctl) {
ctl.run();
}
yield();
}
delay(2000);
loopClock::tick();
delay(2000);
loopClock::tick();
delay(2000);
loopClock::tick();
delay(2000);
loopClock::tick();
delay(2000);
loopClock::tick();
delay(2000);
loopClock::tick();
loopClock::tick();
delay(2000);
loopClock::tick();
// set target for all steppers to 1 turn (360 degrees)
for (auto& stepper: steppers) {
stepper.direction(CW);
stepper.turn(0.25);
}
// run the stepper until target
while (anyRunning()) {
loopClock::tick();
for (auto& ctl : stepper_ctl) {
ctl.run();
}
yield();
}
delay(2000);