Вы можете управлять шаговым двигателем относительно текущей, а не исходной позиции, используя функцию stepMove(). Эта функция может быть выполнена только тогда, когда двигатель НЕ работает.
step.stepMove(step)
step.stepMove(step, speed)
step.stepMove(step, speed, accel)
Вы можете определить прямое или обратное вращение, добавив «+» или «-» перед значением pos. (По умолчанию: «+») Позиция целевого счетчика относительна текущего, а не начального положения.
speed - скорость вращения в pps
※ pps: импульс в секунду
Торможение применяется с тем же значением, что и при ускорении.
#include <PhpocExpansion.h>
#include <Phpoc.h>
byte spcId = 1;
ExpansionStepper step(spcId);
void setup() {
Serial.begin(9600);
while(!Serial)
;
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
Expansion.begin();
Serial.println(step.getPID());
Serial.println(step.getName());
step.setMode(4);
step.setVrefStop(2);
step.setVrefDrive(8);
step.setResonance(120, 250);
step.setSpeed(400);
step.setAccel(0, 0);
step.setPosition(0);
step.stepMove(400);
delay(2000);
step.stepMove(-400);
delay(2000);
step.stepMove(400);
delay(2000);
while(step.getState()) {
delay(1);
}
}
void loop() {
}