Циклы 6 — Прерывание циклов
Введение
При работе с циклами в Arduino бывают ситуации, когда нужно досрочно выйти из цикла или пропустить определённую итерацию. Для этого в языке C/C++, на котором основано программирование Arduino, используются операторы break и continue, а также return для выхода из функции.
Оператор break
Оператор break немедленно завершает выполнение текущего цикла (или switch-блока) и передаёт управление на первую строку кода после него.
// Пример: выход из цикла при нахождении элемента
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Выход из цикла
}
Serial.println(i);
}
Оператор continue
Оператор continue прерывает текущую итерацию цикла и сразу переходит к следующей, пропуская оставшийся код в теле цикла.
// Пример: вывод только нечётных чисел
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // Пропускаем чётные числа
}
Serial.println(i);
}
Оператор return
Оператор return завершает выполнение всей функции и возвращает управление в место её вызова. Его можно использовать для досрочного выхода из loop() или любой другой функции.
void printPositive(int number) {
if (number < 0) {
return; // Выход, если число отрицательное
}
Serial.println(number);
}
Практика
Прерывание поиска при нахождении элемента
int values[] = {3, 7, 5, 8, 2};
void setup() {
Serial.begin(9600);
for (int i = 0; i < 5; i++) {
if (values[i] == 8) {
Serial.println("Найдено!");
break;
}
Serial.println(values[i]);
}
}
void loop() {
}
Пропуск чётных чисел при выводе
void setup() {
Serial.begin(9600);
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue;
}
Serial.println(i);
}
}
void loop() {
}
Проект: «Сканер клавиатуры»
В этом проекте используется клавиатура 4×4 и библиотека Keypad. Сканирование останавливается при нажатии первой найденной клавиши.
#include
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
}
void loop() {
for (int r = 0; r < ROWS; r++) {
for (int c = 0; c < COLS; c++) {
char key = keypad.getKey();
if (key) {
Serial.print("Нажата кнопка: ");
Serial.println(key);
break; // Останавливаем поиск
}
}
}
}
Заключение
Операторы break, continue и return позволяют гибко управлять выполнением циклов и функций в Arduino, делая программы более эффективными и управляемыми.




