1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
#include <Arduino.h>
#include "config.h"
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>
#include <ESP32Servo.h>
#include <ezButton.h>
#include <OneWire.h>
#include <DallasTemperature.h>
/* todo
* pobierac temp z onewire (wybierz jakes piny) i aktualizowac w loopie co np 10 sekund.
*
* po wcisnieciu jakiegos guzika jest powinno być wybudzenie wyświetlacza.
* przyciski up/down zaznaczam gdy chce zmienić histereze, temp int lub temp ext. po wybraniu kliknąć
* confirm i wtedy up/down do zmiany temeratury, po zakończeniu exit. Do obsługi przycisków masz ezButton.
*
* zasada będzie taka, że jak jest mniej niż min temp internal to serwo zamyka zupełnie zawór.
* jeśli jest między min internal a max external to zawór otworzony w 70%.
* Jak więcej niż max external to zawór otworzony na 100%.
*
* serwo ma 270 stopni, ale uwzględniając przekładnie 3 stopnie na serwie to 1 stopień na zaworze.
* 0 stopni to zawór zamknięty (0%)
* 270 stopni to 90 stopni na zaworze, czyli jest otwarty w 100%.
*/
Adafruit_ST7789 tft = Adafruit_ST7789(&SPI, TFT_CS, TFT_DC, TFT_RST);
Servo myServo;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float tempInternal;
float tempCurrent;
float temp_min_internal;
float temp_max_external;
float temp_cur_internal;
float temp_cur_external;
int deviceCount = 0;
void setupSensors(){
sensors.begin(115200); // baud rate
Serial.print("Searching for devices.")
deviceCount = sensors.getDeviceCount();
if(deviceCount != 0) {
Serial.print(deviceCount, DEC);
}
else {
Serial.print("Cannot find any devices connected to One_Wire_Bus");
}
}
void setupDisplay(){
SPI.begin(TFT_SCLK, -1, TFT_MOSI, TFT_CS);
tft.init(240, 240);
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_CYAN);
tft.setTextSize(3);
tft.setCursor(0, 0);
tft.print("TEMP INTERNAL");
tft.setCursor(0, 25);
tft.print("min: 50,5");
tft.setCursor(0, 50);
tft.print("cur: 67,1");
tft.setCursor(0, 90);
tft.print("TEMP EXTERNAL");
tft.setCursor(0, 115);
tft.print("max: 90,0");
tft.setCursor(0, 140);
tft.print("cur: 80,5");
tft.setCursor(0, 180);
tft.print("HYST: 5");
tft.setCursor(0, 215);
tft.print("VALVE: 70%");
}
void setup() {
Serial.begin(115200);
delay(100);
setupDisplay();
}
void loop() {
}
|