ELECTRONICS

Библиотеки Arduino: где брать и как ставить

Библиотека — это чужой код, который берёт на себя разговор с конкретной железкой. Вместо того чтобы вручную разбирать импульсы датчика, вы пишете dht.readTemperature() и получаете число. Почти к любому модулю такая библиотека уже написана.

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

Способ первый: через менеджер библиотек

Основной и самый безопасный. Среда сама скачает нужную версию, положит куда надо и предложит поставить зависимости.

  1. 1

    Откройте менеджер

    В версии 1.8 это «Скетч → Подключить библиотеку → Управлять библиотеками». В версии 2.x — иконка книжек на левой панели.

  2. 2

    Найдите по названию

    Вводите название модуля или библиотеки: «DHT», «MFRC522», «LiquidCrystal I2C». В списке смотрите на автора — у популярных железок бывает по пять разных библиотек от разных людей.

  3. 3

    Нажмите «Установить»

    Если библиотека тянет за собой другие, среда спросит — соглашайтесь. После установки она сразу появится в примерах: «Файл → Примеры».

Способ второй: ZIP-архив

Так ставят библиотеки, которых нет в менеджере: скачанные с GitHub или приложенные продавцом модуля. На странице проекта на GitHub нажмите зелёную кнопку «Code» и выберите «Download ZIP». Затем в среде: «Скетч → Подключить библиотеку → Добавить .ZIP библиотеку».

Важно: архив нужен целиком, распаковывать его заранее не надо. Среда сама разберётся со структурой папок.

Способ третий: положить папку руками

Запасной вариант, когда архив собран неправильно и среда его не принимает. Библиотеки лежат в папке Документы/Arduino/libraries. Распакуйте туда папку с библиотекой так, чтобы файлы .h и .cpp оказались прямо внутри неё, а не ещё в одной вложенной папке. После этого среду надо перезапустить — она сканирует папку только при старте.

Что такое Arduino.h

Этот файл ищут отдельно и часто. Разберём, потому что путаница здесь типична.

Arduino.h — не библиотека, которую надо где-то скачивать. Это заголовочный файл самой платформы, где объявлены все базовые команды: digitalWrite, delay, analogRead. Он уже установлен вместе со средой.

В обычном скетче его подключать не нужно — среда делает это за вас автоматически. Строка #include <Arduino.h> нужна только в двух случаях: если вы пишете собственную библиотеку в отдельных файлах или если работаете не в Arduino IDE, а в PlatformIO — там автоматики нет.

Если компилятор жалуется именно на Arduino.h, дело почти всегда не в файле, а в том, что не выбрана плата: «Инструменты → Плата». Без выбранной платы среда не знает, где искать платформу.

Ошибка «no such file or directory»

Самое частое сообщение при работе с чужими скетчами. Компилятор нашёл строку #include, но файла у вас нет. Причины по убыванию частоты:

Библиотека просто не установлена

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

Установлена, но среда не перезапущена

Если папку клали руками, среда её ещё не видит. Перезапуск решает.

Лишняя вложенная папка

Распаковали архив, и получилось libraries/DHT-master/DHT-master/DHT.h вместо libraries/DHT/DHT.h. Среда ищет файлы на один уровень вглубь и дальше не смотрит.

Библиотека для другой платы

Некоторые библиотеки написаны только под ESP32 или только под AVR. Компилятор найдёт файл, но упадёт дальше — на командах, которых нет у вашего процессора.

Две библиотеки с одинаковым именем

Отдельная беда, которая проявляется странно: скетч перестаёт компилироваться после установки новой библиотеки, хотя раньше работал. Так бывает, когда две библиотеки объявляют файл с одним и тем же именем — например, обе кладут LiquidCrystal_I2C.h. Среда выберет одну, и не факт, что нужную.

Лечится удалением лишней из папки libraries. Понять, какую именно взял компилятор, можно, включив подробный вывод при компиляции в настройках — он напечатает полный путь к каждому файлу.

Рядом