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

Новое

Логический анализатор 8 каналов

Логический анализатор 8 каналов

Цифровой логический анализатор на 8 каналовПодключается к USB-порту компьютера и работает с родной п..

Линейный подшипник 8мм

Линейный подшипник 8мм

Подшипник для линейного скольжения рабочего органа 3D-принтера или CNC по своим осям.Одевается на ци..

Подшипник для зубчатого ремня GT2 без зубьев

Подшипник для зубчатого ремня GT2 без зубьев

Подшипник для натяжения зубчатого ремня GT2 6мм на ось 5 ммПрименяется в 3D-принтерах и CNCШирина 10..

Подшипник для зубчатого ремня GT2 20 зубьев

Подшипник для зубчатого ремня GT2 20 зубьев

Подшипник для натяжения зубчатого ремня GT2 6мм на ось 5 мм20 зубьевШирина 10 мм..

HTTP запрос через GSM GPRS модуль NEOWAY M590

HTTP запрос через GSM GPRS модуль NEOWAY M590

Постановка задачи. В этом проекте посмотрим на практический пример отправки http get запроса при по..

GSM GPRS модуль A6

GSM GPRS модуль A6

Один из самых продвинутых модулей GSM для использования в любительских проектахК контроллеру подключ..

Модуль твердотельного реле 1-канальный

Модуль твердотельного реле 1-канальный

Модуль предназначен для коммутации нагрузки с переменным напряжением питания 75 ... 264 ВМаксимальны..

Модуль твердотельного реле 2-канальный

Модуль твердотельного реле 2-канальный

Модуль предназначен для коммутации двух нагрузок с переменным напряжением питания 75 ... 264 ВМаксим..

Светодиод ультраяркий 5мм

Светодиод ультраяркий 5мм

Сверхяркий светодиод диаметром 5 ммКорпус прозрачный у светодиодов разного цвета свечения. То есть р..

Радиомодуль NRF24L01+PA+LNA 2,4 ГГц

Радиомодуль NRF24L01+PA+LNA 2,4 ГГц

Модуль радио-приемника, -передатчика 2,4 ГГц для экономной безпроводной связи между любительскими ко..

Кусачки PLATO 170

Кусачки PLATO 170

Долгоиграющие кусачки с удобными мощными ручкамиПрименяются при монтаже любительских электронных про..

Направляющая с линейным подшипником 8 мм ширина 30 мм

Направляющая с линейным подшипником 8 мм ширина 30 мм

Направляющая в составе 3D-принтера или CNC для крепления подвижного рабочего органа к направляющим ц..

Модуль часов реального времени DS1302 + батарейка

Модуль часов реального времени DS1302 + батарейка

Модуль часов для любительских контроллеров на основе специализированной микросхемы DS1302Напряж..

Датчик влажности и температуры DHT21

Датчик влажности и температуры DHT21

Это точный и готовый к вывешиванию прямо на улице датчик относительной влажности и температуры со ст..

Твердотельное реле 240В 2А

Твердотельное реле 240В 2А

Реле без механических переключающихся контактов на основе симистораТакие реле из-за их быстродействи..

Кулиса с подшипником 3х10х4 мм

Кулиса с подшипником 3х10х4 мм

Подшипник с ограничительным кольцом применяется в качестве колеса для движущихся рабочих органов 3D-..