스텝모터를 모터의 현재 위치가 아닌 초기 위치를 기준으로 제어하고자 할 때 stepGoto()함수를 사용합니다. 이 함수는 모터가 동작 중인 상태에서도 사용이 가능합니다. 모터가 동작 중일 때 새로운 setpGoto()함수가 실행되면 그 즉시 해당 함수를 수행합니다.
step.stepGoto(pos)
step.stepGoto(pos, speed)
step.stepGoto(pos, speed, accel)
pos - 목표 카운터 위치
pos는 "+" 또는 "-" 부호를 앞에 붙여서 정회전 또는 역회전을 나타낼 수 있습니다. (생략시 "+")
목표 카운터의 위치는 카운터의 현재위치가 아닌 초기 위치가 기준이 됩니다.
speed - 회전 속도, pps 단위
※ pps: pulse per second
accel - 가속도, pps/s 단위
accel에 값을 설정하면 해당 값은 가속도뿐만 아니라 감속도에도 동일하게 적용됩니다.
#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() {
}