Циклы в Ардуино for и while

Как работают циклы в Ардуино for и while

Циклы for, while и do while в Arduino. Рассмотрим, как работают циклы в Ардуино, как правильно использовать операторы в скетчах и каких ошибок избегать.

Рассмотрим, как работают операторы циклов for, while и do while в Arduino IDE, как правильно использовать циклы в скетчах и каких ошибок следует избегать. На простых примерах продемонстрируем, как можно остановить цикл или перейти из одного цикла в другой. Для того, чтобы разобраться в правильности написания циклов, прежде всего, следует изучить виды и свойства алгоритмов в робототехнике.

Как работают циклы в Arduino IDE

Любой цикл в C++ и языке программирования Ардуино представляет собой действие, которое повторяется множество или бесконечное количество раз. Ни одна программа для микроконтроллера Ардуино не обходится без цикла, например, void loop вызывается в бесконечном цикле. Операторы циклов бывают трех видов: for, while и do while — остановимся на каждом операторе, рассмотрим, как они работают на примерах.

Принцип работы for и while можно объяснить на следующих простых примерах. Цикл for выполняется конечное количество раз (указывается в условии оператора) его используют, когда в программе, например, требуется несколько раз моргнуть светодиодом. Цикл while может выполняться бесконечно, например, когда светодиод на Ардуино будет мигать до тех пор, пока не изменятся данные с датчика.

Пример, демонстрирующий разницу между for и while
Пример, демонстрирующий разницу между for и while

Описание цикла for в Ардуино с примером

Конструкция for в Arduino задается следующим образом:

for (инициализация; условие; изменение){

   // команды, которые будут повторяться

}

Цикл for используется для повторения определенных команд, заключенных в фигурных скобках. Данный цикл подходит для выполнения любых повторяющихся действий.
При инициализации создается переменная и присваивается начальное значение.
В условии записывается значение переменной при которой будет выполняться цикл.
В изменении указывается, как будет изменяться переменная при каждом шаге цикла.

for (byte i=0; i<=5; i++){

   digitalWrite(13, HIGH);
   delay(500);
   digitalWrite(13, LOW);
   delay(500);

}

В примере скетча задана переменная с начальным значением i=0, в условии указано, что цикл будет выполняться до тех пор, пока переменная не станет равна или больше пяти i<=5. В изменении указано, что переменная на каждом шаге цикла будет увеличиваться на единицу. В итоге, выход из цикла for произойдет, когда переменная станет равна пяти, поэтому светодиод пять раз моргнет, прежде чем цикл закончится.

Шаг переменной (изменение) может быть любым. Если необходимо увеличивать переменную сразу на две единицы, то изменение счетчика следует записать так: i=i+2. Цикл for может использоваться внутри процедуры void setup, например, для указания режима работы сразу нескольким пинам. А также в процедуре void loop, например, в программе для последовательного включения светодиодов на Arduino.

Команды для монитора порта Ардуино
Описание работы программы Arduino с циклами for и while

Описание цикла while Ардуино с примером

Конструкция while в Arduino задается следующим образом:

while (условие){

   // команды, которые будут повторяться

}

Цикл while будет выполняться непрерывно и бесконечно, пока условие в круглых скобках является истиной. Выход из цикла будет достигнут, когда изменится переменная в условии while, поэтому что-то должно изменять ее значение. Изменение переменной может происходить в программном коде внутри цикла или при считывания значений с любого датчика, например, с ультразвукового дальномера HC-SR04 .

byte i=0; // необходимо создать переменную до цикла
while (i<5){ // цикл выполняется, пока i меньше 5

   digitalWrite(13, HIGH);
   delay(500);
   digitalWrite(13, LOW);
   delay(500);

   i++; // изменение переменной

}

При использовании функции while, переменную необходимо создавать до начала цикла. В примере скетча светодиод моргнет пять раз, прежде чем закончится цикл. Если не изменять переменную внутри фигурных скобок i++, то цикл будет повторяться бесконечно. Второй способ сделать выход из цикла while Arduino Uno, это считывать данные с датчика и использовать условный оператор if для изменения переменной.

Еще один цикл, который можно использовать в Arduino IDE — это цикл с постусловием do … while. При использовании данной конструкции команды в цикле выполнятся минимум один раз, вне зависимости от условия, так как условие проверяется уже после выполнения тела цикла. В следующем примере кода, светодиод включится независимо от показаний датчика и только потом выполнится проверка постусловия.

int water; // создаем переменную до цикла
do {

   digitalWrite(13, HIGH);
   water = analogRead(AO);

} while (water<5) // выполняем проверку датчика

digitalWrite(13, LOW);
Циклы void loop и void setup в скетче Ардуино
Циклы void loop и void setup в скетче Ардуино

Как выйти из цикла while или for

В том случае, если необходимо выйти из тела цикла, независимо от обозначенных условий, используется оператор break или goto. Оператор break позволяет выйти из цикла и программа продолжит выполнение следующих команд. Оператор goto позволяет не только выйти из цикла, но и продолжить выполнение программы с нужного места по метке, например, можно перейти в другой цикл в Arduino.

1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5,00 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *