#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 должен проверять эту переменную, чтобы вы не вводили снова.