Библиотеки
Очень часто одни и те же части кода кочуют из программы в программу. Например, код для работы с датчиком. Чтобы не писать этот код каждый раз заново, его выносят в отдельные файлы — библиотеки. Огромное количество готового кода уже написано другими людьми, и с помощью библиотек его можно легко использовать в своих программах.
Подключение библиотек
Библиотеки в составе Arduino IDE
Очень много готовых библиотек уже содержатся в среде Arduino IDE. Добавить библиотеку в свой код можно из меню :
После выбора пункта «Servo» IDE сама вставит в код нужные строчки:
#include <Servo.h> void setup() { // установочный код, выполняется один раз } void loop() { // основной код, выполняется циклично после установочного кода }
Конечно, если вы знаете название нужной библиотеки, можно просто написать в самом верху скетча #include <Servo.h>
— результат будет тем же самым.
Чтобы посмотреть пример работы с библиотекой из состава Arduino IDE, необходимо выбрать в меню
Сторонние библиотеки
Библиотек для Arduino действительно очень много. И только незначительная часть из них входит в среду программирования Arduino IDE. Многие библиотеки можно найти на сайте GitHub.
Давайте попробуем добавить в свой проект библиотеку для работы с четырёхразрядным индикатором. На странице описания товара есть ссылка на библиотеку для работы с ним.
Если зайти на страницу библиотеки, можно увидеть множество файлов библиотеки и примеры работы с ней. Но нас пока будет интересовать только кнопка Download ZIP
:
После нажатия на неё начнётся загрузка .zip-архива со всеми файлами библиотеки. В данном случае это будет файл QuadDisplay-master.zip
. Название библиотеки может состоять только из латинских букв и цифр, при этом название не может начинаться с цифры, поэтому давайте сразу переименуем наш архив. Теперь он будет называться QuadDisplay.zip
.
После загрузки архива нужно зайти в Arduino IDE и выполнить импорт библиотеки в вашу рабочую папку Sketchbook/libraries
, в которой должны находится все сторонние библиотеки. Сделать это можно прямо из среды программирования в меню
:
Откроется диалоговое окно, в котором необходимо выбрать наш архив QuadDisplay.zip
и нажать кнопку Open
.
Готово. Теперь библиотеки можно добавлять в код. Примеры работы с библиотекой доступны в меню
В Arduino 1.6.7 и выше:
Создание библиотеки
Обычно при создании библиотеки создаются два файла: заголовочный файл и файл с кодом библиотеки. Давайте попробуем написать библиотеку, которая позволяла бы нам посчитать площадь круга.
Создадим в директории %Sketchbook%\Arduino\libraries
папку с названием нашей библиотеки (название может состоять только из латинских букв и цифр, но при этом не может начинаться с цифры).
Назовём нашу библиотеку circleArea.
Перейдём в созданную нами папку %Sketchbook%\Arduino\libraries\circleArea
и создадим там два файла:
circleArea.h
— заголовочный файлcircleArea.cpp
— файл с кодом библиотеки.
Код circleArea.h
будет таким:
- circleArea.h
#include <inttypes.h> // пригодится, мы будем использовать числовые типы #define PI 3.14 // два знака после запятой — достаточная точность. //Объявляем нашу библиотечную функцию, ради которой всё и затевалось float circleArea(float radius);
Код circleArea.cpp
будет таким:
- circleArea.cpp
#include <inttypes.h> // пригодится, мы будем использовать числовые типы #include <Arduino.h> // функцию pow() мы возьмём отсюда #include <circleArea.h> // в заголовочном файле находится PI и объявление функции //Реализуем нашу библиотечную функцию, ради которой всё и затевалось float circleArea(float radius) { return PI*pow(radius, 2); }
Использование библиотеки в скетче будет таким:
- circleArea.ino
#include <circleArea.h> 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)); } }