// библиотека для работы с датчиком DHT11 #include // Подключаем библиотеку для работы с дисплеем #include // номер цифрового пина реле 1 #define RELAY_1_PIN A4 // номер цифрового пина реле 2 #define RELAY_2_PIN A2 // номер цифрового пина дисплея #define DISPLAY_PIN 11 // создаём объект класса DHT11 и передаём номер пина к которому подключён датчик DHT dht(4, DHT11); // переменная для хранения состояние системы // а именно какую информацию выводить на дисплей // температуру или влажность bool state = true; // переменная для хранения показателя температуры окружающей среды float temperature = 0; // переменная для хранения показателя влажности окружающей среды float humidity = 0; long currentMillis = 0; void setup() { // открываем последовательный порт для мониторинга действий в программе Serial.begin(9600); // начало работы с датчиком DHT11 dht.begin(); // назначаем 2 пина в режиме выхода pinMode(RELAY_1_PIN, OUTPUT); pinMode(RELAY_2_PIN, OUTPUT); currentMillis = millis(); } void loop() { // если прошёл заданный интервал времени if (millis() - currentMillis > 3000) { state = !state; currentMillis = millis(); dht.read(); } switch (dht.getState()) { // всё OK case DHT_OK: // считываем показания температуры и влажности с датчика temperature = dht.getTemperatureC(); humidity = dht.getHumidity(); // выводим показания температуры или влажности if (state) { displayTemperatureC(DISPLAY_PIN, temperature); } else { displayHumidity(DISPLAY_PIN, humidity); } break; // если ошибка выводим на дисплей «Err» default: displayDigits(DISPLAY_PIN, QD_NONE, QD_E, QD_r, QD_r); break; } // если температура превысила 35 градусов if (temperature > 35) { // включаем реле 1 digitalWrite(RELAY_1_PIN, HIGH); } else { // иначе выключаем реле digitalWrite(RELAY_1_PIN, LOW); } // если влажность стала менее 20 % if (humidity < 20) { // включаем реле 2 digitalWrite(RELAY_2_PIN, HIGH); } else { // иначе выключаем реле 2 digitalWrite(RELAY_2_PIN, LOW); } // ждём 1 секунду delay(1000); }