База знаний · Библиотеки
Зависимости: библиотеки, которым нужны библиотеки
Почему «поставил одну — установились три» — это правильно, и как Trema IDE делает это сама.
Ставили библиотеку датчика, а в списке установленных появились три? Это не сбой, а зависимости: библиотеки, как и люди, опираются на работу друг друга. Trema IDE разруливает эти связи сама — но полезно понимать, что происходит.
Почему библиотекам нужны библиотеки
Пример из жизни: библиотека датчика давления общается с ним по шине I²C. Вместо того чтобы писать работу с шиной заново, автор подключает стандартную библиотеку Wire — и его библиотека теперь «зависит» от неё. Это правильная инженерия: меньше дублирования, меньше ошибок. Но для пользователя старых сред это означало квест: поставил одно — сборка требует другое.
Как это работает в Trema IDE
Каталог libraries.trema.ru знает связи между библиотеками. Ставите библиотеку — программа проверяет её зависимости и доставляет недостающие автоматически, тем же защищённым способом с зеркала. Вы просто получаете работающий комплект: никакого квеста.

Классика жанра: Wire.h
Самый частый «скрытый» участник — библиотека Wire (шина I²C): её требуют многие библиотеки датчиков. Если чужой скетч ругается на Wire.h, а вы «ничего такого не ставили» — теперь вы знаете, откуда это: одна из ваших библиотек ожидает Wire. Trema IDE такие случаи закрывает автоматически, но при ручной установке из ZIP зависимость может остаться на вашей совести — просто доставьте её из каталога.
Так выглядит работа с датчиком на шине I2C. Первая строка — та самая зависимость: без Wire.h код не соберётся, даже если сам датчик подключён идеально:
#include <Wire.h> // без этой строки библиотека датчика не соберётся
const byte SENSOR = 0x76; // типовой адрес датчика на шине I2C
void setup() {
Wire.begin();
Serial.begin(9600);
// Спрашиваем у датчика его номер модели — это первый признак,
// что связь есть и провода подключены правильно.
Wire.beginTransmission(SENSOR);
Wire.write(0xD0);
Wire.endTransmission();
Wire.requestFrom(SENSOR, (byte)1);
if (Wire.available()) {
Serial.print("Датчик ответил, код модели: 0x");
Serial.println(Wire.read(), HEX);
} else {
Serial.println("Датчик молчит — проверьте адрес и провода");
}
}
void loop() {
}
Что запомнить
- Несколько библиотек после одной установки — норма, а не мусор: не удаляйте «лишние», они кому-то нужны.
- При удалении библиотеки подумайте, не пользуется ли ей другая (см. «Удаление и восстановление»).
- Ошибки про отсутствующие файлы «.h» — почти всегда про библиотеки: разбор в статье «Библиотека не найдена».
Читайте также
Обновлено: 19 июля 2026
