При подключение датчиков DHT11 и DHT22 к Arduino Uno использовалась стандартная библиотека DHT.h, входящая в Arduino IDE. Все схемы проверялись на Windows 7. Библиотеку LiquidCrystal_I2C.h можно скачать из архива.
Вывод показаний на Монитор последовательного порта
Собираем схему согласно приведённому рисунку:

Внимание! Из-за большого разнообразия модулей разных производителей, на рисунке приведено подключение модуля с датчиком DHT11, продающегося в магазине.
После сборки схемы соединяем плату Arduino Uno к компьютеру кабелем USB и запускаем среду разработки Arduino IDE. Копируем нижеприведённый код в окно программы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /* ********************************* * Интернет-магазин Arduinka.Pro * ********************************* Вывод значений влажности и температуры на Монитор порта с датчика DHT11 или DHT22 */ #include "DHT.h" // подключаем библиотеку #define DHTPIN 2 // номер пина, к которому подсоединен датчик // Раскомментировать нужную строку #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); // Инициализация сенсора DHT void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); Serial.println("----------------------------------------------"); dht.begin(); } void loop() { // задержка 1,5 секунды между измерениями delay(1500); float h = dht.readHumidity(); // cчитывание влажности float t = dht.readTemperature(); // cчитывание температуры // проверка NaN (вывод цифровых значений) if (isnan(h) || isnan(t)) { Serial.println("Data error!"); } else { Serial.print ("Humidity: "); Serial.print (h); Serial.print ("%\t"); Serial.print ("Temperature: "); Serial.print (t); Serial.println (" *C"); } } |
И загружаем скетч клавишами Ctrl+U или кнопкой Загрузка на Arduino IDE.

После завершения загрузки в память микроконтроллера начнёт выполнятся программа считывания данных с датчика. Для просмотра значений нужно запустить Монитор порта из меню Инструменты.

Вывод показаний на экран дисплея LCD 1602 I²C
Дополняем первую схему символьным дисплеем LCD 1602 с управлением по шине I²C:

После сборки и подключения схемы загружаем новый скетч:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | /* ********************************* * Интернет-магазин Arduinka.Pro * ********************************* Вывод значений влажности и температуры на LCD 1602 I2C с датчика DHT11 или DHT22 */ // подключение библиотек #include <Wire.h> #include <LiquidCrystal_I2C.h> #include "DHT.h" // назначение PIN и выбор типа датчика DHT #define DHTPIN 2 // // раскомментировать нужную строку #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); // инициализация сенсора DHT LiquidCrystal_I2C lcd(0x27,16,2); // инициализация дисплея byte symb_grad[8] = // кодирование символа градуса { B00111, B00101, B00111, B00000, B00000, B00000, B00000, }; void setup() { lcd.init(); // инициализация lcd lcd.createChar(1, symb_grad); // регистрируем собственный символ с кодом 1 Serial.begin(9600); // запуск передачи данных dht.begin(); // запуск датчика DHT } void loop() { // добавляем паузы в 2 секунды между измерениями delay(2000); float h = dht.readHumidity(); // считывание влажности float t = dht.readTemperature(); // считывание температуры // Выводим показания влажности и температуры lcd.clear(); // очистка экрана lcd.setCursor(0, 0); // установка курсора в начало 1 строки lcd.print("Humidity: %"); // вывод текста lcd.setCursor(10, 0); // установка курсора на 10 позицию lcd.print(h, 1); // вывод на экран значения влажности lcd.setCursor(0, 1); // установка курсора в начало 2 строки lcd.print("Temperat: C"); // вывод текста lcd.setCursor(14, 1); // установка курсора на 14 позицию lcd.print("\1"); // вывод символа градуса lcd.setCursor(10, 1); // установка курсора на 10 позицию lcd.print(t,1); // вывод значения температуры } |
Теперь значения влажности и температуры будут отображаться на дисплее.
При составлении схем были использованы компоненты:
- плата Arduino Uno
- датчик температуры и влажности DHT11
- символьный дисплей LCD 1602 I²C