You can control a stepper motor relative to the initial position, not the current position by using stepGoto() function. This function can be executed even when the motor is running.
step.stepGoto(pos)
step.stepGoto(pos, speed)
step.stepGoto(pos, speed, accel)
pos - the target counter position
You can define the forward or reverse rotation by adding "+" or "-" in front of the pos value. (default : "+") The target counter position is relative to the initial position, not the current position.
speed - rotation speed in pps unit
※ pps: pulse per second
accel - acceleration in pps/s unit
The deceleration is applied with the same value with the acceleration.
#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.stepGoto(400);
delay(2000);
step.stepGoto(-400);
delay(2000);
step.stepGoto(400);
delay(2000);
while(step.getState()) {
delay(1);
}
}
void loop() {
}