stepGotoSW() 함수를 이용해 리미트스위치가 닫혔을 때 자동으로 스텝모터의 동작을 정지시킬 수 있습니다. 이 명령을 통해 모터가 정지되면 모터의 상태 값은 정지상태가 됩니다.
step.stepGotoSW(id, dir)
step.stepGotoSW(id, dir, speed)
step.stepGotoSW(id, dir, speed, accel)
id - 입력포트의 아이디(0 ~ 3)
dir - 모터의 회전 방향
dir | 회전 방향 |
---|---|
0 또는 0보다 큰 정수 | 정 방향 |
그 외 | 역 방향 |
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.setVrefDrive(8);
step.setSpeed(400);
step.setAccel(0);
// rotate until digital input 0 is LOW
Serial.print("find positive limit ...");
step.stepGotoSW(0, 1);
while(step.getState()) {
delay(1);
}
Serial.println("done");
delay(1000);
// rotate until digital input 1 is LOW
Serial.print("find negative limit ...");
step.stepGotoSW(1, -1);
while(step.getState()) {
delay(1);
}
Serial.println("done");
}
void loop() {
}
find positive limit ...done
find negative limit ...done