Библиотеки Arduino: подключение. Написание библиотеки для Arduino

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



В данном материале будет показано, как установить библиотеки Arduino для Windows, Mac OSX и Linux, а также будут рассмотрены общие проблемы, связанные с библиотеками Arduino. Статья будет полезна новичкам, впрочем, и заядлые пользователи Arduino могут узнать для кое-что новое.


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


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


Среда разработки Arduino IDE поставляется вместе с набором стандартных библиотек основных полезных функций. Эти библиотеки поддерживают все примеры, включенные в IDE. Функционал стандартных библиотек включает в себя функции базовых видов коммуникации и поддерживает наиболее распространенные устройства вроде сервомоторов и символьных LCD-дисплеев. Стандартные библиотеки располагаются в каталоге Libraries (в папке с Arduino IDE). Если у вас установлены IDE разных версий, то каждая из них будет использовать свои библиотеки.


Пользовательские библиотеки


Сегодня существует большое количество библиотек для большей функциональности и для различных устройств. Такие библиотеки и драйверы зачастую доступны на Arduino Playground, Github и Google Code. Эти библиотеки желательно устанавливать в папку Libraries, которую нужно создать в общей папке с вашими скетчами. Тогда все версии IDE смогут использовать эти библиотеки. В Windows и Mac OS обычно папка со скетчами называется Arduino и располагается в папке Документы или Documents. Для Linux папка называется Sketchbook, и расположена она в /home/(username).



Версии IDE 1.0.2 создают папку Libraries автоматически, младшие версии это делать не умеют, поэтому данную процедуру нужно выполнить вручную.


Для начала откройте File-Preferences (Файл-Настройки).



Найдите расположение папки со скетчами (Sketchbook location).



Создайте там новую папку и назовите ее Libraries.




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


Для начала закройте Arduino IDE, поскольку эта среда сканирует наличие библиотек только при своем запуске. Скачайте необходимую вам библиотеку в zip-архиве, например, с Github.



Откройте zip-файл и разархивируйте библиотеку в папку Libraries.




Дайте библиотеке нормальное имя. Например, IDE не воспримет библиотеку с дефисами в названии.



Запустите IDE и зайдите в File-Examples (Файл-Примеры). Там будут располагаться примеры, использующие возможности новой библиотеки.



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



Устанавливаем библиотеки Arduino для Mac OSX




Найдите скачанную библиотеку в папке Downloads. OSX автоматически откроет zip-файл в данное месторасположение.



Перенесите библиотеку в папку Libraries.








Устанавливаем библиотеки Arduino для Linux


Закройте Arduino IDE. Скачайте zip-файл с репозитория.



Сохраните zip-файл в удобном для вас месте.



Откройте файл и распакуйте (Extract) содержимое в папку Sketchbook/Libraries.





При необходимости дайте библиотеке понятное имя без дефисов и прочих лишних символов. Перезапустите IDE и откройте один из примеров.




Его компиляция без ошибок будет означать правильность установки библиотеки.



Распространенные проблемы, связанные с библиотеками Arduino



"xxxx" does not name a type


Это наиболее частая ошибка, и связана она с тем, что компилятор не может найти библиотеку. Это может быть по следующим причинам: библиотека не установлена, неправильное расположение папки, неправильное наименование папки, неправильное наименование библиотеки, зависимости библиотеки, не перезапущена среда Arduino IDE.


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


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


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


Как ранее было указано, IDE не поймет названия, содержащие в себе символ ‘-‘. Обычно его заменяют на ‘_’.


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


Наименование, идущее после #include в вашей программе, должно полностью соответствовать имени библиотеки.


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


Еще одной причиной, по которой библиотека может не заработать, является неполное ее скачивание с репозитория. Нужно скачивать все предлагаемые файлы и папки.


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


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


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


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

Установка и подключение библиотеки к arduino – достаточно распространенная операция, любой разработчик рано или поздно обязательно сталкивается с нею. Внешний подключаемый код во всех языках программирования используется для экономии времени. Ардуино не исключение: многие датчики, модули, экраны и двигатели требуют достаточно сложные схемы взаимодействия, которые трудно реализовывать в своем коде. Гораздо проще и быстрее скачать нужную библиотеку, быстро подключить ее вручную или с помощью Arduino IDE, а потом использовать во всех своих скетчах. В этой статье вы найдете короткую инструкцию по подключению и использованию библиотек.

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

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

Как узнать список подключенных библиотек к Arduino IDE

Каждая установленная библиотека содержит один или несколько примеров для работы. Они используются для того, чтобы отобразить возможности подключенного к Ардуино устройства. Поэтому самым быстрым способом получить список всех установленных библиотек ардуино – воспользоваться списком примеров в Arduino IDE. Для этого в главном меню выберите Файл,а затем откройте подменю Примеры.

Другим способом является использование меню Скетч и подменю – Подключить библиотеку. Там вы тоже сможете увидеть список библиотек:

Подключение оператором #include заголовочного h файла

Чтобы начать пользоваться библиотекой, нужно в начале программы включить заголовочный h файл директивой include. Например, подключение библиотеки LiquidCrystal.h будет выглядеть так: #include

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

Обязательные файлы в библиотеке

Каждая библиотека должна содержать как минимум 2 файла – это заголовочный файл с расширением.h и файл с исходным кодом с расширением.cpp. В заголовочном файле находятся описание класса, константы и переменные. Во втором файле содержатся коды методов. Помимо двух основных файлов может содержаться текстовый документы keywords.txt и папка examples с кодами примеров использования библиотеки. Файлы h и cpp не обязательно лежат в корне

Редактирование файлов невозможно в Arduino IDE, все изменения можно проводить в любом текстовом редакторе, либо среде разработки C++. Это связано с тем, что в Arduino IDE мы не работаем с файлами cpp, редактор кода не предназначен для “чистого” C, он работает только с языком Arduino.

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

Необходимую библиотеку можно загрузить через интернет. Большинство библиотек имеется на сайте Github. После загрузки библиотеки важно ее добавить в правильную папку, чтобы компилятор смог ее найти и загрузить скетч. Папка, в которой сохранены все коды, создается на компьютере после установки Arduino IDE. Для операционной системы Linux папка имеет название “Scetchbook” и располагается в /home/, на Windows папку «Arduino» можно найти в разделе «Мои документы».

Все библиотеки, которые установлены дополнительно, расположены в папке “Libraries”. Для ранних версий Ардуино папку нужно создать самостоятельно, а начиная с версии 1.0.2, она добавляется при установке Arduino IDE автоматически.

Как установить библиотеку. Пошаговая инструкция

Как только библиотека будет загружена на ПК, нужно начать ее установку. Установить библиотеку можно двумя способами – при помощи средств Arduino IDE и вручную.

Подключение при помощи Arduino IDE

Библиотека скачивается в виде zip-архива. Для ее включения этим способом архив не нужно распаковывать. Чтобы установить ее, нужно зайти в меню Скетч – Подключить библиотеку – Добавить.Zip библиотеку.

Когда откроется окно, нужно выбрать папку «загрузки» в разделе «Этот компьютер». Если же после загрузки библиотеки она была сохранена в другое место, нужно указать его.

Затем нужно выбрать скачанный файл и нажать «открыть».

Библиотека будет установлена, и ей можно пользоваться. Для того, чтобы начать пользоваться примерами Файл – примеры, нужно перезагрузить среду разработки Ардуино.

Установка библиотеки вручную из zip-файла

Перед началом установки нужно выйти из Arduino IDE. Скачанный zip-файл с библиотекой нужно распаковать. В результате мы получим папку, в которой будут располагаться файлы библиотеки с расширением.cpp и.h и каталоги. Полученную папку нужно будет поместить в libraries.

В ОС Windows папку libraries можно найти по маршруту Мои документы – ардуино – libraries. В Linux это будет папка libraries со скетчами.

В конце нужно перезапустить Arduino IDE, загруженная библиотека будет доступна для включения через Скетч – Подключить библиотеку.

Ошибки при подключении библиотеки Arduino

Ниже перечислен перечень возможных ошибок при установке библиотеки и способы борьбы с ними:

  • ‘xxxx’ does not name a type – подобная ошибка появляется, если библиотеку еще не установили, папка или библиотека названа неверно, указан неправильный адрес расположения папки или не перезапущена среда разработки Arduino IDE.
  • Неправильное расположение папки – если высветилась эта ошибка, нужно проверить, находится ли библиотека в папке, доступной для поиска средой.
  • Неправильное наименование библиотеки – ошибка появляется, если имя после #include не соответствует названию библиотеки.
  • Неполная библиотека – может появиться, если были скачаны не все нужные файлы и папки.
  • Зависимости библиотеки – так как этот тип библиотек работает только с дополнительными, нужно изначально подключить именно их.

Доброго времени суток, уважаемые читатели и пользователи портала Трешбокс! Задавались ли вы вопросом, что такое библиотеки и зачем они нужны в программировании 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.

Итог

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

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

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

Используем Library Manager

Чтобы установить новую библиотеку в Arduino IDE , можно воспользоваться Library Manager , который появился в версии .

В меню Эскиз выбираем Include Library → Manage Libraries...

После этого откроется менеджер библиотек и вы увидите список библиотек, которые уже установлены или готовы к установке. Уже установленные библиотеки помечены как INSTALLED .

В этом примере мы будем устанавливать библиотеку Encoder . Найдите ее в списке и выберете версию, которую вы хотели бы установить. В некоторых библиотеках вам будет доступна только одна версия, поэтому не волнуйтесь, если не увидите меню выбора версии библиотеки.

После этого появится индикатор процесса установки и после ее завершения статус библиотеки Encoder сменится на INSTALLED . Теперь эта библиотека станет доступной для добавления в наши программы, используя меню Эскиз → Include Library .

Импорт библиотеки в виде файла .zip

Часто библиотеки можно встретить в виде упакованной в zip -архив папки. Название этой папки является именем библиотеки. Внутри папки обязаельно будет файл .cpp и заголовочный .h файл. Также часто можно встретить файл keywords.txt , папку с кодом примеров использования этой библиотеки и другие требуемые для этой библиотеки файлы.

После скачивания библиотеки в виде zip -архива его не нужно распаковывать. Для установки запакованной библиотеки служит меню Эскиз → Include Library → Add .ZIP Library.

После этого нужно указать путь к zip -файлу библиотеки. Этот zip -файл будет распакован и помещен в папку libraries в директорию со скетчами Arduino .

Нужно отметить, что после установки библиотека становится доступной через меню Эскиз → Include Library , но для того, чтобы стали доступны файлы примеров этой библиотеки, используя меню Файл → Образцы, необходимо перезапустить Arduino IDE .

Ручная установка библиотеки

Для ручной установки библиотеки, прежде всего, нужно закрыть приложение Arduino IDE . Затем распакуйте, скаченный zip-файл. Например, мы хотим установить гипотетическую библиотеку RobotoshaArduino . Распаковав файл RobotoshaArduino.zip , мы должны получить папку RobotoshaArduino с файлами типа RobotoshaArduino.cpp и RobotoshaArduino.h внутри. Если после распаковки мы получаем файлы без папки, то нужно создать вручную папку RobotoshaArduino , поместив внутрь полученные библиотечные файлы.

После этого необходимо переместить эту папку в папку libraries , расположение которой зависит от используемой вами операционной системы.

Для Windows, по умолчанию, это:

Мои документы\Arduino\libraries

Для пользователей Mac OS X :

~/Документы/Arduino/libraries

В Linux это будет папка libraries с вашими скетчами.

Очень важно, чтобы библиотечные файлы .cpp и .h находились в отдельной папке (как в примере RobotoshaArduino ). Если поместить файлы .cpp и .h просто в папку libraries , то библиотека работать не будет.

После перезапуска Arduino IDE добавленная библиотека станет доступна для подключения ее к свои программам через меню Эскиз → Include Library .

Как вы оцениваете эту публикацию?

Данный документ описывает создание библиотеки для 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, содержащий пример. Также необходимо добавить комментарии о том, как лучше использовать библиотеку.