// Підключення бібліотеки LiquidCrystal для LCD-дисплею і бібліотеки DHT для датчика температури та вологості
#include <LiquidCrystal.h>
#include <DHT.h>
// Створення об'єкту LCD-дисплей
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, Enable, D4, D5, D6, D7
// Створення об'єкту для датчика температури та вологості
#define DHT_PIN 1
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
const int violetLED = 8; // Підключення фіолетового світлодіоду до 8 піну
const int whiteLED = 7; // Підключення білого світлодіоду до 7 піну
void setup() {
lcd.begin(16, 2); // Ініціалізація LCD-дисплею з 16 колонками та 2 рядками
dht.begin(); // Ініціалізація датчика температури та вологості
// Встановлення пінів світлодіодів на вивід
pinMode(violetLED, OUTPUT);
pinMode(whiteLED, OUTPUT);
}
void loop() {
float temperature = dht.readTemperature(); // Читання температури з датчика в Цельсіях
float humidity = dht.readHumidity(); // Читання вологості з датчика
// Вихід з функції, якщо щось пішло не так під час читання значень з датчика
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor. Value is not a number"));
return;
}
// Видалення інформації про температуру та вологість з датчика перед читанням
lcd.clear();
// Вивід на екран LCD-дисплею даних про температуру з датчика
lcd.print("Temp: ");
lcd.print(temperature);
// Встановлення на LCD-дисплеї курсору на рядок 0 колонки 1
lcd.setCursor(0, 1);
// Вивід на екран LCD-дисплею даних про вологість з датчика
lcd.print("Humid: ");
lcd.print(humidity);
// Ввімкнення або вимкнення світлодіоду, залежно від температури на датчику
if (temperature >= 0) {
digitalWrite(violetLED, HIGH); // Ввімкнення фіолетового світлодіоду
digitalWrite(whiteLED, LOW); // Вимкнення білого світлодіоду
} else if (temperature < 0) {
digitalWrite(violetLED, LOW); // Вимкнення фіолетового світлодіоду
digitalWrite(whiteLED, HIGH); // Ввімкнення білого світлодіоду
} else {
digitalWrite(violetLED, LOW); // Вимкнення фіолетового світлодіоду
digitalWrite(whiteLED, LOW); // Вимкнення білого світлодіоду
}
// Пауза на 1 секунду перед наступним читанням температури та вологості з датчика
delay(1000);
}