Контроль исполнения программы 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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо

Новое

Радиатор алюминиевый 40х40х20 мм

Радиатор алюминиевый 40х40х20 мм

Радиатор алюминиевый без наклейки.Используется для охлаждения греющихся элементов электронной констр..

ЦАП цифро-аналоговый преобразователь I2C

ЦАП цифро-аналоговый преобразователь I2C

Цифро-аналоговый преобразователь с I2C интерфейсомИспользуется для организации аналогового выхо..

USB амперметр вольтметр тестер

USB амперметр вольтметр тестер

Этот тестер показывает напряжение и ток потребления устройства, подключенного к USB-порту компьютера..

Аналого-цифровой преобразователь I2C четырехканальный

Аналого-цифровой преобразователь I2C четырехканальный

Модуль аналого-цифрового преобразователя для подключения аналоговых датчиков и других источников сиг..

CNC шилд для Arduino NANO

CNC шилд для Arduino NANO

Шилд для Arduino NANO для управления 3D-принтером или CNC-станком.На шилде предусмотрены три пл..

Вентилятор 5В 40мм

Вентилятор 5В 40мм

Вентилятор системы охлаждения греющихся элементов электронной конструкции.Используется для обдува ра..

Вольтметр аналоговый 0 ... 20В 0,25

Вольтметр аналоговый 0 ... 20В 0,25

Аналоговый стрелочный вольтметр с классом точности 0,25Диапазон измеряемого напряжения 0 ... 20 ВПре..

Вольтметр аналоговый 0 ... 5В 0,25

Вольтметр аналоговый 0 ... 5В 0,25

Аналоговый стрелочный вольтметр с классом точности 0,25Диапазон измеряемого напряжения 0 ... 5 ВПред..