Использование millis() для определения времени запуска/остановки двигателя постоянного тока
Я пытаюсь использовать двигатель постоянного тока с шестерней, соединенной с реечной передачей, и заставить этот двигатель пройти расстояние, сохранить расстояние, сделать задержку, дать задний ход и пройти то же расстояние с того места, где он начал, сделать задержку, сделать это снова. Я хочу запустить/остановить первоначальное сохранение нажатием кнопки, а затем из этих сохранений зациклить движение двигателя.
Я рассматривал возможность использования датчика Холла или геркона для подсчета, но, похоже, проще использовать программное прерывание или синхронизацию с использованием millis()
. Я провел исследование и обнаружил, что millis()
нельзя сбросить, поэтому мне интересно, возможно ли это.
Я не начал скетч, но эту идею я взял из примера скетча BlinkWithoutDelay, включенного в Arduino IDE. Например, установить двигатель в положение «домой», нажать кнопку, запустить таймер, двигатель переместится к концу заготовки, остановить таймер, сохранить пройденное расстояние вперед в переменную, повернуть двигатель в обратном направлении (в этот момент таймер снова будет на 0 для обратного хода), вернуться в «домой», сохранить пройденное расстояние назад в другую переменную нажатием кнопки, а затем использовать эти значения запуска/остановки в цикле. Поэтому я бы сохранил значения нажатием кнопки, а затем просто зациклил бы это.
Или я думаю о том, чтобы поместить нажатие кнопки if или while за пределы цикла с вложенным counter++
, визуально отслеживая перемещение мотора, и как только он достигает нужного мне значения, сохранять эти значения в переменных, а затем использовать их в цикле для analogWrite()
мотора.
@Jim, 👍0
Обсуждение0
- Как справиться с rollover millis()?
- Использование millis() и micros() внутри процедуры прерывания
- ардуино - миллисекунды ()
- Кнопка с таймером переключения и функцией сброса времени + светодиод обратной связи
- Использовать timer0, не влияя на millis() и micros().
- Торговый автомат Arduino для мониторинга ввода монет в слот во время ожидания ввода пользователя
- Влияет ли `millis()` на длинные ISR?
- nodeMCU — Millis() — Простой счетчик — Как долго горит светодиод?
Комментарии не предназначены для расширенного обсуждения; эта беседа была [перенесена в чат](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