====== Библиотеки ====== Очень часто одни и те же части кода кочуют из программы в программу. Например, код для работы с датчиком. Чтобы не писать этот код каждый раз заново, его выносят в отдельные файлы — библиотеки. Огромное количество готового кода уже написано другими людьми, и с помощью библиотек его можно легко использовать в своих программах. ===== Подключение библиотек ===== ==== Библиотеки в составе 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)); } }