#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int poczatkowaTemperatura = 42;
int koncowaTemperatura = 46;
const int ObiegCWU = 13;
const int ObiegCO = 12;
const int zaworWody = 11;
int licznik = -1;
bool czekamNaNagrzanieCWU = false;
bool wymusGrzaniePodlogi = false;
void setup() {
pinMode(ObiegCWU, OUTPUT);
pinMode(ObiegCO, OUTPUT);
pinMode(zaworWody, OUTPUT);
Serial.begin(9600);
Serial.println("Start");
grzejPodloge(); //poczatkowe ustawienie, grzejemy podloge
dht.begin();
}
void grzejPodloge() {
digitalWrite(ObiegCWU, LOW);
digitalWrite(ObiegCO, HIGH);
}
void grzejCWU() {
digitalWrite(ObiegCWU, HIGH); //zmieniamy tryb na grzanie wody w CWU
digitalWrite(ObiegCO, LOW);
}
void loop() {
float t = dht.readTemperature();
String command = "";
if(Serial.available()) {
command = Serial.readString();
command.trim();
Serial.print(command + "\n");
}
if(command == "temp wody") {
Serial.println(t);
}
if(command.startsWith("temp startowa wody")) {
int dataIn = getNumber(command);
if (dataIn != 0) {
if (dataIn > koncowaTemperatura) {
Serial.print("Poczatkowa temperatura nie może być wyższa niż końcowa.\n");
} else {
poczatkowaTemperatura = dataIn;
}
}
Serial.println(poczatkowaTemperatura);
}
if(command.startsWith("temp koncowa wody")) {
int dataIn = getNumber(command);
if (dataIn !=0) {
if (dataIn < poczatkowaTemperatura) {
Serial.print("Końcowa temperatura nie może być niższa niż startowa.\n");
} else {
koncowaTemperatura = dataIn;
}
}
Serial.println(koncowaTemperatura);
}
if (t < poczatkowaTemperatura || (command == "woda start" && t < koncowaTemperatura)) {
grzejCWU(); //zmieniamy tryb na grzanie wody w CWU
digitalWrite(zaworWody, HIGH);
czekamNaNagrzanieCWU = true;
licznik = -1;
}
if (t > koncowaTemperatura && czekamNaNagrzanieCWU || command == "woda stop") {
czekamNaNagrzanieCWU = false;
digitalWrite(zaworWody, LOW);
licznik = 10000;
}
if(command == "podloga start") {
grzejPodloge();
digitalWrite(zaworWody, LOW);
licznik = -1;
}
if(command == "podloga stop") {
digitalWrite(ObiegCO, LOW);
licznik = -1;
}
if(licznik > 0) {
licznik--;
}
if (licznik == 0) {
licznik--;
grzejPodloge();
digitalWrite(zaworWody, LOW);
}
}
int getNumber(String s) {
int index = s.lastIndexOf(' ');
String last = s.substring(++index);
return last.toInt();
}
CWU
CO
ZAWÓR
WODY