ARDUINO — программное обеспечение.

Часть 2. Программное обеспечение.

   Боязнь сложности различных языков программирования иногда сразу отталкивает начинающих радиолюбителей, в основном, когда вокруг масса рекомендаций по работе с ассемблером — масса инструкций, правил и ограничений. Да еще работа со стеком и битами управления…. Для использования ассемблера необходимо очень хорошо знать «внутренности» микроконтроллера — адреса регистров управления и многое другое. При частой практике программирования все это само собой усваивается и запоминается, а целая группа шаблонов уже написанных частей кода, способствует быстрому написанию новых программ. Но для изучения основ программирования на Ардуино С, много изучать «внутренних частей» МК не придется. Достаточное количество функций кода Си для Ардуино включает в свои исполнительские действия много операций с регистрами МК, но все они зачастую скрыты от пользователя. Это облегчает с одной стороны быстрое освоение написания первых программ, но не дает полного понятия о внутренней структуре МК. Но забегая вперед, следует отметить, что минимальные знания основ и правил, а так же синтаксиса операторов и процедур языка Си все же необходим.

  Среда разработки Arduino состоит из встроенного текстового редактора программного кода, области сообщений, окна вывода текста(консоли), панели инструментов с кнопками часто используемых команд и нескольких меню. Для загрузки программ и связи среда разработки подключается к аппаратной части Arduino. Программа, написанная в среде Arduino, называется скетч. Скетч пишется в текстовом редакторе, имеющем инструменты вырезки/вставки, поиска/замены текста. Во время сохранения и экспорта проекта в области сообщений появляются пояснения, также могут отображаться возникшие ошибки. Окно вывода текста(консоль) показывает сообщения Arduino, включающие полные отчеты об ошибках и другую информацию. Кнопки панели инструментов позволяют проверить и записать программу, создать, открыть и сохранить скетч, открыть мониторинг последовательной шины. Для работы со скетчами необходимо прежде всего скачать и установить с оригинального сайта  последнюю версию ARDUINO IDE под нужную операционную систему. В этих статьях рассматривается компьютер под управлением виндовс. Далее при первом старте открывается стандартное окно интерфейса:

интерфейс

В заголовке окна пишется название скетча и версия установленного ПО.

Строка главного меню содержит разделы: ФАЙЛ, ПРАВКА, СКЕТЧ, ИНСТРУМЕНТЫ, ПОМОЩЬ.

Раздел ФАЙЛ включает -

Новый /Ctrl-N/ — создает новый экземпляр ПО с заготовкой чистого скетча;

Открыть /Ctrl-O/  — открывает рабочий каталог со скетчами для загрузки нужного;

Открыть недавние — открытие списка недавно созданных / запускаемых скетчей

Папка со скетчами — открывает указанную в настройках  папку с сохраненными скетчами

Папка с примерами — открывает оригинальные скетчи с примерами от разработчиков

Закрыть /Ctrl-W/ — закрывает скетч и окно интерфейса

Сохранить /Ctrl-S/ — сохраняет скетч в рабочей папке по умолчанию

Сохранить как.. /Ctrl-Shift-S/ — сохраняет созданный/редактируемый скетч под новым именем

Настройка страницы /Ctrl-Shift-P/ — открывает меню настройки страницы

Печать /Ctrl-P/ — открывает меню печати документа

Настройки /Ctrl-Comma/ — открывает меню настроек программы

Выход /Ctrl-Q/ — закрывает программу.


Раздел ПРАВКА включает -

Отменить /Ctrl-Z/ — отменяет последние сделанные изменения

Вернуть /Ctrl-Y/ — возвращает отменненые последние сделанные изменения

Вырезать /Ctrl-X/ — вырезает часть текста в буфер обмена

Копировать /Ctrl-C/ — копирует часть текста в буфер обмена

Копировать для форума /Ctrl-Shift-C/ — копирует часть текста в буфер обмена для размещения на форуме в интернете

Копировать в HTML /Ctrl-Alt-C/ — копирует часть текста в буфер обмена для последующей вставки в веб-страницу

Вставить /Ctrl-V/ — вставить из буфера обмена код в окно редактора

Выделить все /Ctrl-A/ — выделить весь текст в окне редактора в буфер обмена

Перейти к строке /Ctrl-L/ — переход к строке за указанным номером

Добавить/Удалить коментарий /Ctrl-/ / -добавляет удаляет начало однострочного комментария

Увеличить отступ /Tab/ — увеличивает отступ в окне редактора

Уменьшить отступ /Shift — Tab/ — уменьшает отступ в окне редактора

Увеличить размер фонта /Ctrl-Scroll mouse up/ — увеличивает размер фонта редактора

Уменьшить размер фонта /Ctrl-Scroll mouse down/ — уменьшает размер фонта редактора

Найти /Ctrl-F/ — найти часть указанного кода

Найти далее /Ctrl-G/ — найти часть указанного кода далее по тексту

Найти предыдущее /Ctrl-Shift-G/ — найти часть указанного кода выше по тексту


Раздел СКЕТЧ включает —

Проверка/Компиляция /Ctrl-R/ — проверка скетча на ошибки

Загрузка /Ctrl-U/ — загрузка скетча в МК через загрузчик Ардуино

Загрузка через программатор /Ctrl-Shift-U/ — загрузка скетча через подключенный программатор

Экспорт бинароного файла /Ctrl-Alt-S/

Показать папку со скетчами /Ctrl-K/ — открывает папку, содержащую файл скетча, на рабочем столе.

Добавить библиотеку — открывает подменю и добавляет библиотеку в текущий скетч, вставляя директиву #include в код скетча

Добавить файл…  — добавляет файл в скетч (файл будет скопирован из текущего места расположения). Новый файл появляется в новой закладке в окне скетча. Файл может быть удален из скетча при помощи меню закладок.


   Практически все микроконтроллеры имеют стандартную схему программы — в самом начале идут константы, подключаемые хидеры и глобальные переменные, затем инициализация векторов (адресов) прерывания если таковые используются, затем начальные установки для периферии МК (направление и ввод/вывод по портам, использование таймеров и АЦП, настройка режимов работы UART — скорость и биты и тд.). void setup(){ } Все команды, заключенные между фигурными скобками, выполняются только один раз, при первом запуске программы.

    После этого идет цикл (главное тело программы) 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 оперирует со строками как с массивами символов.


МАТЕМАТИЧЕСКИЕ ОПЕРАТОРЫ

= (присвоение), присваивает операнду слева значение операнда справа (например х = 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).)


ОПЕРАТОРЫ УПРАВЛЕНИЯ

- if (условие 1) оператор — если условие 1 верно (TRUE) выполняются;

- if (условие 1) {} else {}  — если условие 1 верно (TRUE) выполняются команды в первых фигурных скобках. Если условие 1 не верно (FALSE) то выполняются команды во
вторых фигурных скобках;

- if (условие 1) {} else if (условие 2) {} else {}  — если условие 1 верно (TRUE) выполняются команды в первых фигурных скобках. Если условие 1 не верно (FALSE) то проверяется условие 2. Если условие 2 верно, то выполняются команды во вторых фигурных скобках, в противном случае выполняются команды в третьих фигурных скобках.


   Еще один немаловажный момент  — индексы выводов для управления в скетчах Ардуино относятся не к нумерации выводов микроконтроллера, к номерам выводов на плате!!!! Это самый главный момент для начала программирования. Поэтому, до начала написания скетча, необходимо получить схему электрическую, принципиальную и проводить все подключения внешних элементов в соответствии с ней во избежание некорректной работы.

Часть3. Присматриваясь к железу.