#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define POT_MIN_MEZ A0
#define POT_HYST A2
#define DHTPIN_GARA 3
#define DHTPIN_VENK 5
#define VENTILATOR 12
//#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define DHTTYPE DHT21 // DHT 21 (AM2301)
int vlhkostG;
int vlhkostV;
float teplotaG;
float teplotaV;
bool fanState = false;
float valMin, minVlhkost;
float valHyst , hystereze;
DHT dhtGARAZ(DHTPIN_GARA, DHTTYPE);
DHT dhtVENK(DHTPIN_VENK, DHTTYPE);
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
pinMode(VENTILATOR, OUTPUT);
digitalWrite(VENTILATOR, LOW);
dhtGARAZ.begin();
dhtVENK.begin();
// initialize the LCD
lcd.init();
//lcd.init();
lcd.backlight();
//zobrazInitHodnoty();
}
void loop() {
//Serial.print(delkaOsvitVal);
//Serial.print(" Delka min: ");
//Serial.println(delkaOsvitMillis);
vlhkostG = dhtGARAZ.readHumidity();
teplotaG = dhtGARAZ.readTemperature();
vlhkostV = dhtVENK.readHumidity();
teplotaV = dhtVENK.readTemperature();
valMin = analogRead(POT_MIN_MEZ);
valHyst = analogRead(POT_HYST);
minVlhkost = map(valMin, 0, 1023, 30, 70);
hystereze = map(valHyst, 0, 1023, 1, 5);
// --- LOGIKA ZAPNUTÍ ---
bool podminkaZapnuti =
(vlhkostG > vlhkostV + hystereze) &&
(vlhkostG > minVlhkost + hystereze);
// --- LOGIKA VYPNUTÍ ---
bool podminkaVypnuti =
(vlhkostG <= vlhkostV) ||
(vlhkostG <= minVlhkost);
// --- ŘÍZENÍ VENTILÁTORU ---
if (podminkaZapnuti) {
fanState = true;
}
if (podminkaVypnuti) {
fanState = false;
}
digitalWrite(VENTILATOR, fanState ? HIGH : LOW);
Serial.print("Min Mez: ");
Serial.print(minVlhkost);
Serial.print(" Hystereze: " );
Serial.println(hystereze);
zobrazHodnoty();
}
void zobrazHodnoty() {
lcd.setCursor(0, 0);
lcd.print("VG ");
lcd.setCursor(3, 0);
lcd.print(" ");
lcd.setCursor(3, 0);
lcd.print(vlhkostG);
lcd.setCursor(5, 0);
lcd.print("%");
lcd.setCursor(9, 0);
lcd.print("VV");
lcd.setCursor(12, 0);
lcd.print(" ");
lcd.setCursor(12, 0);
lcd.print(vlhkostV);
lcd.setCursor(14, 0);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("TG");
lcd.setCursor(3, 1);
lcd.print(" ");
lcd.setCursor(3, 1);
lcd.print(teplotaG, 1);
lcd.setCursor(7, 1);
lcd.print((char)223);
lcd.setCursor(9, 1);
lcd.print("TV");
lcd.setCursor(11, 1);
lcd.print(" ");
lcd.setCursor(11, 1);
lcd.print(teplotaV,1);
lcd.setCursor(15, 1);
lcd.print((char)223);
}
Garaz
Min Mez
Hystereze