제어잠금 기능은 일종의 물리적인 보호 기능입니다. 이 기능은 디지털 입력포트에 리미트스위치를 연결하고 스위치가 닫히면 추가적인 제어를 불가능하게 하는 것입니다. 따라서 스텝모터의 동작범위를 제한할 수 있습니다.
모터의 동작이 리미트스위치에 의해 멈추면 모터의 상태는 제어잠금 상태가 되어 잠금을 해제하기 전까지 추가적인 제어가 불가능합니다.
설정하기의 "디지털 입력포트 설정"을 참고하여 디지털 입력모드를 제어잠금 모드로 설정합니다.
제어잠금 상태를 해제하는 함수는 unlock()함수입니다.
step.unlock()
unlock()함수를 실행하면 모터의 상태는 제어잠금 상태에서 정지 상태로 전환되고, 디지털 입력포트의 입력모드는 제어잠금 모드에서 일반입력 모드로 초기화 됩니다.
따라서 unlock() 이후에는 정상적으로 모터 제어가 가능합니다.
#include <PhpocExpansion.h>
#include <Phpoc.h>
byte spcId = 1;
ExpansionStepper step(spcId);
int state;
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.setVrefLock(8);
step.setSpeed(400);
step.setAccel(4000);
step.setEioMode(0, 1);
step.setEioMode(1, 1);
step.setEioMode(2, 1);
step.setEioMode(3, 1);
step.stepGoto(4000);
while(step.getState() > 1) {
delay(1);
}
// state: 0 - stop, 1 - locked
Serial.print("step_state ");
Serial.println(step.getState());
step.unlock();
// state: 0 - stop, 1 - locked
Serial.print("step_state ");
Serial.println(step.getState());
}
void loop() {
}
step_state 1
step_state 0