Библиотека DHT sensor library
- В менеджере библиотек
- DHT sensor library by Adafruit
- Версия
- 1.4.7 · всего 25 версий, первая — 1.0.0
- Платы
- любые — автор не ограничивал
- Зависимости
- Adafruit Unified Sensor — менеджер предложит поставить вместе
Архивы — копии из официального индекса Arduino, контрольная сумма совпадает. Сверено 19.10.2026.
Датчики температуры и влажности DHT11 и DHT22: два числа за один вызов, без разбора однопроводного протокола.
DHT11 и DHT22 отдают данные по одному проводу своим протоколом с микросекундными импульсами. Библиотека Adafruit разбирает его и возвращает температуру и влажность обычными числами. Вместе с ней менеджер предложит поставить Adafruit Unified Sensor — соглашайтесь, без неё не соберётся.
Датчик медленный: DHT11 нельзя опрашивать чаще раза в секунду, DHT22 — раза в две секунды. Между опросами библиотека отдаёт прошлое значение.
Как скачать и установить
- Через менеджер — самый простой путь. В Arduino IDE: Инструменты → Управлять библиотеками (Ctrl+Shift+I). Введите
DHT sensor libraryи найдите в списке строку «DHT sensor library by Adafruit» — одноимённых библиотек бывает несколько, отличаются они автором. Нажмите «Установить», и на вопрос про зависимости — «Установить всё». - Конкретная версия — если в чужом проекте указана не последняя. В той же карточке менеджера рядом с кнопкой есть выпадающий список версий: выберите нужную и нажмите «Установить».
- Из архива — если нет интернета на рабочем компьютере или менеджер не открывается. Скачайте ZIP выше, затем Скетч → Подключить библиотеку → Добавить .ZIP библиотеку и укажите файл. Распаковывать не нужно.
Файл DHT.h отдельно не скачивают: он внутри библиотеки и появляется после установки. Если среда пишет DHT.h: No such file or directory — библиотека не установлена или установлена не та. Как устроен менеджер и куда складываются файлы — в общей статье про библиотеки.
Строка подключения:
#include <DHT.h>Создание объекта — обычно до setup():
#define DHTPIN 2
#define DHTTYPE DHT22 // или DHT11
DHT dht(DHTPIN, DHTTYPE);
dht.begin(); // в setup()Методы
Только то, что нужно в обычном скетче. Сигнатуры сверены с версией 1.4.7.
begin()- Подготовить вывод. В setup().
readTemperature()- Температура в °C как float. NaN, если датчик не ответил.
readTemperature(true)- То же в °F.
readHumidity()- Влажность в процентах, float. NaN при ошибке.
computeHeatIndex(t, h, false)- «Ощущаемая» температура по температуре и влажности; false — в °C.
read(bool force)- Принудительно опросить датчик, не дожидаясь двух секунд. Возвращает true при удаче.
isnan(value)- Не метод библиотеки, а проверка из math.h: так узнают, что чтение не удалось.
Пример
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000); // DHT22 не отвечает чаще
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Датчик не ответил");
return;
}
Serial.print(t, 1); Serial.print(" C, ");
Serial.print(h, 0); Serial.println(" %");
}Проверка на NaN обязательна: при плохом контакте датчик отвечает через раз, и без неё в лог полетят «nan».
На чём попадаются
Всегда NaN
Нет подтягивающего резистора 10 кОм между данными и питанием (у модулей на плате он есть, у голого датчика — нет), либо в DHTTYPE указан не тот датчик.
Не компилируется: Adafruit_Sensor.h not found
Не поставлена зависимость Adafruit Unified Sensor. Ставится через тот же менеджер.
Значения скачут
Слишком частый опрос или длинный провод. Опрашивайте реже, провод короче метра, питание 5 В.