diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 68 |
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; } |