Для создания программ, которые носят название скетчи, и программирования плат Ардуино используется среда разработки и отладки программ (IDE – integrated development environment), которую можно бесплатно скопировать с сайта сообщества разработчиков www.arduino.cc (рис. 2).
Рис. 2. СтартовоеСибАДИокно программы для разработки программ для Ардуино
Скетч пишется в текстовом редакторе. На рис. 3 на светлом фоне выведена заготовка для нап сания программы. Здесь используется язык Processing, близкий по синтаксису к языку С. Окно вывода сообщений расположено ниже. Здесь на темном фоне печатаются сообщения о результатах компиляции программы, включающие полные отчеты об
ошибках и другую информацию.
Рис. 3. Окно текстового редактора для разработки программ для Ардуино
6
Кнопки панели инструментов позволяют проверить и записать программу, создать, открыть и сохранить скетч, открыть мониторинг последовательной шины. Дополнительная функциональность может быть добавлена с помощью библиотек. Существует множество специализированных библиотек, их можно скачать с сайтов разработчиков.
Обычно библиотеки пишутся так, чтобы упростить решение той или иной задачи и скрыть от разработчика детали программно-аппаратной реализации. Программы библиотек пишутся на языке С++.
Среда Arduino IDE поставляется с набором стандартных библиотек:
Serial, EEPROM, SPI, Wire и др.
Atmel Studio 7 – бесплатная интегрированная среда разработки приложений на микроконтроллерах семейств Atmel SMART и AVR и
Веб-платформы, которую можно скачать с сайта фирмы. Atmel START – мощный инструмент для создания и настройки встроенных приложений, драйверов и типовых проектов, позволяет разработчикам создавать собственные программные платформы. Atmel Studio 7 позволяет использовать скетчи, созданные в Arduino IDE, и конвертировать их в С++ проекты. Также эта среда позволяет разрабатывать и отлаживать
программы |
на |
языке Ассемблер для микроконтроллеров AVR [5] |
(рис. 4, 5). |
|
|
СибАДИ
Рис. 4. Стартовое окно программы Atmel Studio 7
7
РисСибАДИ. 5. Окно Atmel Studio 7, в котором выбирается среда для разработки программ для Ардуино
Рис. 6. Окно программы UnoArduSim
8
Написать программу для Arduino Uno и отладить её в режиме реального времени может помочь бесплатный симулятор (программа для моделирования) UnoArduSim [6], который позволяет испытать разрабатываемое устройство без наличия каких-либо фактических аппаратных средств. Устройство собирается из виртуальных деталей: платы Arduino Uno, серводвигателей, цифровых и аналоговых генераторов формы сигнала, пьезоэлементов, светодиодов, кнопок, резисторов подтягивания, переменных потенциометров, устройств ввода/вывода с возможностью подключения устройств с использованием последовательных интерфейсов (UART, I2C и SPI) с выбираемой скоростью передачи данных. Поддерживаемые библиотеки: Servo.h,
SoftwareSerial.h, Wire.h, SPI.h и eeprom.h.
Таким образом, имея в наличии только компьютер, можно выполнить разработку устройства управления на базе Ардуино и проверить его
работу. |
СибАДИ |
|
|
||
|
1.3. |
Примеры проектов |
В IDE – среде разработки программ Ардуино − есть примеры (образцы). Один из них обычно предлагается начинающим. Этот пример, который находится в Файл → Образцы → 01.Basics → Blink, демонстрирует управление светодиодом LED, находящимся на плате и подключенным к цифровому выводу 13. Новая плата Ардуино (приобретенная в магазине) запрограммирована этим примером для демонстрации её исправности. Итак, пр мер Blink позволяет мигать светодиодом,
между включением |
выключен ем которого секундная задержка. |
|
Для выдержки |
паузы между вкл/выкл LED в 1 с |
использована |
функция delay(). В это время контроллер не может выполнять другие команды в функции loop().
Возьмем для примера плату Ардуино «Жук» («Beetle») (рис. 7) и попробуем перепрограммировать её флеш-память программ.
Светодиод
синего
цвета
Рис. 7. Плата Адруино «Жук»
9
Плату необходимо подключить к компьютеру с помощью кабеля USB, имеющего один из разъемов микроUSB.
Код исходной программы: /* Мигание LED
* ------------
*Включает и выключает светодиод (LED), подсоединенный
*к выходу 13, с интервалом в 2 секунды
*/
int ledPin = 13; // LED подсоединен к выводу 13 void setup()
{
pinMode(ledPin, OUTPUT); |
// устанавливаем вывод 13 как выход |
|
} |
|
|
void loop() |
|
|
{ |
|
|
digitalWrite(ledPin, HIGH); |
// включаем LED |
|
delay(1000); |
// пауза 1 секунда |
|
digitalWrite(ledPin, LOW); |
// выключаем LED |
|
delay(1000); |
// пауза 1 секунда |
|
} |
|
|
Внесем изменение в программу, не изменяя её функциональность: |
||
вместо установки на выводе 13 состояния HIGH, а затем обратно LOW будем инвертировать текущее значение ledPin. Т.е. если оно было HIGH, то станет LOW, и наоборот.
Теперь взаменСибАДИdelay() используем функцию millis(). Данная функция возвращает количество миллисекунд, прошедшее с момента запуска или сброса (нажатием на кнопку Reset) текущей программы. Функция переполнится (вернется в нуль) приблизительно через 50 суток работы программы.
Код, реализующ й те же функции:
void loop()
{ digitalWrite(ledPin, !digitalRead(ledPin)); // включаем/выключаем LED
delay(1000); |
// задержка 1 сек. |
} |
|
Альтернативной функцией является micros(), которая возвращает количество микросекунд, прошедшее с момента запуска текущей программы. Функция переполнится (вернется в нуль) приблизительно через 70 мин работы программы.
Код:
/* Мигание LED Версия 2
*Включает и выключает светодиод (LED), подсоединенный
*к выходу 13, с интервалом в 2 секунды, используя функцию millis().
10