Працюємо з 09:00 до 19:00 без вихідних
Київ біля ТЦ Квадрат бул.Перова

Контроль виконання програми Arduino

Ця стаття присвячена опису структур, що використовуються для управління циклом виконання програми (логіка управління). Управління логікою Arduino таке ж як в мові C. І ми зупинимось на процедурах, що характерні тільки середовищу Arduino.

Пряма структура

Пряму структуру корисно поюзати, коли невідомо чи прийшли дані на ком-порт чи ні. Перед запуском вікна serial monitor ви повинні переконатися, що з'єднання налаштоване та працює. Пам'ятайте, що в Arduino нема операційної системи, яка вирішувала би проблеми використання ресурсів, а отже, ви можете успішно зкомпілювати та запустити скетч, з використанням послідовного зв'язку, але він може повести себе непередбачувано, якщо канал зв'язку не існує, але налаштований правильно. Повідомлення Serial.available () повертає true, якщо присутні символи, що очікують зчитування в послідовній лінії, та false в протилежному випадку. Для того щоб перевірити, чи є символи для читання з лінії, ви можете написати щось схоже на

Serial . begin (9600);

...

if ( Serial . available ()) {

char c = Serial . read ();

Serial . print (c);

}

...

З Serial.read (), ви можете зчитати тільки один символ.


Циклічна структура

Циклічна структура, не менш цікава для програмування Arduino. Такий метод, доволі часто використовується в стандартних скетчах Arduino, до них наприклад відноситься блок loop (). Цей блок повторює створену в собі програму безліч разів. Якщо вам не потрібно, щоб контролер після ініціалізації щось робив, вам необхідно залишити блок loop() порожнім:

while (1) {

// do nothing

}

Інше використання циклічної структури це очікування символів на послідовній шині та зчитування цих рядків в масив:

char ch = NULL ;

char str [255] = {0};

int i = 0;

while (ch != '\n ') {

if ( Serial . available ()) {

ch = Serial . read ();

str[i ++] = ch;

}

}

У наведеному вище коді, ми визначаємо масив символів, елементи якого встановлені в NULL. Потім ми починаємо читати символи з послідовної лінії, як тільки вони стають доступними (Serial.available ()). Після того, як символи зчитуються за допомогою Serial.read (), вони додаються до масиву. Індекс наступного елемента (i) оновлюється й цикл продовжується до тих пір, поки останній символ не набуде значення "перевід рядка".


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

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Регулювання температури повітря вікном

Регулювання температури повітря вікном

Как часто мы попадаем в ситуацию, когда засыпаем теплым летним вечером, а просыпаемся от ночного рез..

Модуль зарядки та захисту акумулятора 3,7В або 4,2В 1А

Модуль зарядки та захисту акумулятора 3,7В або 4,2В 1А

Плата для зарядки літіумних акумуляторів 3,6 - 4,2В та живлення його навантаження.Зарядка відбуваєть..

17.47грн.

Коннектор питания влагозащищенный 5,5х2,1мм (2,5)

Коннектор питания влагозащищенный 5,5х2,1мм (2,5)

Коннектор влагозащитный с резиновой пробкой для заводки питания в корпус электронного устройства.Про..

10.71грн.

Звуковий сигналізатор 16 Ом

Звуковий сигналізатор 16 Ом

Пасивный звуковий сигналізатор для підключення до дискретного виходу контролераМініатюрний розмірОпі..

5.20грн.

Кінцевик для 3D принтера або CNC ramps 1.4

Кінцевик для 3D принтера або CNC ramps 1.4

Кінцевий вимикач для встановлення на 3D-принтер або CNC-верстат системи ramps 1.4В комплекті кабель ..

25.47грн.