Другой «как запустить код X раз» внутри цикла Arduino ()

#arduino

#arduino

Вопрос:

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

Комментарии:

1. добавьте раздел кода, в котором вы присваиваете значение mqttmessage! где находится остальная часть вашей функции цикла? Хорошая идея — сделать ваш код как можно короче. К сожалению, вы перестарались и удалили строки, относящиеся к вашей проблеме.

Ответ №1:

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

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

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

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

Ответ №2:

Из ссылки Arduino:

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

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

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

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

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