Запуск в цикле или один раз в соответствии с положением ползункового переключателя
У меня вопрос.
Я сделал систему, которая включает в себя сервопривод, шаговый двигатель и моторчик дворников :) У всех этих частей есть одна работа, и я могу ее закодировать. Но, я хочу сделать 2 режима в этой системе Single Operation, Loop operation.
Например, позиция 1-одинарная работа, 2-контурная работа. Я могу закодировать операцию цикла благодаря синтаксису arduino :)
Но я не могу закодировать один. Я могу прочитать определение состояния переключателя. Я хочу делать то же самое, но только один раз, когда ползунковый переключатель находится в положении.
Код очень длинный и включает определения на турецком языке. Если вам нужно увидеть код, дайте мне знать.
@can, 👍0
1 ответ
Предположим, что переключатель находится на контакте 9, что функция pinMode() уже установлена и что переключатель находится в состоянии HIGH для работы в цикле.
#define MODE_SWITCH 9
#define DO_LOOP HIGH
// Этот цикл будет выполняться один раз, если переключатель режимов выключен или
// будет выполняться непрерывно, если переключатель режима включен:
do {
servo_things();
stepper_things();
motor_things();
} while( digitalRead(MODE_SWITCH) == DO_LOOP );
в C/C++ циклы do-while всегда выполняются хотя бы один раз, поскольку условие не проверяется до первого прохождения цикла. Если условие "пока" выполнено (или TRUE), цикл будет выполнен снова, в противном случае цикл завершится.
- Застрял в цикле While
- Как использовать этот 3-контактный ползунковый переключатель?
- Кнопка с таймером переключения и функцией сброса времени + светодиод обратной связи
- Мигните светодиодом 5 раз с помощью цикла for
- Чтение нескольких аналоговых входных контактов
- digitalRead не читает входной контакт ESP8266-01
- Как остановить цикл в последовательном мониторе?
- Как подключить трехконтактный переключатель включения-выключения для считывания входных данных?
Я думаю, вам следует выполнить
digitalRead()
внутри условия while. Я думаю, вы имели в виду это и только написали это упрощенно, но, поскольку это не написано в псевдокоде, другие могут скопировать код напрямую, что означает сравнение 9 с 1, что всегда неверно., @chrislХороший улов, @chrisl - это было совершенно верно. Спасибо. Исправлено сейчас., @JRobert
Я попробую это. Благодаря вам, @can