6,

Arduino-библиотеки — прихоть или необходимость?

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

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

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

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

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

#include <Servo.h> // команда #include подключает библиотеку
Servo myservo; // объявляем переменную с названием myservo типа Servo
void setup() // стандартная процедура setup
{
myservo.attach(10); // команда .attach привязывает сервопривод к порту 10 (можно любой другой)
}
void loop()
{
myservo.write(0); // команда .write поворачивает вал сервопривода под нужный угол (можно от 0 до 180)
delay(2000); // пауза 2 секунды
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-библиотеки — прихоть или необходимость?

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

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

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

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

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

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

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

#include <Wire.h> // подключаем библиотеку для работы с I2C
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для работы с текстовым дисплеем

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.

Итог

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


 
ars_klas
ars_klas3, 15 марта 2017 - 06:56   (...)
Ну не скажи, для использования данного текстового дисплея не обязательно иметь две библиотеки, можно просто подключить его без I2C, просто через стандартную библиотеку «жидких пикселей». Скетч ничуть не увеличится, он даже станет меньше. Единственное-это нужно с проводами немножко покопаться, но это не составит особой проблемы.
Ответить
_EnjoylifE_
_EnjoylifE_6, 15 марта 2017 - 08:48   (...)
Возможно, я работал пока только с I2C. Да и на руках он был
Ответить
AndreyK
AndreyK 1, 16 марта 2017 - 13:37   (...)
Язык программирования для ардуинки что-то среднее между паскалем и c++.
Ответить
Последнее изменение:

Добавить комментарий
Если нужно ответить кому-то конкретно,
лучше нажать на «Ответить» под его комментарием