Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern TFT_eSPI tft;
- // =========================================================================================================== //
- //
- // Plik : esp32_tft.h
- // Wersja : 0.01 Beta
- // Data : 26.03.2021
- // Licencja : Donationware 3 EURO (no members group) & OpenSource (only members group ESP32 Projekty & ESP32 Polska)
- // Autor : TRANSLINE GROUP, Tomasz Majcher, Lubin
- //
- //
- // E-Mail : [email protected]
- //
- //
- // Licencja v1 : Donationware 3 EURO. Oprogramowanie na tej licencji może być dowolnie modyfikowane, kopiowane
- // i dystrybuowane pod warunkiem, że licencjobiorca zapłaci autorowi kwotę w wysokości 3 EURO na
- // wskazane konto PayPal
- //
- //
- // Licencja v2 : OpenSource. Oprogramowanie na tej licencji może być dowolnie modyfikowane, kopiowane
- // i dystrybuowane pod warunkiem, że licencjobiorca jest członkiem grupy: ESP32 Projekty
- // oraz ESP32 Polska należących do TransLine Group Tomasz Majcher
- //
- //
- // Kod źródłowy jest prawnie chroniony. Jedynym jego twórcą i właścicielem jest firma:
- // TRANSLINE Tomasz Majcher z siedzibą w Lubin, Polska. NIP: 692-201-09-78, REGON : 390576500
- // Tylko członkowie grupy ESP32 Polska i ESP32 Projekty mają pełne prawo do jego modyfikacji
- // i rozpowszechniania bez zgody twórcy kodu także w celach komercyjnych i zarobkowych.
- //
- // =========================================================================================================== //
- // === H I S T O R I A W E R S J I ========================================================================= //
- // =========================================================================================================== //
- //
- //
- // wersja 0.01 SIMPLE - BETA (26.03.2021) - budowa klasy TFTPanel
- // //
- // =========================================================================================================== //
- // === P R O T O T Y P Y ===================================================================================== //
- // =========================================================================================================== //
- #define Color_Bakground TFT_BLACK
- #define Color_Line tft.color565(37, 205, 245)
- struct OKNO_v1
- {
- int value_min = 0;
- int value_max = 0;
- int value_step = 0;
- String value_name;
- int pos_y = 0;
- float ltx = 0; // zapisz ltx
- uint16_t osx = 120, osy = 120; // startowe x i y
- int old_analog = -999; // ostatnia wartość analogowa
- int old_value = 0; // ostatnia zapamiętana analogowa
- int d = 0; // pomocnicza
- }
- Window_TFT_up, Window_TFT_down;
- // =========================================================================================================== //
- // === K L A S A T F T P a n e l =========================================================================== //
- // =========================================================================================================== //
- class TFTPanel
- {
- private: // metody i zmienne prywatne -------------------------------------------------------------------- //
- TFT_eSPI & tft;
- uint16_t screen_min_x = 0; // minimalny punkt x
- uint16_t screen_min_y = 0; // minimalny punkt y
- uint16_t screen_max_x = 240; // maksymalny punkt x
- uint16_t screen_max_y = 320; // maksymalny punkt y
- uint16_t window_min_x = 1; // minimalny punkt x OKNA
- uint16_t window_min_y = 1; // minimalny punkt y OKNA
- uint16_t window_max_x = 239; // maksymalny punkt x OKNA
- uint16_t window_max_y = 319; // maksymalny punkt y OKNA
- uint16_t window_size_x = window_max_x - window_min_x; // maksymalna szerokość OKNA
- uint16_t window_size_y = window_max_y - window_min_y; // maksymalna wysokość OKNA
- uint16_t window_up_v1 = 70; // pozycja y dla OKNA górnego v1
- uint16_t window_down_v1 = 190; // pozycja y dla OKNA dolnego v1
- // ---------------------------------------------------------------------------------------------------- //
- // --- F U N K C J E P R Y W A T N E ---------------------------------------------------------------- //
- // ---------------------------------------------------------------------------------------------------- //
- inline void DrawMaxWindow(); // rysuj maksymalne okno (-1px) na wyświetlaczu
- inline void DrawDownWindow126(); // rysuj dolne okno o wysokości 126 punktów
- inline void DrawUpWindow126(); // rysuj górne okno o wysokości 126 punktów
- void DrawAnalogWindow126(uint16_t start_y, int value_start, int value_step);
- void ShowAnalogWindow126();
- inline void SetupUpAnalogWindow126( int v_min, int v_step, String v_name);
- inline void SetupDownAnalogWindow126( int v_min, int v_step, String v_name);
- void AnalogPanelUp_v1_Show126(int value);
- void AnalogPanelDown_v1_Show126(int value);
- public: // metody i zmienne publiczne ------------------------------------------------------------------- //
- TFTPanel(TFT_eSPI & adresTFT) : tft (adresTFT) { } // konstruktor klasy TFTPanel
- void PanelInit(); // funkcja konfigurująca dla klasy TFTPanel
- void AnalogPanel_v1_Create(); // funkcja tworząca panel wyświetlacza v1
- void AnalogPanel_v1_Show(int Wilgotnosc, int Temperatura); // funkcja pokazująca panel wyświetlacza v1
- };
- // =========================================================================================================== //
- // === M E T O D Y P R Y W A T N E ========================================================================= //
- // =========================================================================================================== //
- //
- // --- S P I S M E T O D P R Y W A T N Y C H ---
- //
- // inline void TFTPanel :: DrawMaxWindow()
- // inline void TFTPanel :: DrawDownWindow126()
- // inline void TFTPanel :: DrawUpWindow126()
- // void DrawAnalogWindow126(uint16_t start_y, int value_start, int value_step)
- // inline void SetupUpAnalogWindow126( int v_min, int v_step, String v_name)
- // inline void SetupDownAnalogWindow126( int v_min, int v_step, String v_name)
- // void AnalogPanel_v1_Show(int Wilgotnosc, int Temperatura)
- //
- //
- // *********************************************************************************************************** //
- // *** Narysuj maksymalne okno *** //
- // *********************************************************************************************************** //
- //
- inline void TFTPanel :: DrawMaxWindow()
- {
- tft.drawRect(window_min_x, window_min_y, window_size_x, window_size_y, Color_Line); // ramka ekranu
- }
- //
- // *********************************************************************************************************** //
- // *** Narysuj ramkę dolną *** //
- // *********************************************************************************************************** //
- //
- inline void TFTPanel :: DrawDownWindow126()
- {
- tft.drawRect(window_min_x, window_max_y - 126, window_size_x, 126, Color_Line); // ramka dolna
- }
- //
- // *********************************************************************************************************** //
- // *** Narysuj ramkę górną *** //
- // *********************************************************************************************************** //
- //
- inline void TFTPanel :: DrawUpWindow126()
- {
- tft.drawRect(window_min_x, window_max_y - (2 * 126) + 2, window_size_x, 126, Color_Line); // ramka górna
- }
- //
- // *********************************************************************************************************** //
- // *** Zapamiętaj ustawienia okna UP *** //
- // *********************************************************************************************************** //
- //
- inline void TFTPanel :: SetupUpAnalogWindow126( int v_min, int v_step, String v_name)
- {
- Window_TFT_up.value_min = v_min; // minimalna wartość ANALOG METER
- Window_TFT_up.value_step = v_step; // zwiekszaj wartość ANALOG METER o V_STEP
- Window_TFT_up.value_max = v_min + ( 4 * v_step ); // maksymalna wartość ANALOG METER
- Window_TFT_up.value_name = v_name; // przypisz nazwę dla ANALOG METER
- }
- //
- // *********************************************************************************************************** //
- // *** Zapamiętaj ustawienia okna DOWN *** //
- // *********************************************************************************************************** //
- //
- inline void TFTPanel :: SetupDownAnalogWindow126( int v_min, int v_step, String v_name)
- {
- Window_TFT_down.value_min = v_min; // minimalna wartość ANALOG METER
- Window_TFT_down.value_step = v_step; // zwiększaj wartość ANALOG METER o V_STEP
- Window_TFT_down.value_max = v_min + ( 4 * v_step ); // maksymalna wartość ANALOG METER
- Window_TFT_down.value_name = v_name; // przypisz nazwę dla ANALOG METER
- }
- //
- // *********************************************************************************************************** //
- // *** Narysuj miernik analogowy *** //
- // *********************************************************************************************************** //
- //
- void TFTPanel :: DrawAnalogWindow126(uint16_t start_y, int value_start, int value_step)
- {
- tft.setTextColor(TFT_WHITE);
- if ( window_up_v1 == start_y )
- {
- tft.drawRightString ( Window_TFT_up.value_name, 220, 119 - 20 + start_y, 2);
- Window_TFT_up.pos_y = start_y;
- }
- else
- if (window_down_v1 == start_y)
- {
- tft.drawRightString ( Window_TFT_down.value_name, 220, 119 - 20 + start_y, 2);
- Window_TFT_down.pos_y = start_y;
- }
- for (int i = -50; i < 51; i += 5) // pętla od - 50 do 50
- { // początek FOR
- int tl = 15; // tl równa się 15
- float sx = cos((i - 90) * 0.0174532925); // wyznacz sx
- float sy = sin((i - 90) * 0.0174532925); // wyznacz sy
- uint16_t x0 = sx * (100 + tl) + 120; // wyznacz x0
- uint16_t y0 = sy * (100 + tl) + 140+start_y; // wyznacz y0
- uint16_t x1 = sx * 100 + 120; // wyznacz x1
- uint16_t y1 = sy * 100 + 140+start_y; // wyznacz y1
- float sx2 = cos((i + 5 - 90) * 0.0174532925); // wyznacz sx2
- float sy2 = sin((i + 5 - 90) * 0.0174532925); // wyznacz sy2
- int x2 = sx2 * (100 + tl) + 120; // wyznacz x2
- int y2 = sy2 * (100 + tl) + 140+start_y; // wyznacz y2
- int x3 = sx2 * 100 + 120; // wyznacz x3
- int y3 = sy2 * 100 + 140+start_y; // wyznacz y3
- // fake line auto-generater
- if (i >= -50 && i < -45) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(0, 191, 255));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(0, 191, 255));
- } // koniec IF
- else // lub
- if (i >= -45 && i < -40) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(0, 220, 255));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(0, 220, 255));
- } // koniec IF
- else // lub
- if (i >= -40 && i < -35) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(0, 255, 255));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(0, 255, 255));
- } // koniec IF
- else // lub
- if (i >= -35 && i < -30) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(0, 255, 191));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(0, 255, 191));
- } // koniec IF
- else // lub
- if (i >= -30 && i < -25) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(0, 255, 128));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(0, 255, 128));
- } // koniec IF
- else // lub
- if (i >= -25 && i < -20) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(0, 255, 64));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(0, 255, 64));
- }
- else // lub
- if (i >= -20 && i < -15) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(0, 255, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(0, 255, 0));
- } // koniec IF
- else // lub
- if (i >= -15 && i < -10) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(20, 255, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(20, 255, 0));
- } // koniec IF
- else // lub
- if (i >= -10 && i < -5) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(40, 255, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(40, 255, 0));
- } // koniec IF
- else // lub
- if (i >= -5 && i < 0) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(64, 255, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(64, 255, 0));
- } // koniec IF
- else // lub
- if (i >= 0 && i < 5) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(128, 255, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(128, 255, 0));
- } // koniec IF
- else // lub
- if (i >= 5 && i < 10) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(191, 255, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(191, 255, 0));
- } // koniec IF
- else // lub
- if (i >= 10 && i < 15) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 235, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 235, 0));
- } // koniec IF
- else // lub
- if (i >= 15 && i < 20) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 230, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 230, 0));
- } // koniec IF
- else // lub
- if (i >= 20 && i < 25) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 200, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 200, 0));
- } // koniec IF
- else // lub
- if (i >= 25 && i < 30) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 170, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 170, 0));
- } // koniec IF
- else // lub
- if (i >= 30 && i < 35) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 140, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 140, 0));
- } // koniec IF
- else // lub
- if (i >= 35 && i < 40) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 110, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 110, 0));
- } // koniec IF
- else // lub
- if (i >= 40 && i < 45) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 64, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 64, 0));
- } // koniec IF
- else // lub
- if (i >= 45 && i < 50) // początek IF
- {
- tft.fillTriangle(x0, y0, x1, y1, x2, y2, tft.color565(255, 0, 0));
- tft.fillTriangle(x1, y1, x2, y2, x3, y3, tft.color565(255, 0, 0));
- } // koniec IF
- // fake line auto-generate
- if (i % 25 != 0) tl = 8; // jeśli reszta z dzielenia rózna od 0
- // fake line auto-generate
- x0 = sx * (100 + tl) + 120; // oblicz x0
- y0 = sy * (100 + tl) + 140+start_y; // oblicz y0
- x1 = sx * 100 + 120; // oblicz x1
- y1 = sy * 100 + 140+start_y; // oblicz y1
- // fake line auto-generate
- tft.drawLine(x0, y0, x1, y1, TFT_BLACK); // drukuj ticka
- // fake line auto-generate
- if (i % 25 == 0) // jeśli reszta z dzielenia to 0
- { // to
- x0 = sx * (100 + tl + 10) + 120; // wyznacz x0
- y0 = sy * (100 + tl + 10) + 140+start_y; // wyznacz y0
- // fake line auto-generate
- int FValue; // zapisz tu skok skali
- // fake line auto-generate
- switch (i / 25) // liczba całkowita z dzielenia / 25
- { // przełącznik logiczny
- case -2: FValue = value_start + ( 0 * value_step ); // oblicz dla -2 wartość FVALUE
- tft.drawCentreString(String(FValue), x0, y0 - 12, 2); // konwertuj do STRING pokaż na TFT
- break; // przerwij
- case -1: FValue = value_start + ( 1 * value_step ); // oblicz dla -1 wartość FVALUE
- tft.drawCentreString(String(FValue), x0, y0 - 9, 2); // konwertuj do STRING pokaż na TFT
- break; // przerwij
- case 0: FValue = value_start + ( 2 * value_step ); // oblicz dla 0 wartość FVALUE
- tft.drawCentreString(String(FValue), x0, y0 - 6, 2); // konwertuj do STRING pokaż na TFT
- break; // przerwij
- case 1: FValue = value_start + ( 3 * value_step ); // oblicz dla +1 wartość FVALUE
- tft.drawCentreString(String(FValue), x0, y0 - 9, 2); // konwertuj do STRING pokaż na TFT
- break; // przerwij
- case 2: FValue = value_start + ( 4 * value_step ); // oblicz dla +2 wartość FVALUE
- tft.drawCentreString(String(FValue), x0, y0 - 12, 2); // konwertuj do STRING pokaż na TFT
- break; // przerwij
- } // K O N I E C P R Z E Ł A C Z N I K
- } // K O N I E C R E S Z T A % 0
- // fake line auto-generate
- sx = cos((i + 5 - 90) * 0.0174532925); // wyznacz sx z cosinusa DT I 0.1714
- sy = sin((i + 5 - 90) * 0.0174532925); // wyznacz sy z sinusa DT I 0.1714
- x0 = sx * 100 + 120; // podstaw pod x0
- y0 = sy * 100 + 140+start_y; // podstaw pod y0
- if (i < 50) tft.drawLine(x0, y0, x1, y1, TFT_BLACK); // drukuj skalę
- } // K O N I E C P Ę T L I F O R
- } // K O N I E C F U N K C J I
- //
- // *********************************************************************************************************** //
- // *** Pokaz miernik analogowy UP *** //
- // *********************************************************************************************************** //
- //
- void TFTPanel :: AnalogPanelUp_v1_Show126(int value)
- {
- int y = Window_TFT_up.pos_y; // wyznacz oś y ze struktury UP
- int ms_delay = 0;
- char buf[8]; // bufor tekstowy
- dtostrf(value, 4, 0, buf); // kopiuj wartość typu INT do CHAR
- // fake line auto-generated
- tft.setTextColor(TFT_WHITE, TFT_BLACK); // ustaw kolor czcionki / tła
- tft.drawRightString(buf, 40, 119 - 20+y, 2); // drukuj zawartość bufora CHAR
- tft.drawRightString(Window_TFT_up.value_name, 220, 119 - 20+y, 2); // drukuj zawartość dla UP
- // fake line auto-generated
- if (value < Window_TFT_up.value_min) value = Window_TFT_up.value_min; // ustaw wartość minimalną
- if (value > Window_TFT_up.value_max) value = Window_TFT_up.value_max; // ustaw wartość maxymalną
- // fake line auto-generated
- while (!(value == Window_TFT_up.old_analog)) // jesli wartości się zmieniły
- { // początek pętli WHILE
- if (Window_TFT_up.old_analog < value) Window_TFT_up.old_analog++; // sprawdź
- else Window_TFT_up.old_analog--; // jeśli FAŁSZ odejmij 1
- // fake line auto-generated
- if (ms_delay == 0) Window_TFT_up.old_analog = value; // fake flicker
- // fake line auto-generated
- float sdeg = map(Window_TFT_up.old_analog, Window_TFT_up.value_min, Window_TFT_up.value_max, -150, -30); // skalowanie to wartości MIN / MAX
- // fale line auto-generated
- float sx = cos(sdeg * 0.0174532925); // oblicz nowe wartości dla sx
- float sy = sin(sdeg * 0.0174532925); // oblicz nowe wartości dla xy
- float tx = tan((sdeg + 90) * 0.0174532925); // oblicz DELTĘ
- // fake line auto-generated
- tft.drawLine(120 + 20 * Window_TFT_up.ltx - 1, 140 - 20+y, Window_TFT_up.osx - 1, Window_TFT_up.osy+y, TFT_BLACK); // skasuj starą wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_up.ltx, 140 - 20+y, Window_TFT_up.osx, Window_TFT_up.osy+y, TFT_BLACK); // skasuj starą wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_up.ltx + 1, 140 - 20+y, Window_TFT_up.osx + 1, Window_TFT_up.osy+y, TFT_BLACK); // skasuj starą wskazówkę
- tft.setTextColor(TFT_WHITE); // ustaw kolor znaków / pikseli
- // fake line auto-generated
- Window_TFT_up.ltx = tx; // zapisz nowe tx
- Window_TFT_up.osx = sx * 98 + 120; // zapisz nowe sx
- Window_TFT_up.osy = sy * 98 + 140; // zapisz nowe sy
- // fake line auto-generated
- tft.drawLine(120 + 20 * Window_TFT_up.ltx - 1, 140 - 20+y, Window_TFT_up.osx - 1, Window_TFT_up.osy +y, TFT_WHITE); // pokaz nową wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_up.ltx, 140 - 20+y, Window_TFT_up.osx, Window_TFT_up.osy +y, TFT_WHITE); // pokaz nową wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_up.ltx + 1, 140 - 20+y, Window_TFT_up.osx + 1, Window_TFT_up.osy +y, TFT_WHITE); // pokaz nową wskazówkę
- // fake line auto-generated
- if (abs(Window_TFT_up.old_analog - value) < 10) ms_delay += ms_delay / 5; // fake flicker
- delay(ms_delay); // fake flicker
- } // K O N I E C W H I L E
- }
- //
- // *********************************************************************************************************** //
- // *** Narysuj miernik analogowy DOWN *** //
- // *********************************************************************************************************** //
- //
- void TFTPanel :: AnalogPanelDown_v1_Show126(int value)
- {
- int y = Window_TFT_down.pos_y; // wyznacz oś y ze struktury UP
- int ms_delay = 0;
- char buf[8]; // bufor tekstowy
- dtostrf(value, 4, 0, buf); // kopiuj wartość typu INT do CHAR
- // fake line auto-generated
- tft.setTextColor(TFT_WHITE, TFT_BLACK); // ustaw kolor czcionki / tła
- tft.drawRightString(buf, 40, 119 - 20+y, 2); // drukuj zawartość bufora CHAR
- tft.drawRightString(Window_TFT_down.value_name, 220, 119 - 20+y, 2); // drukuj zawartość dla UP
- // fake line auto-generated
- if (value < Window_TFT_down.value_min) value = Window_TFT_down.value_min; // ustaw wartość minimalną
- if (value > Window_TFT_down.value_max) value = Window_TFT_down.value_max; // ustaw wartość maxymalną
- // fake line auto-generated
- while (!(value == Window_TFT_down.old_analog)) // jesli wartości się zmieniły
- { // początek pętli WHILE
- if (Window_TFT_down.old_analog < value) Window_TFT_down.old_analog++; // sprawdź
- else Window_TFT_down.old_analog--; // jeśli FAŁSZ odejmij 1
- // fake line auto-generated
- if (ms_delay == 0) Window_TFT_down.old_analog = value; // fake flicker
- // fake line auto-generated
- float sdeg = map(Window_TFT_down.old_analog, Window_TFT_down.value_min, Window_TFT_down.value_max, -150, -30); // skalowanie to wartości MIN / MAX
- // fale line auto-generated
- float sx = cos(sdeg * 0.0174532925); // oblicz nowe wartości dla sx
- float sy = sin(sdeg * 0.0174532925); // oblicz nowe wartości dla xy
- float tx = tan((sdeg + 90) * 0.0174532925); // oblicz DELTĘ
- // fake line auto-generated
- tft.drawLine(120 + 20 * Window_TFT_down.ltx - 1, 140 - 20+y, Window_TFT_down.osx - 1, Window_TFT_down.osy+y, TFT_BLACK); // skasuj starą wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_down.ltx, 140 - 20+y, Window_TFT_down.osx, Window_TFT_down.osy+y, TFT_BLACK); // skasuj starą wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_down.ltx + 1, 140 - 20+y, Window_TFT_down.osx + 1, Window_TFT_down.osy+y, TFT_BLACK); // skasuj starą wskazówkę
- tft.setTextColor(TFT_WHITE); // ustaw kolor znaków / pikseli
- // fake line auto-generated
- Window_TFT_down.ltx = tx; // zapisz nowe tx
- Window_TFT_down.osx = sx * 98 + 120; // zapisz nowe sx
- Window_TFT_down.osy = sy * 98 + 140; // zapisz nowe sy
- // fake line auto-generated
- tft.drawLine(120 + 20 * Window_TFT_down.ltx - 1, 140 - 20+y, Window_TFT_down.osx - 1, Window_TFT_down.osy +y, TFT_WHITE); // pokaz nową wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_down.ltx, 140 - 20+y, Window_TFT_down.osx, Window_TFT_down.osy +y, TFT_WHITE); // pokaz nową wskazówkę
- tft.drawLine(120 + 20 * Window_TFT_down.ltx + 1, 140 - 20+y, Window_TFT_down.osx + 1, Window_TFT_down.osy +y, TFT_WHITE); // pokaz nową wskazówkę
- // fake line auto-generated
- if (abs(Window_TFT_down.old_analog - value) < 10) ms_delay += ms_delay / 5; // fake flicker
- delay(ms_delay); // fake flicker
- }
- }
- // =========================================================================================================== //
- // === M E T O D Y P U B L I C Z N E ======================================================================= //
- // =========================================================================================================== //
- //
- //
- //
- //
- //
- // *********************************************************************************************************** //
- // *** G ł ó w n a F u n k c j a K o n f i g u r a c y j n a *** //
- // *********************************************************************************************************** //
- //
- void TFTPanel :: PanelInit()
- {
- tft.init(); // inicjalizuj ekran
- tft.setRotation(0); // ustaw rotację
- tft.fillScreen(Color_Bakground); // ustaw tło okna
- }
- //
- // *********************************************************************************************************** //
- // *** A N A L O G P A N E L C R E A T E V 1 *** //
- // *********************************************************************************************************** //
- //
- void TFTPanel :: AnalogPanel_v1_Create()
- {
- DrawMaxWindow(); // rysuj ramkę dla maksymalnego okna głównego
- DrawDownWindow126(); // rysuj ramkę dolną dla modułu ANALOG METER ( DOWN )
- SetupDownAnalogWindow126( 0, 25, "Wilgotnosc"); // ustaw parametry dla ANALOG METER ( DOWN )
- DrawUpWindow126(); // rysuj ramkę górną dla modułu ANALOG METER ( UP )
- SetupUpAnalogWindow126( -10, 10, "Temperatura"); // ustaw parametry dla ANALOG METER ( UP )
- DrawAnalogWindow126( window_up_v1, -10, 10); // rysuj analogowy wskaźnik ( UP ) ( min value ) ( max value )
- DrawAnalogWindow126( window_down_v1, 0, 25); // rysuj analogowy wskaźnik ( DOWN ) ( min value ) ( max value )
- }
- //
- // *********************************************************************************************************** //
- // *** A N A L O G P A N E L S H O W V 1 *** //
- // *********************************************************************************************************** //
- //
- void TFTPanel :: AnalogPanel_v1_Show(int Temperatura, int Wilgotnosc)
- {
- AnalogPanelUp_v1_Show126(Temperatura);
- AnalogPanelDown_v1_Show126(Wilgotnosc);
- }
- // *********************************************************************************************************** //
Add Comment
Please, Sign In to add comment