Библиотеку для датчика DHT я в первый раз ставил по инструкции с форума: скачать ZIP с GitHub, распаковать, а папку — «куда-нибудь к библиотекам». Я догадался закинуть её в Program Files, куда установилась среда, и ещё не убрал суффикс -master из имени папки. Компилятор не нашёл ничего: строка подключения к несуществующему имени падала, и я трижды проверял провод, прежде чем заподозрил, что дело не в железе. Вечер закончился на официальной странице про установку библиотек — где всё то же самое делается одним окном без единого архива.
Менеджер библиотек — это когда вместо ручного копирования папок вы ищете библиотеку по имени, нажимаете «Установить» и получаете проверенную версию в правильное место. Обновления — отдельной кнопкой, старые версии — из выпадающего списка, зависимости — одним диалогом. ZIP-путь остаётся для случаев, когда на машине нет интернета или библиотека нигде не опубликована, но в девяти случаях из десяти менеджер быстрее, а главное — не оставляет после себя файлов в случайных местах.
Здесь разберём: где открыть менеджер, как читать карточку библиотеки, что делать с версиями и зависимостями, куда файлы падают на диске и как не поймать поломку от необдуманного обновления. Ручная установка из ZIP-архива — тема отдельного урока, сегодня же — штатная дорога, по которой я хожу сам и советую каждому.
Где открыть и как читать карточку
В IDE 2 менеджер живёт на панели слева — иконка с книгами — и дублируется в меню «Инструменты — Управлять библиотеками». Вверху строка поиска, рядом фильтры по типу и теме. Типы честно отражают происхождение: официальные библиотеки от команды Arduino, партнёрские от крупных производителей плат, и всё остальное — от сообщества. Поиск по названию датчика часто находит даже больше, чем вы искали: наберите dht — увидите и библиотеки сенсора, и обёртки над ним.
Карточка библиотеки — это резюме: версия, автор, лицензия, дата последнего обновления и размер индекса установок. README под карточкой показывает, как библиотека выглядит в коде, ещё до установки. Моя привычка после одной неудачной покупки времени: смотреть на дату обновления. Библиотека, которую не трогали пять лет, может конфликтовать со свежим ядром — но и обратное бывает: старичок-стабильный живёт лучше вчерашнего релиза с новым API. Смотрите на оба числа и на текст карточки, а не только на кнопку.
Кнопка «Установить» — единственное обязательное действие. Среда скачает архив из индекса, распакует его в sketchbook/libraries и через мгновение библиотека видна в меню примеров и доступна в коде. Ничего перезапускать не нужно — я по привычке перезапускал среду первые два раза, пока не убедился, что это лишнее.
Поиск в менеджере умеет больше, чем точное совпадение, и этим стоит пользоваться. Забыли имя — наберите предмет: «ds18b20», «oled», «servo». Видите у знакомой библиотеки чужую карточку с похожим описанием — посмотрите на автора и количество установок: у популярных названий встречаются двойники с почти тем же именем, и я однажды поставил такую подделку-обёртку, полчаса разбирался, почему API не совпадает с документацией. Имя автора в карточке — лучшая страховка от этой путаницы.
Рядом с кнопкой «Установить» — выпадающий список версий. Зачем нужна старая версия: туториалы и готовые проекты пишут под конкретный API, а авторы библиотек иногда ломают совместимость между крупными версиями. Если проект из статьи собирается с ошибками на свежей библиотеке, откат на версию из статьи занимает десять секунд и часто спасает вечер. Число установок в карточке при этом честно подсказывает, какой вариант выбирало большинство.
Второе, о чём молчат многие инструкции, — зависимости. Ставите библиотеку, которой нужна другая, — среда покажет диалог и предложит установить всё сразу. Соглашайтесь: это не ошибка, а экономия трёх заходов в поиск. Я однажды отказался «чтобы не тащить лишнее», потом ставил недостающую вручную и забыл, какую именно просила первая, — итог тот же, только дольше. С обновлениями та же вежливость: у установленных библиотек появляется пометка о доступной новой версии, и кнопка обновления живёт в той же карточке.
Один нюанс связывает библиотеки с платформой: среда обновляет не только библиотеки, но и ядро платы, и после обновления платформы старые версии библиотек иногда перестают собираться — или наоборот, свежая библиотека требует свежее ядро. Если после обновления всего сразу что-то сломалось, подозревайте не код, а эту пару: откатите то или другое и проверьте. Больше одной перемены за раз я не делаю ещё и поэтому: невозможно понять, что именно изменило поведение.
| Способ | Когда беру | Чем платит |
|---|---|---|
| Library Manager | штатный путь: поиск, версия, обновления в одно окно | нужен интернет; библиотека должна быть опубликована в индексе |
| ZIP в sketchbook/libraries | нет интернета, приватная или самодельная библиотека | обновления вручную; легко ошибиться в имени папки |
| Файлы прямо в папку скетча | одноразовый эксперимент внутри одного проекта | не переиспользуется между проектами, раздувает папку |
#include <Servo.h> Servo flap; void setup() { Serial.begin(9600); flap.attach(9); Serial.println("servo ready");} void loop() { flap.write(30); Serial.print("ang=30 t="); Serial.println(millis()); delay(1000); flap.write(120); Serial.print("ang=120 t="); Serial.println(millis()); delay(1000);}// Пин 9 — любой ШИМ-вывод Uno; подключение сервопривода — отдельный урок.После установки откройте sketchbook/libraries и найдите подпапку с именем библиотеки: внутри исходники, ключевые слова для подсветки и папка examples. Строку подключения в начало скетча удобно добавлять меню «Скетч — Подключить библиотеку»: среда впишет include сама, и вы не ошибётесь в регистре букв — а регистр в этих именах имеет значение, и dht вместо DHT ловится не сразу. Сам include пишется по имени библиотеки в уголках-скобках, как в коде выше.
Три первые ошибки после установки я собрал из своих вечеров. Скомпилировали скетч до установки библиотеки — компилятор честно скажет, что не нашёл такой файл; возвращайтесь в менеджер, а не в гугл. Написали имя в другом регистре — ошибка будет выглядеть загадочнее, чем стоит. Скачали форк с суффиксом в имени папки и подключаете его как оригинал — имена не совпадут. Все три лечатся за минуту, если помнить, что include ссылается ровно на то имя, которое видит среда в папке libraries, а как читать сам текст ошибки, — уже знакомая работа из урока про первый скетч в среде.
Библиотеки из менеджера — материал половины этого самоучителя: дисплей на I2C ставится за полминуты, экран OLED — тем же способом, а сервопривод SG90 из скетча выше поедет на настоящей плате после того, как вы подключите его к пину 9 и внешнему питанию. Даже термометр DHT11, с которого я когда-то начал свой ZIP-детектив, из менеджера ставится в два клика.
История, которая научила меня читать changelog: я обновил одну библиотеку кнопкой Update прямо перед показом поливалки заказчику — и скетч перестал собираться, потому что в новой версии переименовали класс. Откат версии вернул всё за минуту, но показ я спасал уже с чужим сердцебиением в ушах. Теперь обновления ставлю не в день их появления: сначала заглядываю в карточку и читаю, что изменилось, потом обновляю и сразу жму «Проверить» на всех проектах, которые эту библиотеку трогают.
Когда ZIP всё же нужен: библиотека самописная, скачана из чьего-то репозитория мимо индекса или машина offline. Порядок и типовые грабли пути — в уроке про ручную установку; главное на память — папка внутри sketchbook/libraries и без суффиксов вида -master. И держите в голове структуру из урока про папки Arduino: менеджер, ZIP и вкладки проекта — три способа разложить чужой код по одним и тем же полкам, а не три конкурирующие религии.
- 1. Куда менеджер библиотек кладёт файлы при установке?
- 2. Зачем в менеджере выпадающий список версий?
- 3. Устанавливаемая библиотеке нужна другая, которой ещё нет. Что сделает среда?
- 4. После обновления библиотеки скетч перестал собираться. Первый шаг?
- 5. Когда установка из ZIP-архива оправдана?
- Library Manager: поиск, выбор версии и установка — одно окно без ZIP-архивов.
- Библиотеки падают в sketchbook/libraries и переживают обновления среды.
- Список версий — страховка от сломанных API: держите версию под проект.
- Диалог зависимостей «установить все» — штатный путь, а не ошибка.
- Обновление не в день релиза: сначала changelog в карточке, потом кнопка Update.
Частые вопросы по теме урока
- Куда менеджер библиотек кладёт файлы при установке?
- Библиотеки из менеджера падают в sketchbook/libraries. Оттуда их видит компилятор, оттуда же берутся примеры в меню «Файл — Примеры». В sketchbook/libraries, в подпапку с именем библиотеки
- Зачем в менеджере выпадающий список версий?
- Авторы библиотек иногда ломают совместимость между версиями. Список версий позволяет вернуть ту, под которой проект гарантированно собирается. Чтобы откатиться на версию, под которую написан ваш проект
- Устанавливаемая библиотеке нужна другая, которой ещё нет. Что сделает среда?
- Диалог с предложением установить зависимости — штатный механизм. Соглашайтесь: отказ экономит одну секунду и отбирает десять минут потом. Предложит диалог и установит все зависимости сразу
- После обновления библиотеки скетч перестал собираться. Первый шаг?
- Новая версия могла изменить API. Откат из списка версий возвращает работоспособность за минуту — дальше уже можно читать changelog и править код не спеша. Откатить библиотеку на прежнюю версию
- Когда установка из ZIP-архива оправдана?
- ZIP — путь для приватных, самописных или неопубликованных библиотек. Во всех остальных случаях менеджер быстрее и держит обновления под контролем. Когда библиотеки нет в индексе или на машине нет интернета