// подключение библиотеки DTH
#include "DHT.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
// константы
#define DHTPIN 22 // пин подключения контакта DATA
#define DHTTYPE DHT22 // датчик DHT 22
#define INTERVAL_GET_DATA 2000 // интервал измерений, мс
// создание экземпляра объекта DHT
#define LED_TEMP_PIN 2 // Пин для светодиода температуры
#define LED_HUMIDITY_PIN 3 // Пин для светодиода влажности
DHT dht(DHTPIN, DHTTYPE);
// переменная для интервала измерений
unsigned long millis_int1=0;
void setup() {
Serial.begin(9600); // запуск последовательного порта
dht.begin(); // запуск DHT
lcd.init();
lcd.backlight();
// Установка пинов для светодиодов как выходные
pinMode(LED_TEMP_PIN, OUTPUT);
pinMode(LED_HUMIDITY_PIN, OUTPUT);
// Изначально выключаем светодиоды
digitalWrite(LED_TEMP_PIN, LOW);
digitalWrite(LED_HUMIDITY_PIN, LOW);
}
void loop() {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// получение данных c DHT11
int humidity = get_data_humidity();
// вывод в монитор последовательного порта
Serial.print("humidity=");
Serial.println(humidity);
int temperature = get_data_temperature();
Serial.print("Temperature=");
Serial.println(temperature);
int tempfahrenheit = get_data_tempfahrenheit();
Serial.print("Temp_Fahrenheit=");
Serial.println(tempfahrenheit);
// Логика для управления светодиодами
if (temperature < 17 || temperature > 25) {
digitalWrite(LED_TEMP_PIN, HIGH); // Включение светодиода температуры
} else {
digitalWrite(LED_TEMP_PIN, LOW); // Выключение светодиода температуры
}
if (humidity < 40 || humidity > 60) {
digitalWrite(LED_HUMIDITY_PIN, HIGH); // Включение светодиода влажности
} else {
digitalWrite(LED_HUMIDITY_PIN, LOW); // Выключение светодиода влажности
}
// запуск отсчета интервала
lcd.setCursor(0, 0);
lcd.print("humidity=");
lcd.println(humidity);
lcd.setCursor(0, 1);
lcd.print("Temperature=");
lcd.println(temperature);
lcd.setCursor(0, 2);
lcd.print("Temp_Fahrenheit=");
lcd.println(tempfahrenheit);
millis_int1 = millis();
}
}
int get_data_humidity() {
int h = dht.readHumidity();
return h;
}
int get_data_temperature() {
int a = dht.readTemperature();
return a;
}
int get_data_tempfahrenheit() {
int b = dht.readTemperature(true);
return b;
}