Установка и подключение библиотеки ардуино. Установка и подключение библиотек в Arduino IDE

Одной из причин популярности Arduino является простота использования разнообразных периферийных устройств (модулей): дисплеев, драйверов двигателей, модулей беспроводной связи (Bluetooth, wi-fi, XBee или ISM) и т. д.

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

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

Основным источником библиотек для Arduino являются производители аппаратного обеспечения, создающие их для обеспечения поддержки в IDE Arduino.

Где можно найти библиотеки к Ардуино

Если вам нужна поддержка Arduino для определенного оборудования (модуля), попробуйте просмотреть сайт производителя модуля. Вы также можете посетить сайт Arduino , в котором собрано множество популярных библиотек.

В противном случае попробуйте выполнить поиск в Google, например, наберите «Arduino library» и название вашего оборудования.

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

Подключение встроенной библиотеки вызывается из меню «Скетч — Подключить библиотеку — …» далее выбираем необходимую библиотеку (в нашем случае «Servo»).

При выборе библиотеки, Arduino IDE автоматически добавит в ваш код соответствующую директиву #include.

#include // подключаем библиотеку поддержки сервоприводов.

Если в IDE нет необходимой предустановленной библиотеки, то ее необходимо установить самостоятельно. Для этого есть 2 способа.

Первый способ: Добавление библиотеки из репозитория Ардуино.

Создатели Arduino разместили в интернете базу различных библиотек. Если вам не хватает какой-то библиотеки, то вы можете поискать ее в репозитории. Для этого выберите в меню «Скетч – Подключить библиотеку – Управлять библиотеками».

В этом окне вы можете скачать из интернета новую или обновить уже существующую библиотеку.

Второй способ: Добавление библиотеки, скаченной из интернета.

Поскольку в среде Arduino почти все легко и просто, установка дополнительных библиотек тоже не вызывает больших сложностей. В качестве примера мы покажем установку библиотеки для работы с радиомодулем системы беспроводной связи NRF24L01 от компании Nordic Semiconductor.

Библиотеки для Arduino, предназначенные для самых популярных модулей доступны на странице http://arduino.cc/libraries. Программное обеспечение (библиотеки) для менее популярных модулей, как правило, находятся на сайтах производителей этих модулей.

В случае радиомодуля NRF24L01, библиотека поддержки этого модуля в среде Arduino была создана на базе библиотеки, разработанной для микроконтроллеров AVR . Документацию по этой библиотеке и саму библиотеку можно скачать с сайта https://github.com/stanleyseow/arduino-nrf24l01

После того как вы скачали архив библиотеки arduino-nrf24l01-master.zip, необходимо ее установить в IDE. Для этого перейдите в меню «Скетч – Подключить библиотеку – Добавить ZIP библиотеку»

Затем укажите местоположение скаченного файла arduino-nrf24l01-master.zip и нажмите кнопку Open.

После этого, как правило, мы имеем установленную библиотеку. Но, к сожалению, часто бывает так, что Arduino сигнализирует ошибку «Выбранная папка/zip файл не содержит корректных библиотек»

В таком случае библиотеку можно установить вручную. Для этого необходимо распаковать скачанный файл arduino-nrf24l01-master.zip и папку «Mirf» скопировать в папку «libraries». Либо можно поместить папку «Mirf» в C:\….\Documents\Arduino\libraries (тогда библиотека будет доступна из IDE разных версий).

После перезагрузки IDE Arduino мы можем подключить данную библиотеку, а также воспользоваться примерами для радиомодуля NRF24L01

Как удалить библиотеку в Aрдуино

Если вы разобрались, как можно установить новую библиотеку в IDE, то для вас не будет проблемой и с ее удаление (в случае необходимости).

Все, что требуется от вас для удаления библиотеки, это удалить папку библиотеки из каталога «libraries» в IDE или (если библиотека установлена в «Документы») из каталога C:\….\Documents\Arduino\libraries

Библиотеки для Arduino - это удобное средство для распространения кода. Например, это могут быть драйвера к оборудованию или часто используемые функции.

В этом гайде подробно рассмотрено как устанавливать библиотеки на ваш компьютер.

Существует два основных вида библиотек Arduino: стандартные и дополнительные.

Стандартные библиотеки

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

Стандартные библиотеки устанавливаются в папку "Libraries" при установке Arduino IDE. Если у вас установлено несколько версий IDE, в каждой версии будет свой набор библиотек. Настоятельно не рекомендуется изменять стандартные библиотеки и устанавливать дополнительные в ту же папку.

Дополнительные библиотеки

В интернете выложено огромное количество дополнительных библиотек с удобным функционалом и драйверами для различного периферийного оборудования. В основном библиотеки выкладываются на Arduino Playground, Github и Google Code. Написанием библиотек для Arduino часто занимаются компании-производители сенсоров, датчиков, печатных плат и т.п. Например, Adafruit предлагает более 100 библиотек, которые поддерживают все модели плат Arduino.

Устанавливайте дополнительные библиотеки в папку Libraries. Благодаря этому их можно использовать во всех версиях Arduino IDE. После обновления версии вам не придется их переустанавливать!

Куда устанавливать библиотеки

Важно установить библиотеки в правильную папку. Иначе компилятор не сможет их отыскать, когда вы будете компилировать и загружать ваш код.

Папка, где хранятся все скетчи Arduino, создается автоматически при установке IDE.

На Linux папка называется "Scetchbook" и обычно расположена в /home/<username>

На Windows и Macintosh, папка называется "Arduino" и находится она папке Documents (Мои документы).

Обратите внимание, это важно! В папке "Мои документы" автоматически создается еще папка под названием "Arduino"!

Дополнительные библиотеки должны располагаться в папке "Libraries", которая находится внутри "Scetchbook" или "Arduino". Именно там IDE будет искать дополнительно установленные библиотеки.

Начиная с версии Arduino IDE 1.0.2 и позже, папка "Libraries" создается автоматически. На более ранних версиях ее надо создать перед установкой вашей первой библиотеки.

Откройте меню и выберите "File->Preferences" в Arduino IDE.

>

Найдите расположение ваших скетчей. Обычно это папка "Arduino" в папке "Мои документы".

После того, как вы определили путь, перейдите в эту папку с помощью проводника.


Если папка "Libraries" отсутствует, создайте новую папку.


Переименуюте ее в "Libraries".

Установка библиотек в Windows

Для установки библиотеки в Windows, следуйте инструкции, приведенной ниже.

Закройте Arduino IDE

Убедитесь, что Arduino IDE закрыта, так как сканирование библиотек происходит только при загрузке IDE. Новая библиотека не будет работать, пока вы не перезагрузите IDE.

Скачайте Zip Файл с Github.


Скопируйте разархивированную папку


Вставьте ее в вашу папку с библиотеками.


Дайте ей корректное имя. Arduino IDE не распознает папки с тире в названии. Так что придется переименовать папку. Можно использовать нижние тире.


Перезапустите Arduino IDE и проверьте, появилась ли библиотека в пункте меню File->Examples.

Для проверки загрузите один из примеров.


Перед загрузкой примера на плату, проведите проверку скетча.


Установка библиотек на Mac OSX

Для корректной установки дополнительных библиотек на Mac OSX, следуйте инструкции, которая приведена ниже

Закройте Arduino IDE.

Скачайте архив с библиотекой с Github.


Найдите скачанный архив в папке загрузок на вашем маке.


Разархивируйте и скопируйте библиотеку в папку с библиотеками, которая была создана при установке Arduino IDE.


Дайте библиотеке корректное имя. Как и в случае с Windows, папки с тире не читаются.


Перезапустите Arduino IDE. Библиотека должна появиться в меню File->Examples.

Загрузите один из примеров.


Проверьте корректность скетча перед его загрузкой на вашу Arduino.

Установка библиотек на Linux

Для установки пользовательских библиотек на Linux, следуйте инструкции, которая представлена ниже.

Опять таки, закрываем Ardino IDE.

Скачиваем архив с нужной нам библиотекой.


Сохраняем архив на жесткий диск нашего ПК.


Находим скачанный архив в папке для загрузок.


Разархивируем библиотеку и копируем в папку Sketchbook/Libraries.


Даем папке корректное имя. Без тире!


Перезапускаем Arduino IDE и проверяем, появилась ли библиотека в папке File->Examples menu.

Загружаем один из примеров.


Проверяем, компилируется ли файл примера без ошибок.


Распространенные ошибки при установке библиотек для Arduino

"xxxx" does not name a type


Это самая распространенная ошибка при работе с внешними библиотеками. Причина - компилятор не может найти библиотеку. Возможные причины возникновения этой ошибки:

  • Библиотека не установлена (смотрите инструкцию по установке выше).
  • Неправильное расположение папки.
  • Неправильное имя папки.
  • Неправильное имя библиотеки.
  • Вы забыли перезагрузить Arduino IDE.

Ниже расписаны решения возможных проблем

Неправильное расположение папки

IDE находит только стандартные библиотеки и дополнительные, которые установлены в папке "Libraries". Библиотеки, которые расположены в других местах, не будут инициализироваться

Папка с библиотекой должна быть в корне папки "Libraries". Если вы создадите дополнительную подпапку, IDE не обнаружит библиотеку.

Примечание: в некоторых хранилищах в интернете, библиотеки выложены с дополнительным уровнем вложенности папок. Проверьте этот момент. Файлы библиотеки должны находится в первой папке, без дополнительных подпапок.

Не полная библиотека

Не стоит переименовывать файлы в библиотеке с использованием заглавных букв, тире и т.п.

Неправильное имя папки

IDE не обнаруживает папки с определенными символами в названии. К сожалению, IDE не поддерживает тире, которые генерируются в именах файлов на Github. Поэтому после скачивания архива, переименуйте папку. Новое имя не должно содержать тире. Можно просто заменить все символы (‘-‘) на (‘_’).

Неправильное имя библиотеки

Имя, которые вы указываете в директиве #include в вашем скетче, должно полностью соответствовать имени класса в библиотеке (с учетом регистра букв!). Если имя не будет совпадать, IDE не подключит нужные функции, классы и т.п. В примерах, которые прилагаются к библиотекам, имена указаны правильно. Так что для избежания случайных ошибок, можно их просто копировать и вставлять в ваш код.

Несколько версий библиотек

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

Зависимые библиотеки

Некоторые библиотеки зависят от других библиотек. Например, большинство библиотек Graphic Display Libraries от Adafruit зависят от Adafruit GFX Library. То есть, для использования первой библиотеки вам надо иметь установленную вторую.

“Базовые” библиотеки

Некоторые библиотеки нельзя использовать напрямую. Хороший пример, библиотека GFX Library. Эта библиотека обеспечивает работу большинства дисплеев от Adafruit, но не может использоваться без библиотеки драйверов для этого дисплея.

Забыли закрыть Arduino IDE

Не забывайте, что IDE ищет библиотеки при загрузке. Перед использованием новой установленной библиотеки, Arduino IDE надо перезагрузить.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Доброго времени суток, уважаемые читатели и пользователи портала Трешбокс! Задавались ли вы вопросом, что такое библиотеки и зачем они нужны в программировании Arduino? В любом случае, ответы на оба эти вопроса узнаете в этой статье.

Что это такое?

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

Для большей понятности, приводу пример. Вы подключили сервопривод к Arduino. Для того, чтобы с ним взаимодействовать, вам нужно подключить встроенную библиотеку Servo.h . Делается это в самом начале вашего скетча при помощи команды #include Servo.h.
Библиотека Servo.h включает в себя набор команд, для удобного управления сервоприводом.

Сервопривод


Ниже будет пример кода с объяснениями.

#include // команда #include подключает библиотеку
Servo myservo; // объявляем переменную с названием myservo типа Servo
void setup() // стандартная процедура setup
{
myservo.attach(10); // команда.attach привязывает сервопривод к порту 10 (можно любой другой)
}
void loop()
{
myservo.write(0); // команда.write поворачивает вал сервопривода под нужный угол (можно от 0 до 180)

myservo.write(180); // поворачиваем вал на 180 градусов
delay(2000); // пауза 2 секунды
}

Что нужно выделить для себя из данного кода:

  • С помощью // обозначается однострочный комментарий, если нужен многострочный комментарий, то помещаем его в /*… */.
  • С помощью команды #include можно подключить любую библиотеку.
  • Команды .attach() и .write() относятся к библиотеке Servo.h.
  • Команда delay() не относится к библиотеке Servo.h, она принадлежит к стандартным командам языка Arduino.
  • Перед любой командой пишется название переменной типа Servo.
  • Одна переменная относится только к одному сервоприводу.
Библиотек бывает очень много, и их можно скачать в интернете, если начнете поиск по подключению нужного вам модуля. К слову, язык программирования Arduino называется Wiring и является упрощенной версией C++.

Как устанавливать библиотеки?

Для внедрения библиотеки в код, ее нужно установить, а до этого ее нужно скачать. Скачанная вами библиотека будет в виде архива, который потребуется распаковать для дальнейшей установки. Далее, папку с библиотекой необходимо перенести в папку Arduino/libraries. Подробную установку можете посмотреть ниже на скриншотах.




В случае успешной установки, в Arduino IDE вы сможете найти примеры скетчей из установленной библиотеки.


Важно сказать, что перед использованием свежеустановленной библиотеки, Arduino IDE необходимо перезагрузить.

Виды библиотек

Все библиотеки библиотеки Arduino можно разделить на несколько видов:
  • Стандартные (встроенные) библиотеки - те библиотеки, которые встроены в Arduino IDE. Они не нуждаются в отдельной установке и доступны для использования сразу после установки Arduino IDE.
  • Дополнительные библиотеки - те библиотеки, которые не встроены в Arduino IDE. Их можно найти в интернете, например, на Github. Разработкой данных библиотек занимаются производители датчиков, в основном.
  • Зависимые библиотеки - эти библиотеки относятся к дополнительным. Библиотека, которая не может работать без другой, называют зависимой.

Зачем нужны библиотеки?

Библиотеки в языке программирования Arduino нужны для упрощения кода и для работы с различными модулями. По сути, в одной команде из библиотеки скрывается несколько строчек кода, написанные создателем библиотеки. Теоретически, большинством модулей можно управлять и без библиотек, однако, написания скетча для этого займет очень много времени и сил. Но все же, управлять lcd дисплеем без помощи библиотек у вас вряд ли получится.

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


lcd дисплей с протоколом I2C


Однако, рассмотрим мы не простой текстовый дисплей, а с протоколом I2C. Протокол I2C - это небольшая черная плата на обратной стороне дисплея (вторая фотография). Эта плата вместе с соответствующей библиотекой призвана сократить строки кода и уменьшить количество проводов для подключения, ограничиваясь всего четырьмя.

#include // подключаем библиотеку для работы с I2C
#include // подключаем библиотеку для работы с текстовым дисплеем

LiquidCrystal_I2C lcd(0x27, 16, 2);
/* Для того, чтобы дисплей работал, нужно найти его адрес, но мы не будем это рассматривать в данной статье. 16 - количество ячеек на строку. 4 - количество строк. Эти параметры можно менять, в зависимости от дисплея. */

void setup()

{
lcd.begin(); // включение дисплея
lcd.backlight(); // включение подсветки
lcd.print(«Hello, world!»); // вывод текста
}

void loop()
{
// Здесь ничего не пишем
}

Уверен, вы уже нашли команды относящиеся к библиотеке LiquidCrystal_I2C.h. Это .begin .backlight и .print . В этом скетче библиотека Wire.h нужна для корректной работы протокола I2C.

Итог

Библиотеки очень нужны в программировании. Они позволяют существенно упростить написание скетчей и сделать управление модулями более доступным. В этой статье мы разобрались, что такое библиотеки, как их установить и зачем они нужны. А также рассмотрели пару примеров. На этом все.

В библиотеке уже есть большая часть кода который вам не нужно будет писать, библиотека облегчает работу с определённым модулем или одним из их типов и ее всего лишь необходимо подключить в вашем скетче.

К примеру если вы хотите вывести текст на LCD дисплей без подключения библиотеки, то Вам нужно передать ему несколько байт команд и данных, что займет несколько строк кода, а главное, что Вам нужно знать тип микроконтроллера под управлением которого работает LCD дисплей, назначение команд которыми он управляется, знать архитектуру его памяти, адреса и назначение регистров, для чего потребуется найти и перечитать его datasheet.

В то время как при написании кода с использованием библиотеки (например LiquidCrystal_I2C.h) Вы сможете вывести текст на дисплей вызвав всего одну функцию библиотеки:

Lcd.print(“my text”);

Подключить любую библиотеку можно такой командой:

"#include <файл.h>"

<файл.h> – это и есть та самая библиотека, которую мы подключаем.

Так же вы можете посмотреть пример подключения библиотеки в статье .

Перед тем как начать пользоваться методами и функциями библиотеки, её нужно:

  • скачать (загрузить на Ваш компьютер),
  • установить (разместить в нужной папке),
  • подключить (вставить текст “#include <файл.h>” в скетч).

Каждая библиотека должна содержать 2 файла с расширениями .h и .cpp .

Файлы первого типа содержат:

  • описание класса,
  • константы,
  • переменные.

Второй тип содержит коды методов.

Дополнительно нужно понимать, что файлы .h и .cpp могут не лежать в корне скачанного архива. Также могут с основными файлами идти "keywords.txt" и папка с примерами (examples).

Как установить библиотеку?

После того как Вы скачали (загрузили) библиотеку на свой компьютер, её нужно установить. Установить библиотеку можно вручную или сделать это средствами Arduino IDE:

Установка библиотеки посредством Arduino IDE

Это мы сделаем через меню. Зайдите в меню:

Скетч – Подключить библиотеку – Добавить.ZIP библиотеку

В появившемся окне нажмите на иконку «Этот компьютер» и выберите папку «Загрузки». Если при скачивании ZIP архива с сайта, Вы указывали путь для сохранения файла, то вместо папки «Загрузки» укажите путь к файлу.

Выберите ZIP файл библиотеки, который Вы скачали. Название файла может не соответствовать названию библиотеки. После чего нажмите на кнопку «Открыть » (Open ).

На этом установка библиотеки завершена, можно приступить к её подключению в скетч.

Важно! После установки Arduino IDE на компьютере создается отдельная папка для хранения всех библиотек. Для ОС Linux "Scetchbook", располагается в /home/. Для ОС Windows папка "Arduino", располагается в /Мои документы/.

Установка библиотеки вручную

Распакуйте скаченный Вами ZIP архив и поместите папку (имя папки обычно совпадает с названием библиотеки) из данного архива в папку:

Этот компьютер Документы Arduino libraries

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

Дело в том, что программа постоянно развивается и количество её версий постоянно растёт. Если Вы захотите установить новую версию Arduino IDE, то библиотеки находящиеся в папке (Этот компьютер → Документы → Arduino → libraries) будут доступны и в старой, и в новой (установленной) версии Arduino IDE, а библиотеки находящиеся в папке libraries программы Arduino IDE старой версии (которая была установлена ранее) будут доступны только в ней (пока Вы их не скопируете в новую).

Где найти нужную библиотеку?

Для удобства на нашем сайте есть целый раздел, который так и называется - . Большинство библиотек можно найти в Интернете в открытом доступе.

Также ряд стандартных наборов можно найти на официальном сайта Ардуино: arduino.cc .

Какие библиотеки уже установлены?

Как мы уже обсуждали - сама интегрированная среда разработки уже идет с некоторым .

Есть два способа посмотреть установленные библиотеки.

Способ 1

Чтобы посмотреть какой набор уже установлен нужно перейти во вкладку:

Способ 2

Второй способ - воспользоваться меню "Скетч" и подменю "Подключить библиотеку". Таким образом можно также увидеть список библиотек.

Заходим в Скетч и выбираем Подключить библиотеку:

Скетч → Подключить библиотеку

Возможные ошибки

Иногда при установке библиотек или в процессе их использования могут возникать некоторые ошибки. Ниже разберем основные.

‘xxxx’ does not name a type

Ошибка появляется тогда, когда библиотека еще не установлена.

Также ошибка возникает если папка или библиотека имеет неправильное название.

Может быть указан неправильный адрес расположения папки или не перезапущена среда разработки Arduino IDE!

Неправильное расположение папки

Проверьте, находятся ли все библиотеки по нужному адресу. Адреса папок для разных операционных систем мы приводили выше.

Неправильное наименование библиотеки

Ошибка появляется тогда, когда имя после тега #include не соответствует названию библиотеки.

Неполная библиотека

Не хватает всех нужных файлов и папок.

Зависимости библиотеки

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

Данный документ описывает создание библиотеки для Arduino. Объяснение начнется с написания скетча передачи кода Морзе посредством светодиода. Затем будет показано как конвертировать скетч в библиотеку. Это позволит другим пользователям легко использовать созданный код, обновлять и дополнять его.

Скетч, воспроизводящий код Морзе:

Int pin = 13; void setup() { pinMode(pin, OUTPUT); } void loop() { dot(); dot(); dot(); dash(); dash(); dash(); dot(); dot(); dot(); delay(3000); } void dot() { digitalWrite(pin, HIGH); delay(250); digitalWrite(pin, LOW); delay(250); } void dash() { digitalWrite(pin, HIGH); delay(1000); digitalWrite(pin, LOW); delay(250); }

Данный скетч посредством мигания светодиода на выводе 13 выдает сигнал SOS.

Скетч содержит ряд частей кода, которые необходимо будет перенести в библиотеку. Во-первых, это функции dot() и dash() , которые управляют миганием светодиода. Во-вторых, это переменная ledPin , определяющая какой порт ввод/вывода использовать. И наконец, вызов функции pinMode() , устанавливающий режим вывода на используемом порту ввода/вывода.

Процесс конвертации скетча в библиотеку.

Библиотека содержит два файла: заголовочный файл (с расширением.h) и файлы реализации (с расширением.cpp). Заголовочный файл содержит характеристики библиотеки, т.е. список всего что содержится в ней. Создаваемый заголовочный файл будет называться Morse.h. Для дальнейшей работы с заголовочным файлом необходимо просмотреть содержание файла реализации.

Заголовочный файл содержит класс, в котором объявляются функций и используемые переменные:

Class Morse { public: Morse(int pin); void dot(); void dash(); private: int _pin; };

Класс в данном случае это набор функций и переменных, объеденных в одном месте. Функции и переменные могут быть публичными (public ), что означает общий доступ к ним всех, кто использует библиотеку, или частными (private ), что означает доступ к ним только внутри класса. Каждый класс имеет специальную функцию конструктор, которая используется для создания экземпляра класса. Конструктор имеет тоже имя, что и класс, но не имеет типа возвращаемого значения.

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

#include "WProgram.h"

В версиях Arduino 1.0 и выше нужно еще добавить:

#include Arduino.h

Также принято заключать содержимое заголовочного файла в следующую конструкцию:

#ifndef Morse_h #define Morse_h // директивы #include и код помещается здесь #endif

Это предотвращает повторное подключение нашей библиотеки, если кто-то по ошибке дважды подключит библиотеку директивой #include .

В начале кода библиотеки принято помещать комментарий о ее предназначении, авторе, дате и лицензии на библиотеку.

Готовый заголовочный файл содержит:

/* Morse.h - Library for flashing Morse code. Created by David A. Mellis, November 2, 2007. Released into the public domain. */ #ifndef Morse_h #define Morse_h #include "WProgram.h" class Morse { public: Morse(int pin); void dot(); void dash(); private: int _pin; }; #endif

Рассмотрим файл реализации Morse.cpp.

В начале кода находятся несколько директив #include . Данными директивами разрешается доступ к стандартным функциям Arduino и к характеристикам в головном файле библиотеки:

#include "WProgram.h" #include "Morse.h"

Далее по коду находится конструктор. Он используется для создания экземпляра создаваемого класса. В данном случае пользователь задает номер используемого порта ввода/вывода через параметр. Порта устанавливается в режим вывода, а номер сохраняется в частной переменной для использования в других функциях:

Morse::Morse(int pin) { pinMode(pin, OUTPUT); _pin = pin; }

Код Morse :: означает, что функция принадлежит классу Morse. Нижний пробел в начале имени переменной _ pin — принятое обозначение для частных переменных. Вообще, имя может быть любое, но согласно принятым конвенциям именования для частных переменных принято использовать префикс "_". Это также позволяет отличить от аргумента функции (в данном случае pin ).

Void Morse::dot() { digitalWrite(_pin, HIGH); delay(250); digitalWrite(_pin, LOW); delay(250); } void Morse::dash() { digitalWrite(_pin, HIGH); delay(1000); digitalWrite(_pin, LOW); delay(250); }

Общепринято помещать некоторые поясняющие комментарии в начале кода файла реализации. Полный код библиотеки:

/* Morse.cpp - Library for flashing Morse code. Created by David A. Mellis, November 2, 2007. Released into the public domain. */ #include "WProgram.h" #include "Morse.h" Morse::Morse(int pin) { pinMode(pin, OUTPUT); _pin = pin; } void Morse::dot() { digitalWrite(_pin, HIGH); delay(250); digitalWrite(_pin, LOW); delay(250); } void Morse::dash() { digitalWrite(_pin, HIGH); delay(1000); digitalWrite(_pin, LOW); delay(250); }

Использование библиотеки.

Во-первых, необходимо создать папку Morse в подпапке libraries директории блокнота. Во-вторых, требуется скопировать файлы Morse.h и Morse.cpp в созданную папку. После запуска программы Arduino в меню Sketch > ImportLibrary будет находиться библиотека Morse. Библиотека будет компилироваться совместно со скетчами, использующими ее. Если при компиляции библиотеки возникли проблемы, то необходимо проверить, чтобы ее файлы были с расширениями.cpp и.h (не должно быть никаких дополнительных расширений.pde и.txt).

Изначальный скетч, переписанный с использованием созданной библиотеки, будет выглядеть следующим образом:

#include Morse morse(13); void setup() { } void loop() { morse.dot(); morse.dot(); morse.dot(); morse.dash(); morse.dash(); morse.dash(); morse.dot(); morse.dot(); morse.dot(); delay(3000); }

Несколько отличий от изначального скетча:

Во-первых, добавлена директивы #include в начало скетча. Таким образом определяется доступность библиотеки Morse и ее подключение. Неиспользуемую библиотеку можно удалить, убрав директиву #include.

Во-вторых, создается экземпляр класса Morse, называемый morse :

Morse morse(13);

При выполнении данной строки (перед выполнением функции setup() ) вызывается конструктор для класса Morse и принимает аргумент, данный в примере (13).

При этом функция setup() ничего не содержит, т.к. вызов функции pinMode() произошел внутри библиотеки (когда был создан экземпляр класса).

В-третьих, для вызова функций dot() и dash() необходимо прибавить префикс morse . - имя используемого экземпляра. Может быть несколько экземпляров класса Morse, каждый со своим номером порта, хранящимся в локальной переменной _pin . Вызовом функции конкретного экземпляра определяются какие переменные, используются во время вызова. При наличии следующих двух строк:

Morse morse(13); Morse morse2(12);

внутри вызова morse2.dot() , переменная _pin будет иметь значение 12.

К сожалению автоматическая подсветка кода не работает с подключаемыми библиотеками. Для того чтобы подсветка заработала необходимо создать файл с названием keywords.txt . Пример:

Morse KEYWORD1 dash KEYWORD2 dot KEYWORD2

Напротив каждой строки через табуляцию стоит зарезервированное слово, и опять через табуляцию тип слова. Классы соответствуют зарезервированному слову KEYWORD1 и окрашены в оранжевый цвет; функции - KEYWORD2 и окрашены в коричневый. Для распознавания слов необходимо перезапустить среду разработки Arduino.

Созданную библиотеку желательно всегда сопровождают примером ее применения. Для этого создается папка examples в директории Morse . Затем копируется созданный ранее скетч SOS в данную папку. (Файл скетча можно найти через меню Sketch > ShowSketchFolder ). После перезапуска Arduino в меню File > Sketchbook > Examples будет находиться пункт Library-Morse, содержащий пример. Также необходимо добавить комментарии о том, как лучше использовать библиотеку.




Top