Нужна помощь по циклу while
- Войдите на сайт для отправки комментариев
Чт, 29/10/2015 - 14:02
Есть вот такой код простой код
unsigned long time = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
while (millis() < time);
time += 1000;
Serial.println(time);
}
Изменяя значение константы (сейчас стоит 1000) , можно регулировать скорость выполнения программы. Как это происходит. Видимо есть какие-то тонкости которых я пока не знаю.
Нет здесь никаких тонкостей - всё очень толсто и очевидно. Почитайте что такое while и что он делает - http://arduino.ru/Reference/While
Тонкость в том, что вы упустили фигурные скобки в функции while.
Вот как должно быть:
while (millis() < time) { // тут что-то делаем до тех пор, пока time не станет больше millis }Так понятнее? Эти скобки необязательные, если цикл while нужен только для того, чтобы контроллер "тупо тупил и бил баклуши" некоторое время. Т.е. в данном случае это аналог delay(1000), но в котором можно во время паузы что-то делать.
Ничего он не упустил. Там крутится пустой цикл - полная имитация delay(1000) без возможности что-то делать еще.
так и я про то же. Просто в изначально приведенном синтаксисе новичкам не понятно почему не сразу идет переход с 11 на 13 строку.
А возможность "что-то делать еще" как раз будет, если использовать скобки.