const float BETA = 3950;
#include <TM1637.h>
#include <TM1637Display.h>
const int CLK = 5; // Pin dla zegara (CLK)
const int DIO_1 = 4; // Pin dla danych (DIO)
const int DIO_2 = 2; // Pin dla danych (DIO)
const int DIO_3 = 3;
const int przycisk_1 = 12;
const int przycisk_2 = 11;
const int przycisk_3 = 10;
const int przycisk_4 = 9;
const int przekaznik_1 = 8;
const int przekaznik_2 = 7;
const int przekaznik_3 = 6;
float nastawa_bufor = 65;
float nastawa_boiler = 65;
TM1637Display display_1(CLK, DIO_1);
TM1637Display display_2(CLK, DIO_2);
TM1637Display display_3(CLK, DIO_3);
int stan_przycisk_1 = LOW;
int stan_przycisk_2 = LOW;
int stan_przycisk_3 = LOW;
int stan_przycisk_4 = LOW;
int stan_przekaznik_1 = LOW;
int stan_przekaznik_2 = LOW;
int stan_przekaznik_3 = LOW;
void setup() {
Serial.begin(9600);
display_1.setBrightness(7);
display_2.setBrightness(7);
display_3.setBrightness(7);
pinMode(przycisk_1, INPUT);
pinMode(przycisk_2, INPUT);
pinMode(przycisk_3, INPUT);
pinMode(przycisk_4, INPUT);
pinMode(przekaznik_1, OUTPUT); // pompa boiler
pinMode(przekaznik_2, OUTPUT); // pompa bufor
pinMode(przekaznik_3, OUTPUT); //pompa kaloryfery
}
void loop() {
int TempPiec_odc = analogRead(A0);
int TempBoiler_odc = analogRead(A1);
int TempBufor_odc = analogRead(A2);
float TempPiec = 1 / (log(1 / (1023. / TempPiec_odc - 1)) / BETA + 1.0 / 298.15) - 273.15;
float TempBoiler = 1 / (log(1 / (1023. / TempBoiler_odc - 1)) / BETA + 1.0 / 298.15) - 273.15;
float TempBufor = 1 / (log(1 / (1023. / TempBufor_odc - 1)) / BETA + 1.0 / 298.15) - 273.15;
if (nastawa_bufor >= 95)
nastawa_bufor = 90;
if (nastawa_boiler >=95)
nastawa_boiler = 90;
if (nastawa_bufor <= 10)
nastawa_bufor=15;
if (nastawa_boiler <= 10)
nastawa_boiler = 15;
Serial.print("Nastawa bufor: " );
Serial.print(nastawa_bufor);
Serial.print(" Nastawa boiler: ");
Serial.print(nastawa_boiler);
Serial.println(" ℃");
display_1.showNumberDec(TempPiec); // Mnożenie przez 10, aby wyświetlać jedną liczbę po przecinku
display_2.showNumberDec(TempBoiler+(nastawa_boiler*100)); // Mnożenie przez 10, aby wyświetlać jedną liczbę po przecinku
display_3.showNumberDec(TempBufor+(nastawa_bufor*100)); // Mnożenie przez 10, aby wyświetlać jedną liczbę po przecinku
int stanprzycisku1 = digitalRead(przycisk_1);
int stanprzycisku2 = digitalRead(przycisk_2);
int stanprzycisku3 = digitalRead(przycisk_3);
int stanprzycisku4 = digitalRead(przycisk_4);
if (stanprzycisku1 == HIGH && stan_przycisk_1 == LOW)
{
while (stanprzycisku1 == HIGH)
{
nastawa_bufor+=1;
delay(500);
stanprzycisku1 = digitalRead(przycisk_1);
}
//stan_przycisk_1 = stanprzycisku1;
}
else if (stanprzycisku1 == LOW)
stan_przycisk_1 = stanprzycisku1;
if (stanprzycisku2== HIGH && stan_przycisk_2 == LOW){
nastawa_bufor -=1;
stan_przycisk_2 = stanprzycisku2;
}
else if (stanprzycisku2 == LOW)
stan_przycisk_2 = stanprzycisku2;
if (stanprzycisku3== HIGH && stan_przycisk_3 == LOW){
nastawa_boiler +=1;
stan_przycisk_3 = stanprzycisku3;
}
else if (stanprzycisku3 == LOW)
stan_przycisk_3 = stanprzycisku3;
if (stanprzycisku4== HIGH && stan_przycisk_4 == LOW){
nastawa_boiler -=1;
stan_przycisk_4 = stanprzycisku4;
}
else if (stanprzycisku1 == LOW)
stan_przycisk_4 = stanprzycisku4;
delay(500);
if(TempPiec>nastawa_bufor && TempBoiler<nastawa_boiler)
digitalWrite(przekaznik_1, HIGH);
else
digitalWrite (przekaznik_1, LOW);
if (TempPiec>nastawa_bufor && TempBoiler >nastawa_boiler )
digitalWrite (przekaznik_2, HIGH);
else
digitalWrite (przekaznik_2, LOW);
if (TempBufor>44 )
digitalWrite (przekaznik_3, HIGH);
else
digitalWrite (przekaznik_3, LOW);
}