#include <LiquidCrystal.h> // Подключаем библиотеку для работы с LCD
#include <DHT.h> // Подключаем библиотеку для работы с DHT датчиками
// Пины для подключения DHT22 и LCD
#define DHTPIN 2 // Пин, к которому подключен DHT22
#define DHTTYPE DHT22 // Тип DHT датчика
#define BUTTON_PIN 3 // Пин, к которому подключена кнопка
// Инициализация датчика
DHT dht(DHTPIN, DHTTYPE);
// Инициализация LCD с пинами
LiquidCrystal lcd(12, 11, 5, 4, 8, 7);
void setup() {
lcd.begin(16, 2); // Установка размера LCD
dht.begin(); // Инициализация DHT22
pinMode(BUTTON_PIN, INPUT_PULLUP); // Настройка пина кнопки с внутренним подтягивающим резистором
lcdPrint("Press button"); // Сообщение на дисплее
}
void loop() {
// Проверяем состояние кнопки
if (digitalRead(BUTTON_PIN) == LOW) { // Если кнопка нажата (LOW)
delay(50); // Задержка для борьбы с дребезгом
if (digitalRead(BUTTON_PIN) == LOW) { // Проверяем еще раз
// Получаем температуру и влажность
float h = dht.readHumidity(); // Чтение влажности
float t = dht.readTemperature(); // Чтение температуры в Цельсиях
// Проверка на наличие ошибок
if (isnan(h) || isnan(t)) {
lcdPrint("DHT22 Error"); // Ошибка считывания
} else {
// Отображение температуры
lcdPrint("Temp: ");
lcd.setCursor(0, 1); // Ставим курсор на вторую строку
lcd.print(t); // Печатаем температуру
lcd.print(" C"); // Печатаем единицу измерения
}
// Ждем, пока кнопка будет отпущена, чтобы избежать повторного считывания
while (digitalRead(BUTTON_PIN) == LOW);
}
}
}
// Функция для вывода текста на LCD
void lcdPrint(const char* message) {
lcd.clear(); // Очистка дисплея
lcd.print(message); // Печать сообщения на дисплей
}