#include <LiquidCrystal.h>
#include <DHT.h>
#define DHTPIN1 5
#define DHTPIN2 6
#define DHTTYPE DHT22
const int relay1 = 2;
const int relay2 = 4;
LiquidCrystal lcd (13,11,10,9,8,7);
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
void setup() {
lcd.begin(16,2);
lcd.clear();
dht1.begin();
dht2.begin();
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
}
void loop() {
float t1 = dht1.readTemperature();
float h1 = dht1.readHumidity();
float t2 = dht2.readTemperature();
float h2 = dht2.readHumidity();
float temp = (t1 + t2) / 2;
float hum = (h1 + h2)/ 2;
if (isnan(t1) || isnan(h1) || isnan(t2) || isnan(h2)) {
lcd.clear();
lcd.print("no data");
delay(2000);
return;
}
lcd.setCursor(0,0);
lcd.print("t=");
lcd.setCursor(2,0);
lcd.print(temp);
delay(1000);
lcd.setCursor(0,2);
lcd.print("H=");
delay(1000);
lcd.setCursor(2,2);
lcd.print(hum);
if (temp > 30) {
digitalWrite(relay1, HIGH);
}
else if (temp < 30) {
digitalWrite(relay1, LOW);
}
if (hum < 30) {
digitalWrite(relay2, HIGH);
}
else if (hum > 30) {
digitalWrite(relay2, LOW);
}
int Vent = digitalRead(relay1);
if (Vent == HIGH) {
lcd.setCursor(8,0);
lcd.print("Vent On");
delay(1000);
}
else if (Vent != HIGH) {
lcd.setCursor(8,0);
lcd.print("Vent off");
delay(1000);
}
int Humi = digitalRead(relay2);
if (Humi == HIGH) {
lcd.setCursor(8,1);
lcd.print("Hum On");
delay(1000);
}
else if (Humi != HIGH) {
lcd.setCursor(8,1);
lcd.print("Hum off");
delay(1000);
}
}
//Вопрос 1
//Библиотека - набор функций, классов и других элементов собранных в один файл для упрощения программирования. Преимущества: повторное использование, упрощение программы, логичность масштабируемость
//библиотека состоит из заголовочного файла'.h': обьявление функций, классов, констант, переменных. Исходный файл'.cpp': реализация функций, классов и т.д.
//Процесс создания: создание заголовочного файла(объявляются функции), создание исходного файла(реализация функций), подключение и использование в основном коде
//Вопрос 2
//Цифровые порты вывода позволяют управлять состоянием внешних устройств, они являются основным способом взаимодействия с внешними устройствами
//Цифровые порты могут находиться в одном из двух состояний HIGH(включено), LOW(Выключено). Настройка порта осуществляется
//с помощью функции PinMode - OUTPUT. Управление с помощью функций digitalWrite. Или analogWrite для аналоговых.