Блокировкой упарвления можно назвать функцию физической защиты девайса. Данная функция предназначена для подключения концевого выключателя к цифровому входному порту и для дальнейшего отключения управления, если переключатель закрыт. Таким образом, рабочий диапазон шагового двигателя может быть ограничен.
Если работа двигателя остановлена конечным выключателем, то состояние двигателя будет заблокированно и дальнейшее управление невозможно до тех пор, пока блокировка не будет снята.
Задайте режим ввода для цифрового входа control lock, ссылаясь на главу Настройки.
Вы можете снять блокировку управления контроллера шагового двигателя, используя функцию
unlock().
step.unlock()
Когда вы запускаете функцию unlock, состояние двигаетля изменяется от lock к состоянию stop, а входной режим порта цифрового ввода переходит в normal input из режима control lock.
Это означает, что вы можете нормально управлять двигателем после выполнения разблокировки посредством 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