Использование millis() для определения времени запуска/остановки двигателя постоянного тока

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

Я рассматривал возможность использования датчика Холла или геркона для подсчета, но, похоже, проще использовать программное прерывание или синхронизацию с использованием millis(). Я провел исследование и обнаружил, что millis() нельзя сбросить, поэтому мне интересно, возможно ли это.

Я не начал скетч, но эту идею я взял из примера скетча BlinkWithoutDelay, включенного в Arduino IDE. Например, установить двигатель в положение «домой», нажать кнопку, запустить таймер, двигатель переместится к концу заготовки, остановить таймер, сохранить пройденное расстояние вперед в переменную, повернуть двигатель в обратном направлении (в этот момент таймер снова будет на 0 для обратного хода), вернуться в «домой», сохранить пройденное расстояние назад в другую переменную нажатием кнопки, а затем использовать эти значения запуска/остановки в цикле. Поэтому я бы сохранил значения нажатием кнопки, а затем просто зациклил бы это.

Или я думаю о том, чтобы поместить нажатие кнопки if или while за пределы цикла с вложенным counter++, визуально отслеживая перемещение мотора, и как только он достигает нужного мне значения, сохранять эти значения в переменных, а затем использовать их в цикле для analogWrite() мотора.

, 👍0

Обсуждение

Комментарии не предназначены для расширенного обсуждения; эта беседа была [перенесена в чат](http://chat.stackexchange.com/rooms/72199/discussion-on-question-by-jim-using-millis-to-time-the-start-stop-of-aa-dc)., @Nick Gammon

Комментарии под вопросом предназначены для **уточнения вопроса**, а также для ответа OP на такие запросы на разъяснение. Например, «какой у вас тип Arduino?». Они не предназначены для расширенной отладки проблемы. Это не форум. Если вы (Джим) хотите уточнить свой вопрос, пожалуйста, отредактируйте вопрос, чтобы сделать это., @Nick Gammon