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

ООО "Инекскон"
Кемеровская область, г. Юрга,
выезд к клиенту по городу бесплатный

Три закона робототехники
(А. Азимов)

введение в разработку программного обеспечения (ПО) для контроллеров

Программирование

Логика работы микропроцессорной системы определяется программным обеспечением, которые в них закладываются. Программа представляет собой файл содержащий описание алгоритма работы на языке понятном машине. В зависимости от языка программирования программа может храниться как в двоичном коде – для компилируемых языков, так и в текстовом формате для интерпретируемых языков. Но в любом случае для восприятия контроллером программа приводится к машинному коду и только после этого выполняется.

Языки программирования классифицируют по уровням. На низком уровне находится машинный язык, непосредственно воспринимаемый микроконтроллером, он представляет собой двоичную запись программы в формате малопонятном человеку. Для улучшения восприятия кода применяется язык программирование Ассемблер, он мало отличается от машинного кода - каждая команда контроллера заменена на мнемоническое описание, которое проще воспринимается человеком. Языки высокого уровня программирования, такие как СИ++, в своем составе имеют сложные конструкции, которые могут содержать десятки команд машинного уровня. Эффективность работы на таких языках значительна выше, не требуется изучение архитектуры контроллера, нет необходимости вникать в особенности работы устройства.

Для начала работы с микроконтроллерами достаточно изучить программирование на языке высокого уровня, но в дальнейшем для получения более эффективного кода просто необходимо изучение архитектуры контроллера и набора его команд.


Установка программного обеспечения (Интегрированная среда разработки IDE):

Для разработки программного обеспечения производители Arduino предлагают среду разработки, которая распространяется бесплатно. Рассмотрим пошагово процесс установку ПО под управлением операционной системы Windows, (как наиболее распространенную).

Шаг 1: Загрузить программное обеспечение можно как с нашего сайта:
arduino-1.0.6-windows.zip
так и с официального сата
http://arduino.cc/en/Main/Software - есть возможность выбора операционной системы для вашей операционной системы например Mac OSX
Шаг 2: файл находится в архиве, его необходимо извлечь на жесткий диск Вашего компьютера
arduino-00xx-win.zip (, где хх- номер версии).
Шаг 3: доступ к среде разработки осуществляется через файл:
[Диск]:\[папка с распакованной программой]\Arduino.exe
Для этого файла можно создать ярлык и вынести его на рабочий стол.
Шаг 4: для продолжения работы необходимо подключить Arduino к свободному порту вашего компьтера
На экране должно появиться диалоговое окно «Добавление нового оборудования»
Шаг 5: для добавление нового оборудования
- пропустите опцию «поиск драйверов в интернете»;
- укажите местоположение папки с драйверами [Диск]:\[папка с распакованной программой]\drivers\

Для операционных систем Vista и Seven пятый шаг немоного отличается

Запустите Диспетчер устройств (Device Manager)
Кнопка Пуск(Start) > Выполнить (Run) > devmgmt.msc Выберите Arduino
Другие устройства (Other Devices) > Arduino Uno (Uno)
Обновите драйвер (Update Driver)
Выберите драйвер "Browse My Computer for Driver Software" [Диск]:\[папка с распакованной программой]\drivers\

Основы программирования Arduino

Освоение любого языка программирования очень длительный процесс, который никогда не заканчивается. Но для начала работы достаточно уяснить структуру и синтаксис языка, теория программирования всегда остается неизменной. Трудности которые встречаются на первом этапе освоения быстро исчезают по мере практического использования языка при решении конкретных задач.

Структура

Каждая программа Arduino (часто называемая «скетч») имеет две обязательные функции (также называемые подпрограммами).

void setup(){ }
все команды, заключенные между фигурными скобками, выполняются только один раз, при первом запуске программы.
void 1oop(){ }
эта подпрограмма выполняется циклически вплоть до отключения питания, после завершения подпрограммы setup().

Синтаксис

Требования к форматированию в языке С вызывают некоторые затруднения у начинающих (с другой стороны, благодаря своей структуре, язык С обладает большими возможностями). Если Вы запомните следующие правила, этого будет вполне достаточно.

// (однострочный комментарий)
Часто используется для размещения в тексте программы комментариев. Можно пояснять, что значит каждая строка программы. Все что размещается после двойной черты и до конца строки будет игнорироваться компилятором.
{ } (фигурные скобки)
Используются для определения начала и конца блока команд (используются в функциях и циклах).
/* */(многострочный комментарий)
Вы можете использовать эту структуру, если Вам надо создать подробный комментарий на нескольких строках. Все находящееся между этими символами будет игнорироваться компилятором.
; (точка с запятой)
Каждая команда должна заканчиваться этим символом (потерянная точка с запятой — наиболее распространенная ошибка, приводящая к невозможности компиляции).

Переменные

Любая программа всего лишь определенным образом манипулирует числами. Переменные помогают жонглировать цифрами.

int (целочисленная)
Основная рабочая лошадка, хранится в памяти с использованием двух байт (16 бит). Может содержать целое число в диапазоне -32 768 ... 32 767.
long (длинная)
Используется в том случае, когда не хватает емкости int. Занимает в памяти 4 байта (32 бита) и имеет диапазон -2 147 483 648 . 2 147 483 647.
boolean (двоичная)
Простой тип переменной типа True/False. Занимает только один бит в памяти.
float (с плавающей запятой)
Используется для вычислений с плавающей запятой. Занимает в памяти 4 байта (32 бита) и имеет диапазон -3.4028235Е+38.
char (символ)
Хранит один символ, используюя кодировку ASCII (например «A» =65). Использует один байт памяти (8 бит). Arduino оперирует со строками как с массивами символов.

Математические операторы

Операторы используются для преобразования чисел.

= (присвоение)
делает что-то равным чему-то(например х=10*2 записывает в переменную х число 20).
% (остаток от деления)
Например 12%10 дает результат 2.
+ (сложение)
- (вычитание)
* (умножение)
/ (деление)

Операторы сравнения

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

= = (равно)
(Например 12= = 10 не верно (FALSE), 5==5 верно(TRUE).)
!= (не равно)
(Например 12! = 10 верно (TRUE), 5!=5 не верно (FALSE).)
< (меньше)
(Например 12<10 не верно (FALSE), 12<12 не верно (FALSE), 12<14 верно (TRUE).)
> (больше)
(Например 12>10 верно (TRUE), 12>12 не верно (FALSE), 12>14 не верно (FALSE).)

Управляющие структуры

Для определения порядка выполнения команд (блоков команд) служат управляющие структуры. Здесь приведены только основные структуры. Более подробно можете ознакомиться на сайте Arduino.

if (условие 1) {} else if (условие 2) {} else {}
Если условие 1 верно (TRUE) выполняются команды в первых фигурных скобках. Если условие 1 не верно (FALSE) то проверяется условие 2. Если условие 2 верно, то выполняются команды во вторых фигурных скобках, в противном случае выполняются команды в третьих фигурных скобках.
for (int i=0; ^число повторов; i++) {}
Эта структура используется для определения цикла. Цикл повторяется заданное число раз. Переменная i может увеличиваться или уменьшаться.

Цифровые сигналы

digita1write(pin, value);
Если порт установлен в режим OUTPUT, в него можно записать HIGH (логическую единицу, +5В) или LOW (логический ноль, GND).
pinMode(pin, mode);
Используется, чтобы определить режим работы соответствующего порта. Вы можете использовать адреса портов 0...19 (номера с 14 по 19 используются для описания аналоговых портов 0...5). Режим может быть или INPUT (вход) или OUTPUT (выход).
digitalRead(pin);
Если порт установлен в режим INPUT эта команда возвращает значение сигнала на входе HIGH или LOW.

Аналоговые сигналы

Arduino - цифровое устройство, но может работать и с аналоговыми сигналами при помощи следующих двух команд:

analogWrite(pin,value);
Некоторые порты Arduino (3,5,6,9,10,11) поддерживают режим ШИМ (широтно¬импульсной модуляции). В этом режиме в порт посылаются логические единицы и нули с очень большой скоростью. Таким образом среднее напряжение зависит от баланса между количеством единиц и нулей и может изменяться в пределах от 0 (0В) до 255 (+5В).
analogRead(pin);
Если аналоговый порт настроен в режим INPUT, то можно измерить напряжение на нем. Может принимать значения от 0 (0В) до 1024 (+5 В)