Еще одно «как запустить код X раз» внутри цикла Arduino () - PullRequest
0 голосов
/ 09 апреля 2019

Хорошо, возьми это по-другому.Мы знаем, что функция Arduino loop () последовательно зацикливает все внутри.Представьте себе простую триггерную функцию p1 (), которая что-то делает.Есть хотя бы способ повторить это X раз (переменная удержания здесь) .. и как?Это ничего не дает: if (ledPattern == '1') {do{p1();} while (hold > 1);} или if(ledPattern == '1'){for (int i = hold; i > 0 ; i--){p1();}}, но я могу представить, что проблема в другом месте моего кода ...

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Из Arduino Reference :

функция loop () делает именно то, что предлагает ее название, и последовательно выполняет цикл

Если вы хотитечтобы окончательно остановить цикл, вы можете добавить while(1); в его конец.Таким образом, ваш Arduino будет вызывать loop() один раз, а затем попадет в бесконечный цикл, пока вы не сбросите его.Но, конечно, ваш Arduino больше ничего не будет делать.

Если вы не хотите заканчивать тем же самым, если блокировать снова и снова, вы должны убедиться, что значение mqttmessage изменяется послеодин прогон loop().

В противном случае, скажем, mqttmessage равен '1', вы введете первый оператор if и вызовете p1() время удержания.Затем, когда цикл запускается снова и mqttmessage имеет все то же значение, вы снова окажетесь в первом операторе if и вызовите p1() время удержания и т. Д.

Если вы не можете обновить mqttmessage 's значение каждого цикла, и если вы не хотите останавливать свой Arduino в бесконечном цикле, вы можете использовать переменную, которая хранит, если вы ввели этот оператор if до и каждый оператор if должен проверить эту переменную, чтобы вы невведите снова.

0 голосов
/ 09 апреля 2019

Функция loop в Arduino предназначена для бесконечного зацикливания, но я думаю, это то, что вам нужно, так как вы можете проверить свои сообщения не только один раз.

Если вы хотите, чтобы код останавливался в конце всех ваших операторов if, вы можете добавить while(1); в конце кода?

Как вы читаете ваши сообщения? Эта часть кода может быть важной.

(Не уверен, что это заслуживает ответа, но я не могу комментировать ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...