summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp68
1 files changed, 37 insertions, 31 deletions
diff --git a/src/main.cpp b/src/main.cpp
index caa2da7..824e531 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,7 +1,7 @@
#include <Arduino.h>
#include <Adafruit_GFX.h>
-#include <Adafruit_ST7735.h>
+#include <Adafruit_ST7789.h> // ZMIANA: Biblioteka dostosowana do ST7789
#include <DallasTemperature.h>
#include <ESP32Servo.h>
#include <OneWire.h>
@@ -11,7 +11,8 @@
#include "config.h"
-Adafruit_ST7735 tft(&SPI, TFT_CS, TFT_DC, TFT_RST);
+// ZMIANA: Konstruktor dla ST7789
+Adafruit_ST7789 tft(&SPI, TFT_CS, TFT_DC, TFT_RST);
Servo valveServo;
Preferences preferences;
@@ -75,7 +76,6 @@ float sanitizeSetting(float value, float fallback, float minimum,
}
void loadSettings() {
- // Tryb read-write tworzy przestrzen nazw przy pierwszym uruchomieniu.
if (!preferences.begin("thermostat", false)) {
settingsStorageOk = false;
return;
@@ -134,7 +134,7 @@ void setValvePercent(uint8_t targetPercent) {
void updateValveControl() {
if (!internalSensorOk || !externalSensorOk) {
- setValvePercent(0);
+ setValvePercent(50);
return;
}
@@ -143,7 +143,6 @@ void updateValveControl() {
return;
}
- // Po zamknieciu zawor otwiera sie dopiero po wyjsciu ponad histereze.
if (valvePercent == 0 &&
tempInternal < settings.minInternal + settings.hysteresis) {
return;
@@ -154,7 +153,6 @@ void updateValveControl() {
return;
}
- // Z pozycji 100% wraca dopiero po spadku ponizej progu z histereza.
if (valvePercent == 100 &&
tempExternal > settings.maxExternal - settings.hysteresis) {
return;
@@ -225,7 +223,10 @@ void setupDisplay() {
pinMode(TFT_BL, OUTPUT);
digitalWrite(TFT_BL, TFT_BL_ON);
SPI.begin(TFT_SCLK, -1, TFT_MOSI, TFT_CS);
- tft.initR(INITR_BLACKTAB);
+
+ // ZMIANA: Inicjalizacja dla kwadratowego wyƛwietlacza ST7789 240x240
+ tft.init(240, 240);
+
tft.setRotation(TFT_ROTATION);
tft.fillScreen(ST77XX_BLACK);
tft.setTextWrap(false);
@@ -260,58 +261,63 @@ void drawSettingRow(int16_t y, MenuItem item, const char* label, float value) {
selected ? (editing ? ST77XX_RED : ST77XX_BLUE) : ST77XX_BLACK;
const uint16_t foreground = selected ? ST77XX_WHITE : ST77XX_CYAN;
- tft.fillRect(0, y, tft.width(), 18, background);
+ tft.fillRect(0, y, tft.width(), 30, background);
tft.setTextColor(foreground, background);
- tft.setCursor(2, y + 5);
+ tft.setTextSize(2);
+
+ tft.setCursor(10, y + 8);
tft.print(label);
- tft.setCursor(72, y + 5);
+
+ tft.setCursor(140, y + 8);
tft.print(value, 1);
tft.print("C");
}
void drawDisplay() {
tft.fillScreen(ST77XX_BLACK);
- tft.setTextSize(1);
tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
- tft.setCursor(2, 3);
- tft.print("WEW:");
+
tft.setTextSize(2);
- tft.setCursor(35, 1);
+ tft.setCursor(10, 10);
+ tft.print("WEW:");
+ tft.setTextSize(3);
+ tft.setCursor(70, 5);
printTemperature(tempInternal, internalSensorOk);
- tft.setTextSize(1);
- tft.setCursor(2, 24);
- tft.print("ZEW:");
tft.setTextSize(2);
- tft.setCursor(35, 22);
+ tft.setCursor(10, 45);
+ tft.print("ZEW:");
+ tft.setTextSize(3);
+ tft.setCursor(70, 40);
printTemperature(tempExternal, externalSensorOk);
- tft.setTextSize(1);
- drawSettingRow(47, MenuItem::MinInternal, "Min wew", settings.minInternal);
- drawSettingRow(67, MenuItem::MaxExternal, "Max zew", settings.maxExternal);
- drawSettingRow(87, MenuItem::Hysteresis, "Hister.", settings.hysteresis);
+ drawSettingRow(85, MenuItem::MinInternal, "Min wew", settings.minInternal);
+ drawSettingRow(120, MenuItem::MaxExternal, "Max zew", settings.maxExternal);
+ drawSettingRow(155, MenuItem::Hysteresis, "Hister.", settings.hysteresis);
+ // --- SEKCJA ZAWORU ---
tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK);
- tft.setTextSize(2);
- tft.setCursor(2, 110);
+ tft.setTextSize(3);
+ tft.setCursor(10, 195);
tft.print("ZAWOR:");
- tft.setCursor(80, 110);
+ tft.setCursor(130, 195);
tft.print(valvePercent);
tft.print("%");
tft.setTextSize(1);
tft.setTextColor(settingsStorageOk ? ST77XX_WHITE : ST77XX_RED,
ST77XX_BLACK);
- tft.setCursor(2, 137);
+
+ tft.setCursor(10, 222);
if (!settingsStorageOk) {
- tft.print("BLAD ZAPISU");
+ tft.print("BLAD ZAPISU USTAWIEN!");
} else {
- tft.print(editing ? "UP/DN zmien SEL zap"
- : "UP/DN wybor SEL edit");
+ tft.print(editing ? "UP/DN: Zmien | SEL: Zapisz"
+ : "UP/DN: Wybor | SEL: Edytuj");
}
- tft.setCursor(2, 150);
- tft.print(editing ? "EXIT anuluj" : "Blad czujnika = 0%");
+ tft.setCursor(10, 232);
+ tft.print(editing ? "EXIT: Anuluj" : "Uwaga: Blad czujnika = 50%");
displayDirty = false;
}