====== Библиотеки ======
Очень часто одни и те же части кода кочуют из программы в программу. Например, код для работы с датчиком. Чтобы не писать этот код каждый раз заново, его выносят в отдельные файлы — библиотеки. Огромное количество готового кода уже написано другими людьми, и с помощью библиотек его можно легко использовать в своих программах.
===== Подключение библиотек =====
==== Библиотеки в составе Arduino IDE ====
Очень много готовых библиотек уже содержатся в среде [[articles:arduino-ide-install | Arduino IDE]]. Добавить библиотеку в свой код можно из меню
Эскиз
Импорт библиотек…
//Название библиотеки//
:
{{ :arduino-быстрый-старт:library-import.png?direct&300 |}}
После выбора пункта «Servo» IDE сама вставит в код нужные строчки:
#include
void setup() {
// установочный код, выполняется один раз
}
void loop() {
// основной код, выполняется циклично после установочного кода
}
Конечно, если вы знаете название нужной библиотеки, можно просто написать в самом верху скетча ''#include '' — результат будет тем же самым.
Чтобы посмотреть пример работы с библиотекой из состава Arduino IDE, необходимо выбрать в меню
Файл
Образцы
//Название библиотеки//
//Название примера//
{{ :arduino-быстрый-старт:library-import-example.png?direct&300 |}}
==== Сторонние библиотеки ====
Библиотек для Arduino действительно очень много. И только незначительная часть из них входит в среду программирования Arduino IDE. Многие библиотеки можно найти на сайте [[https://github.com/|GitHub]].
Давайте попробуем добавить в свой проект библиотеку для работы с [[amp>product/troyka-quad-display|четырёхразрядным индикатором]]. На странице описания товара есть [[https://github.com/amperka/QuadDisplay|ссылка на библиотеку]] для работы с ним.
Если зайти на страницу библиотеки, можно увидеть множество файлов библиотеки и примеры работы с ней. Но нас пока будет интересовать только кнопка ''**Download ZIP**'':
{{ :arduino-быстрый-старт:downloadziplibrary.png?direct&300 |}}
После нажатия на неё начнётся загрузка .zip-архива со всеми файлами библиотеки. В данном случае это будет файл ''QuadDisplay-master.zip''. Название библиотеки может состоять только из латинских букв и цифр, при этом название не может начинаться с цифры, поэтому давайте сразу переименуем наш архив. Теперь он будет называться ''QuadDisplay.zip''.
После загрузки архива нужно зайти в Arduino IDE и выполнить импорт библиотеки в вашу рабочую папку ''Sketchbook/libraries'', в которой должны находится все сторонние библиотеки. Сделать это можно прямо из среды программирования в меню
Эскиз
Импорт библиотек…
Добавить библиотеку…
:
{{ :arduino-быстрый-старт:addlibrary.png?direct&300 |}}
Откроется диалоговое окно, в котором необходимо выбрать наш архив ''QuadDisplay.zip'' и нажать кнопку ''**Open**''.
Готово. Теперь библиотеки можно добавлять в код. Примеры работы с библиотекой доступны в меню
Файл
Sketchbook
libraries
//Название библиотеки//
//Название примера//
{{ :arduino-быстрый-старт:addlibraryexample.png?direct&300 |}}
В Arduino 1.6.7 и выше:
Файл
Примеры
//Название библиотеки//
//Название примера//
===== Создание библиотеки =====
Обычно при создании библиотеки создаются два файла: заголовочный файл и файл с кодом библиотеки. Давайте попробуем написать библиотеку, которая позволяла бы нам посчитать площадь круга.
Создадим в директории ''%Sketchbook%\Arduino\libraries'' папку с названием нашей библиотеки (название может состоять только из латинских букв и цифр, но при этом не может начинаться с цифры).
Назовём нашу библиотеку circleArea.
Перейдём в созданную нами папку ''%Sketchbook%\Arduino\libraries\circleArea'' и создадим там два файла:
* ''circleArea.h'' — заголовочный файл
* ''circleArea.cpp'' — файл с кодом библиотеки.
Код ''circleArea.h'' будет таким:
#include // пригодится, мы будем использовать числовые типы
#define PI 3.14 // два знака после запятой — достаточная точность.
//Объявляем нашу библиотечную функцию, ради которой всё и затевалось
float circleArea(float radius);
Код ''circleArea.cpp'' будет таким:
#include // пригодится, мы будем использовать числовые типы
#include // функцию pow() мы возьмём отсюда
#include // в заголовочном файле находится PI и объявление функции
//Реализуем нашу библиотечную функцию, ради которой всё и затевалось
float circleArea(float radius)
{
return PI*pow(radius, 2);
}
Использование библиотеки в скетче будет таким:
#include
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
for (int i=1; i<5; ++i ) {
Serial.print("circle area with radius ");
Serial.print(i);
Serial.print(" = ");
Serial.println(circleArea(i));
}
}