Цикли 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, роблячи програми більш ефективними та керованими.

Цикли 7 — Цикли та затримки

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Плата захисту балансування 2-х літій-іонних акумуляторів 7,4В

Плата захисту балансування 2-х літій-іонних акумуляторів 7,4В

Контролер BMS захисту двох 18650 акумуляторів з балансиром Захисна плата літієвої батареї, захист в..

112.18грн.

Розумний дім #4: Розумна розетка на ESP32

Розумний дім #4: Розумна розетка на ESP32

Розумний дім #4: Розумна розетка на ESP32 Розумна розетка — один із найбільш затребуваних е..

Буфери цифрових сигналів: навіщо потрібні та як правильно обрати мікросхему

Буфери цифрових сигналів: навіщо потрібні та як правильно обрати мікросхему

Буфери цифрових сигналів: навіщо потрібні та як правильно обрати мікросхему Буфер цифрового с..

Набір перетинок (папа-папа) 40шт 20см

Набір перетинок (папа-папа) 40шт 20см

Набір з"єднувальних дротів для поєднання плат контролера з периферією без пайки. Підходять під станд..

88.83грн.

Шестерня для зубчатого ременю на 36 зубців під вісь 8 мм

Шестерня для зубчатого ременю на 36 зубців під вісь 8 мм

Використовується для передачі та редукції обертаючого моменту від двигуна до вісі 8 ммКількість зубц..

94.71грн.