установка двигателя постоянного тока для работы в течение фиксированного периода времени
Я пытаюсь заставить двигатель постоянного тока работать в течение фиксированного периода времени. Например, если я нажму влево, я хочу, чтобы он работал минуту, а затем останавливался. Если нажму вправо, поработать минуту и чем остановиться. Что мне нужно изменить в этом коде?
https://github.com/gabrielniculita/arduino-dc-motor.git
1 ответ
Есть две возможности:
Простой способ (но с ограничениями)
Я вижу задержку в 200 (мс)… Поэтому, если вы хотите, чтобы он работал в течение минуты, используйте 60 000.
Если 60 000 не принимается (возможно, входной аргумент представляет собой целое число со знаком, имеющее максимальное значение 32 767), используйте цикл for
и сделайте задержку в секунду 60 раз.
Это решение заставит его не реагировать в течение этих 60 секунд на другую команду "влево" или "вправо".
Обновление: см. комментарий JRobert, 60 000 можно использовать без проблем.
Предотвратить задержку
Если вы хотите отреагировать на команду влево/вправо, ПОКА двигатель движется в течение этих 60 секунд, вы должны сохранить время (с миллис
) в переменной и сверить со временем, чтобы знать, когда выключать двигатель.
См. команду Дункана С. Это очень похоже на скетч "Мигание без задержки", который можно найти здесь.
(На самом деле есть и третий способ использования прерываний, но я предполагаю, что второй вариант лучше в вашем случае, и он достаточно отзывчив, учитывая задачи, которые вы хотите выполнять с помощью Arduino.)
- Обратное напряжение двигателя постоянного тока, как правильно разместить диод?
- ESP8266 NODEMCU V3, КАК ИСПОЛЬЗОВАТЬ И УПРАВЛЯТЬ ВЫХОДНОЙ МОЩНОСТЬЮ V3
- Контроль скорости бесщеточного двигателя постоянного тока
- ESP8266-01 Сброс при работе двигателя постоянного тока
- Проблема с аналоговой перезаписью ESP12E motorshield при питании двигателя постоянного тока
- Почему модуль Wi-Fi ESP01 сбрасывается при подключении к двигателю постоянного тока/водяному насосу?
- Управление двигателем постоянного тока ARDUINO через ИК-датчик INPUT
- ESP01 к двигателю постоянного тока питается от батареи с регулятором мощности
«Если 60 000 не принимается» — Arduino.h определяет delay() для приема беззнакового длинного аргумента, поэтому компилятор будет знать, разрешить ли длинное значение или преобразовать (расширить) значение, которое в противном случае могло бы потребовать меньшего объема памяти., @JRobert
Я склонен думать, что использование
delay()
- это тупик, и вместо того, чтобы говорить OP, чтобы он обновлял свой код с более длительной задержкой, мы должны сказать ему переписать свой код, следуя шаблону "мигать без задержки"., @Duncan C@JRobert Спасибо… Я обновил ответ (и включил ваше имя)., @Michel Keijzers
@Duncan C … Я тоже так думаю, поэтому я упомянул и то, и другое, но добавил ссылку и ваше имя. Спасибо за обновление., @Michel Keijzers