г. Москва, ул.Новороссийская, дом 21, к.64. м.Люблино,ПН-ПТ с 10.00 до 19.30 и СБ с 12.00 до 16.00
+7(985) 997-37-74
24.01.2016

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

24.01.2016

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

Структура программы

Каждая программа для Arduino, которые так же называют скетч, имеет в своем составе два основных раздела:

void setup () {   }

Все команды заключенные между фигурными строками { } выполняются один раз при запуске программы (при включении Arduino).

void loop () {   }

Эта подпрограмма выполняется циклически вплоть до отключения питания, после завершения подпрограммы setup().

Синтаксис программы

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

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

 

Переменные

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

boolean

(двоичная) Простой тип переменной типа True/False. Занимает только один бит в памяти

int

(целочисленная) Основная рабочая лошадка, хранится в памяти с использованием двух байт (16 бит). Может содержать целое число в диапазоне -32 768 … 32 767.

float

(с плавающей запятой) Используется для вычислений с плавающей запятой. Занимает в памяти 4 байта (32 бита) и имеет диапазон -3.4028235Е+38.

long

(длинная) Используется в том случае, когда не хватает емкости int. Занимает в памяти 4 байта (32 бита) и имеет диапазон -2 147 483 648 … 2 147 483 647.

char

(символ)Хранит один символ, используюя кодировку ASCII (например «A» =65). Использует один байт памяти (8 бит). Arduino оперирует со строками как с массивами символов.

  

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

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

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

 

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

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

 == (равно) (Например 12==10 не верно (FALSE), 5==5 верно(TRUE).)
 != (не равно) (Например 12!=10 верно (TRUE), 5!=5 не верно (FALSE).)
 <  (меньше) (Например 12 (больше) (Например 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++) {}

 

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

digitalWrite(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В)
.