Как вы используете библиотеку accelstepper arduino для перемещения на заданное количество шагов, проверки внешнего ввода и продолжения?

Я пытаюсь использовать библиотеку Accelstepper для запуска моего шагового двигателя. Моя цель — запустить двигатель на определенное количество шагов, проверить, не нажат ли внешний переключатель, а затем продолжить работу с постоянной скоростью. Однако я обнаружил, что не могу указать количество шагов, а затем запустить их с постоянной скоростью.

Мой текущий код выполняет цикл while и выполняется в течение указанного количества шагов, игнорируя при этом любой код, относящийся к моему переключателю.

motor.setCurrentPosition(0);
while(motor.currentPosition()!=50){
  motor.setSpeed(500);
  motor.runSpeed();
}
delay(1000);
if (digitalRead(switchPin)==LOW){
  motor.setSpeed(500);
  motor.runSpeed();
}

person Cipriana    schedule 05.09.2019    source источник


Ответы (1)


Вам нужно поместить последний motor.runSpeed() в бесконечный цикл. Теперь он выполняется только один раз, если switchpin низкий. После этого программа выходит из условия if и завершается.

motor.setSpeed(500);
motor.setCurrentPosition(0);

while(motor.currentPosition()!=50){
    motor.runSpeed();
}

delay(1000);

if (digitalRead(switchPin)==LOW){

    while (1) {
        motor.runSpeed();
    }

}

В цикле while вы можете проверить другой vlag, чтобы выйти из него, если это необходимо.

person Swedgin    schedule 05.09.2019