// бібліотеки для роботи з приладами
#include "LiquidCrystal_I2C.h"
#include "DHT.h"
// задаємо параметри дисплею та сенсора
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(3, DHT22);
int vent = 5;
int photoSensor;
void setup() {
Serial.begin(9600);
// вмикаємо дисплей, підсвітку, запускаємо сенсор
lcd.init();
lcd.backlight();
dht.begin();
pinMode(vent, OUTPUT);
}
void loop() {
// зчитуємо температуру та вологість та виводимо це на дисплей
float h = dht.readHumidity();
float t = dht.readTemperature();
lcd.setCursor(0, 0);
lcd.print(t);
lcd.setCursor(8, 0);
lcd.print(h);
// зчитуємо сигнал з фотодетектора та масштабуємо у зручний спосіб
photoSensor = analogRead(A1);
photoSensor = map (photoSensor, 8, 1015, 0, 100);
photoSensor = constrain(photoSensor, 0, 100);
// задаємо умову, щоб виводити час доби на дисплей
if (photoSensor >= 75) {
lcd.setCursor(3, 1);
lcd.print("ngt");
}
else {
lcd.setCursor(3, 1);
lcd.print("day");
}
// встановлюємо увову, щоб реле запускалося, коли нам потрібно (за параметрами в методичці)
if (t >= 20 && photoSensor < 75) {
digitalWrite(vent, HIGH);
}
else if (t >= 24 && photoSensor >= 75) {
digitalWrite(vent, HIGH);
}
if (t < 18 && photoSensor < 75) {
digitalWrite(vent, LOW);
}
else if (t < 22 && photoSensor >= 75) {
digitalWrite(vent, LOW);
}
}