#arduino #arduino-c
#arduino #arduino-c
Вопрос:
В примере эскиза таблицы ASCII есть преднамеренный бесконечный цикл:
if (thisByte == 126) { // you could also use if (thisByte == '~') {
// This loop loops forever and does nothing
while (true) {
continue;
}
Какой смысл делать это в void main()
? Почему бы просто не вставить все void setup()
?
Полезно ли это для запуска функции один раз? Я думаю, что если бы он использовался в определенной функции, он застрял бы в бесконечном цикле.
Комментарии:
1. Они могли бы также окружить весь цикл
if (thisByte <126) { /* loop here */ }
.
Ответ №1:
Бесконечный цикл заставляет Arduino перестать что-либо делать loop()
, когда выполнено определенное условие. Это просто простой способ остановить цикл, когда он закончит делать то, что он сделал. Для этого также подойдет перевод MCU в режим глубокого сна или отключения питания на неопределенный срок.
И да, вы могли бы делать все setup()
, что угодно, это всегда так. Любая программа Arduino может быть переписана, чтобы делать все setup()
.
Основная причина, по которой этого не делать, заключается в том, что setup()
он предназначен для настройки, а loop()
он предназначен для зацикливания и запуска основных функций, по соглашению, и потому, что в противном случае у двух функций были бы глупые имена.
Однако каждый волен делать это по-своему.