Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // matrix.h
- // taką nazwę ma mieć ten plik w katalogu z twoim projektem
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // W A ż N E ! ! ! P R Z E C Z Y T A J ! ! ! //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- // z klasą TMatrix należy się zapoznać !!! posiada nie-konwencjonalne rozwiązania w celu bardzo szybkiego działania //
- // i nie dołączania zbędnych funkji i zmiennych do kodu - została tak napisana by 10-latek ją zrozumiał. Jest prosta //
- // i przejrzysta. Skoro mój 11-letni syn ją ogarnia, sam modyfikuje, dodaje i przerabia to poświęć 10min i mała //
- // analiza kodu źródłowego oraz komentarzy da obraz jej działania. //
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- // T M A T R I X C L A S S B Y M A R C I N //
- // S. C. P. Version for Matrix PAROLA Dynamic Library //
- // //
- // Animation speed adapted to 16Mhz, 8-bit processors ATmega328 //
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // MADE by MARCIN (POLISH / ENGLISH MAKRO SWITCH) //
- // MAKRO JĘZYKA :-) 0 = POLSKI (dni tygodnia / miesiące) -- in POLISH (day of weeks / month) //
- // MAKRO JĘZYKA :-) 1 = ENGLISH (dni tygodnia / miesiące) -- in ENGLISH (day of weeks / month ) //
- // //
- #define LANGUAGE 0
- // //
- // Polski lub angielski - nie zużywa pamięci programu //
- // Polish or English - does not consume program memory //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // M E T O D Y P U B L I C Z N E D O U Ż Y C I A / P U B L I C M E T H O D S F O R Y O U //
- // //
- // P. ShowAllValue(); -- isnieje jeśli TERMINAL jest TRUE //
- // P. ShowEffectDemo(); -- demo efektów klasy TMatrix //
- // P. ShowSpriteDemo(); -- demo duszków klasy TMatrix //
- // P. ShowRandomDemo(); -- demo efektów i dzusków klasy TMatrix //
- // P. ShowDayName(uint8_t nr_day); -- pokaż dzień tygodnia - na wejściu nr. dnia (1-7), jeśli 0 wyświetli ERROR //
- // P. ShowMonthName(uint8_t nr_month); -- pokaż nazwę miesiąca - na wejśćiu nr. mies (1-12),jeśłi 0 wyświetli ERORR //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- // build for 8-bit Arduino-MEGA256 (start buid: 11.02.2021) version.SCP //
- // this version works only with UNO, NANO and MEGA //
- // PROGMEM MEMORY is optimized for these devices !!! //
- // you must remove all PROGMEM makro and replace memory copy function strcpy_P to string copy strcpy //
- // and replace function strlen_P to strlen. All function pgm_read_word you delete from code. //
- // //
- // ta wersja pracuje tylko z UNO, NANO i MEGA //
- // wykorzystuje alokację stałych zmiennych za pomocą PROGMEM //
- // nie będzie działać z Arduino DUE gdzie nie ma podziału //
- // na szynę pamięci programu i szynę pamięci RAM //
- // kompatybilny z 32-bitowym DUE, ESP2886, ESP32 - musisz usunąć wszędzie makro PROGMEM i zamienić funkcję kopiowania //
- // z pamięci PROG (strcpy_P) na funkcję kopiowania string (strcpy) oraz funkcję obliczania rozmiaru (strlen_P) zastąpić //
- // zwykłą funkcją dla pobierania rozmiaru tablicy (strlen). //
- // Wszystkie funkcje pgm_read_word sięgające do pamięci spoza RAM muszą zostać skasowane //
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- // language : english (code) & poland (comments) //
- // code : C and C++ in Arduino Pro IDE - Alpha 0.1.2 - nightly.20201110 //
- // e-mail : [email protected] //
- // blogger : https://arudino-code.blogspot.com/ //
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- // S.C.P. Matrix PAROLA Class version history logger //
- // //
- // v0.052 Memory Test --- 13. 02. 2021 --- DAY ON, MONTH ON, DEMO ON -> Memory Size: 23030b PROG & 511b RAM //
- // v0.051 Rebuild --- 13. 02. 2021 --- modyfikacja, wykryto błędy nakładania bufora 22238b PROG 503b RAM //
- // v0.050 Show of Month --- 13. 02. 2021 --- dodano : pokaż nazwę miesiąca --- LOSOWY EFEKT DUSZKA ------------ //
- // v0.049 Random Sprite --- 13. 02. 2021 --- dodano : void ShowMsgRandomSprite(char *buf); (wyjęcie z ShowDay) //
- // --- 13. 02. 2021 --- odzyskano pamięć dynamiczną - stan : 22684b PROG & 511b RAM //
- // v0.048 Show of Day --- 13. 02. 2021 --- dodano : pokaż nazwę dnia --- LOSOWY EFEKT DUSZKA ---------------- //
- // v0.047 Language Switch --- 13. 02. 2021 --- dodano : MAKRO - przełącznik języków - 22404b PROG & 511b RAM :-) //
- // v0.046 English Month --- 13. 02. 2021 --- dodano : miesiące po angielsku //
- // v0.045 English Day --- 13. 02. 2021 --- dodano : dni po angielsku //
- // v0.044 Makro Time --- 13. 02. 2021 --- wyłączono makrem stare metody DAY & MONTH - 22404b PROG & 511b RAM //
- // v0.043 Define Terminal --- 13. 02. 2021 --- makro terminal połączenia z PC przeniesiony do klasy //
- // v0.042 Fake Terminal --- 13. 02. 2021 --- wyłączenie Terminala PC -> 22414b PROG & 541b RAM - HAPPY :-) //
- // v0.043 MACRO TEST --- 13. 02. 2021 --- test MATRIX MAKRO wszystkie na FALSE -> 23438b PROG & 716b RAM //
- // v0.042 MACRO save RAM --- 13. 02. 2021 --- makro wyłączające metodę MSG2Bufor -> 24768b PROG & 720b RAM //
- // --- na razie korzystamy z metod zwracających CHAR * ale metoda zostaje //
- // --- makro zdefiniowane w częśći prywatnej zmiennych klasy jako FALSE //
- // v0.041 new idea 3 --- 13. 02. 2021 --- wykorzystano char * MSG2Bufor w EFFECT -> 24768b PROG & 735b RAM //
- // v0.040 new idea 2 --- 13. 02. 2021 --- wykorzystano char * MSG2Bufor w SPRITE -> 24828b PROG & 735b RAM //
- // v0.039 new idea 1 --- 13. 02. 2021 --- dodano metodę do klasy : char * MSG2Bufor(nr_msg, buf, size_buf); //
- // v0.038 math random --- 13. 02. 2021 --- modyfikacja: random zamiast IF -> 24732b PROG & 735b RAM :-) //
- // v0.037 time for demo --- 13. 02. 2021 --- dodano: Przełącznik Demo -> 24513b PROG & 734b RAM //
- // v0.036 math day 2 --- 13. 02. 2021 --- modyfikacja ShowSpriteDemo -> 23606b PROG & 665b RAM //
- // v0.035 math day 1 --- 13. 02. 2021 --- modyfikacja ShowSpriteDemo -> 24128b PROG & 729b RAM //
- // v0.034 sprite day --- 13. 02. 2021 --- dodano sprite : G H O S T //
- // v0.033 sprite day --- 13. 02. 2021 --- dodano sprite : P A C M A N //
- // v0.032 sprite day --- 13. 02. 2021 --- dodano sprite : W AL K I N G M A N //
- // v0.031 sprite day --- 13. 02. 2021 --- dodano sprite : C H E V R O N //
- // v0.030 sprite day --- 13. 02. 2021 --- dodano sprite : F I R E B A L L //
- // v0.029 sprite day --- 13. 02. 2021 --- dodano sprite : R O C K E T //
- // v0.028 sprite day --- 13. 02. 2021 --- dodano sprite : S P A C E I N V A D E R S //
- // v0.027 sprite day --- 13. 02. 2021 --- dodano sprite : H E A R T F O R M Y M O M //
- // v0.026 sprire day --- 13. 02. 2021 --- dodano sprite : T I T A N I C S T E A M B O A T //
- // v0.025 sprite day --- 13. 02. 2021 --- dodano sprite : S A I L I N G B O A T //
- // v0.024 sprite day --- 13. 02. 2021 --- dodano sprite : A R R O W F A D I N G 2 O U T S I D E //
- // v0.023 sprite day --- 13. 02. 2021 --- dodano sprite : A R R O W F A D I N G 2 C E N T E R //
- // v0.022 sprite day --- 13. 02. 2021 --- dodano sprite : S P A C E D L I N E S //
- // v0.021 sprite day --- 13. 02. 2021 --- dodano sprite : R O L L I N G O C T A G O N //
- // v0.020 sprite day --- 12. 02. 2021 --- dodano sprite : R O L L I N G S Q U A R E //
- // v0.019 sprite day --- 12. 02. 2021 --- dodano sprite : W A V E W O R M //
- // v0.018 extractor time --- 12. 02. 2021 --- char * month - zwraca bufor z nazwą miesiąća //
- // v0.017 extractor time --- 12. 02. 2021 --- char * day of week - zwraca bufor z dniem tygodnia //
- // v0.016 debug rebuild --- 12. 02. 2021 --- przebudowowa DEBUG'ów ---- ALL OFF - use 22366b PROG & 663b RAM //
- // v0.015 catch month error --- 12. 02. 2021 --- złap błąd jeśli miesiąc poza zakresem :-) //
- // v0.015 catch day error --- 12. 02. 2021 --- złap błąd jeśli dzień tygodnia poza zakresem :-) //
- // v0.014 extract month --- 12. 02. 2021 --- wyciągnij MIESIAC z PROGMEM - używam: 23486b PROG & 667b RAM //
- // v0.013 optimization time --- 12. 02. 2021 --- redukcja zbędnego balastu --- reduction of unnecessary ballast //
- // v0.012 extract day --- 12. 02. 2021 --- wyciągnij DZIEN z PROGMEM - używam: 23486b PROG & 667b RAM //
- // v0.011 month of year --- 12. 02. 2021 --- MIESIĄCE do PROGMEM :-) 23008 bytes PROG and 635 bytes RAM //
- // v0.010 pacman & ghost --- 12. 02. 2021 --- animacja pacman & ghost //
- // v0.009 day of week --- 12. 02. 2021 --- DNI TYGODNIA do PROGMEM :-) 23008 bytes PROG & 635 bytes RAM //
- // v0.008 saving RAM --- 12. 02. 2021 --- MOJE WIADOMOSCI do PROGMEM :-) 22974 bytes PROG & 635 bytes RAM //
- // v0.007 frosty morning --- 12. 02. 2021 --- dodano wiadomości do wyświetlenia //
- // v0.006 visual effects --- 12. 02. 2021 --- dodano obsługę efektów wizualnych //
- // v0.005 moment of truth --- 11. 02. 2021 --- 22746 bytes program space & 525 bytes dynamic memory //
- // v0.004 truth flags --- 11. 02. 2021 --- flags and features of their return //
- // v0.003 save the memory --- 11. 02. 2021 --- constants to program memory //
- // v0.002 debug night --- 11. 02. 2021 --- building debugs //
- // v0.001 night mary --- 11. 02. 2021 --- start of class building //
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // INCLUDE PAROLA LIBRARY //
- // //
- #include <MD_Parola.h> //
- #include <MD_MAX72xx.h> //
- #include <SPI.h> //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // DEFINE TERMINAL MAKRO -------------------------------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // włącza / wyłącza połączenie z Terminalem USB-Serial na PC (UNIX / DOS / WINDOWS) //
- // jeśli 0 - wyłącz TERMINAL i nie załącząj do pliku binarnego komunikacja przez USB-Serial z PC //
- // jeśli 1 - włącz TERMINAL z prędkością 57600boud i dołącz do pliku binarnego komunikację przez USB-Serial z PC //
- // //
- #define TERMINAL 0
- #if TERMINAL
- #define TERMINAL_PC_SPEED 57600
- #endif
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // DEFINE MAKRO --- M_DEBUG = all info for SERIAL --- F_DEBUG = 1 -- info for SERIAL ------------------------------------- //
- // dołączaj do pliku binarnego jeśli true --------------------------------------------------------------------------------- //
- #if TERMINAL
- #define M_DEBUG 1
- #else
- #define M_DEBUG 0
- #endif
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // DEFINE MAKRO --- V_DEBUG = all variable for SERIAL --- V_DEBUG = 1 --- state for SERIAL -------------------------------- //
- // dołączaj do pliku binarnego jeśli true --------------------------------------------------------------------------------- //
- #if TERMINAL
- #define V_DEBUG 1
- #else
- #define V_DEBUG 0
- #endif
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // DEFINE MAKRO --- LANGUAGE --- PL = 0, EN = 1 //
- // ------------------------------------------------------------------------------------------------------------------------ //
- #if LANGUAGE
- #define POLISH 0
- #define ENGLISH 1
- #else
- #define POLISH 1
- #define ENGLISH 0
- #endif
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // ALL SERIAL message to PROGMEM MEMORY !!! ------------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // include to binary files when M_DEBUG is TRUE !!! --- memory is FREE when M_DEBUG is false ------------------------------ //
- // dołączany do pliku binarnego wtedy gdy M_DEBUG ma wartość prawdziwą : 1, kiedy jest 0 wszystko jest pomijane !!! ------- //
- // nie jest sprawdzany czy SERIAL.BEGIN był inicjowany, całkowite wykluczenie z kodu wsadowego do ARDUINO MEGA 256 !!! ---- //
- //
- #if M_DEBUG
- const char SERIAL_MSG_00 [] PROGMEM = " TMatrix -> ERROR MSG -> Nie ma takiego komunikatu do wyswietlenia ";
- const char SERIAL_MSG_01 [] PROGMEM = " TMatrix -> Uruchomiono -> konstruktor klasy TMatrix ";
- const char SERIAL_MSG_02 [] PROGMEM = " TMatrix -> Uruchomiono -> TMatrix_ON() -> zmieniono stan flag ";
- const char SERIAL_MSG_03 [] PROGMEM = " TMatrix -> Uruchomiono -> TMatrix_OFF() -> zmieniono stan flag ";
- const char SERIAL_MSG_04 [] PROGMEM = " TMatrix -> Uruchomiono -> TMatrix_BUSY() -> zwrocono flage ";
- const char SERIAL_MSG_05 [] PROGMEM = " TMatrix -> Uruchomiono -> TMatrix_FREE() -> zwrocono flage ";
- const char SERIAL_MSG_06 [] PROGMEM = " TMatrix -> Uruchomiono -> TMatrix_isON() -> zwrocono flage ";
- const char SERIAL_MSG_07 [] PROGMEM = " TMatrix -> Uruchomiono -> TMatrix_isOFF() -> zwrocono flage ";
- const char SERIAL_MSG_08 [] PROGMEM = " TMatrix -> Nieudana ekstrakcja dnia tygodnia, poza zakresem -> skopiowano E R R O R ";
- const char SERIAL_MSG_09 [] PROGMEM = " TMatrix -> Nieudana ekstrakcja miesiaca, poza zakresem -> skopiowano E R R O R ";
- const char SERIAL_MSG_10 [] PROGMEM = " TMatrix -> DEMOMODE -> Utworzono napis : ";
- const char * const SERIAL_MSG [] PROGMEM = {
- SERIAL_MSG_00 , SERIAL_MSG_01 , SERIAL_MSG_02 , SERIAL_MSG_03 , SERIAL_MSG_04 ,
- SERIAL_MSG_05 , SERIAL_MSG_06 , SERIAL_MSG_07 , SERIAL_MSG_08 , SERIAL_MSG_09 ,
- SERIAL_MSG_10
- };
- #endif
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // ALL SERIAL VALUE message to PROGMEM MEMORY !!! ------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // include to binary files when V_DEBUG is TRUE !!! --- memory is FREE when V_DEBUG is false ------------------------------ //
- // dołączany do pliku binarnego wtedy gdy V_DEBUG ma wartość prawdziwą : 1, kiedy jest 0 wszystko jest pomijane !!! ------- //
- // nie jest sprawczyczy czy SERIAL.BEGIN był inicjowany, całkowite wykluczenie z kodu wsadowego do ARDUINO MEGA 256 ------- //
- //
- #if V_DEBUG
- const char VALUE_MSG_00 [] PROGMEM = " TMatrix -> ERROR MSG -> Nie ma takiego komunikatu do wyswietlenia ";
- const char VALUE_MSG_01 [] PROGMEM = " TMatrix -> Flaga : F_Matrix_Busy : ";
- const char VALUE_MSG_02 [] PROGMEM = " TMatrix -> Flaga : F_Matrix_Free : ";
- const char VALUE_MSG_03 [] PROGMEM = " TMatrix -> Flaga : F_Matrix_Off : ";
- const char VALUE_MSG_04 [] PROGMEM = " TMatrix -> Flaga : F_Matrix_On : ";
- const char * const VALUE_MSG [] PROGMEM = {
- VALUE_MSG_00 , VALUE_MSG_01, VALUE_MSG_02, VALUE_MSG_03, VALUE_MSG_04
- };
- #endif
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // ALL MATRIX message to PROGMEM MEMORY !!! ------------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- //
- const char P_MSG_00 [] PROGMEM = "E R R O R";
- const char P_MSG_01 [] PROGMEM = "M A R C I N";
- const char P_MSG_02 [] PROGMEM = "MARCIN SCP!";
- const char P_MSG_03 [] PROGMEM = "S C P" ;
- const char P_MSG_04 [] PROGMEM = "M A R C I N";
- const char P_MSG_05 [] PROGMEM = "P O R T A L";
- const char P_MSG_06 [] PROGMEM = "KNIGHTS :3";
- const char P_MSG_07 [] PROGMEM = "HELLO MARCIN";
- const char P_MSG_08 [] PROGMEM = "I S L A N D";
- const char P_MSG_09 [] PROGMEM = "MINECRAFT";
- // --- W A Ż N E --- Jeśli dodasz kolejną wiadomość ( napis ) do wyświetlenia, analogicznie jak powyżej - musisz nadać //
- // unikalna nazwę tej wiadomości wg. szablogu P_MSG_XX gdzie XX to kolejny numer. Następnie należy uzupełnić stałą tablicę //
- // wskaźników poniżej, po przecinku, ostatni wskaźnik do tablicy jest bez przecinka !!! Proste, przejrzyste --- Wielkość //
- // tablicy wskaźników cię nie interesuje, są obliczane dynamicznie w czasie kompilacji w funkcji INIT klasy TMatrix //
- const char * const P_MSG [] PROGMEM = {
- P_MSG_00, P_MSG_01, P_MSG_02, P_MSG_03, P_MSG_04, P_MSG_05,
- P_MSG_06, P_MSG_07, P_MSG_08, P_MSG_09
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // ALL MATRIX DAY to PROGMEM MEMORY !!! ----------------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // jeśli POLISH jest true / if POLISH is true ----------------------------------------------------------------------------- //
- // //
- #if POLISH
- const char DAY_MSG_00 [] PROGMEM = "E R R O R";
- const char DAY_MSG_01 [] PROGMEM = "Poniedzialek";
- const char DAY_MSG_02 [] PROGMEM = "W T O R E K";
- const char DAY_MSG_03 [] PROGMEM = "S R O D A";
- const char DAY_MSG_04 [] PROGMEM = "CZWARTEK";
- const char DAY_MSG_05 [] PROGMEM = "P I A T E K";
- const char DAY_MSG_06 [] PROGMEM = "S O B O T A";
- const char DAY_MSG_07 [] PROGMEM = "NIEDZIELA";
- #endif
- // jeśli ENGLISH jest true / if ENGLISH is true -------------------------------------------------------------------------- //
- #if ENGLISH
- const char DAY_MSG_00 [] PROGMEM = "No day";
- const char DAY_MSG_01 [] PROGMEM = "Monday";
- const char DAY_MSG_02 [] PROGMEM = "Tuesday";
- const char DAY_MSG_03 [] PROGMEM = "Wednesday";
- const char DAY_MSG_04 [] PROGMEM = "Thursday";
- const char DAY_MSG_05 [] PROGMEM = "Friday";
- const char DAY_MSG_06 [] PROGMEM = "Saturday";
- const char DAY_MSG_07 [] PROGMEM = "Sunday";
- #endif
- const char * const DAY_MSG [] PROGMEM = {
- DAY_MSG_00, DAY_MSG_01, DAY_MSG_02, DAY_MSG_03,
- DAY_MSG_04, DAY_MSG_05, DAY_MSG_06, DAY_MSG_07
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // ALL MATRIX MONTH to PROGMEM MEMORY !!! --------------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // jeśli POLISH jest true / if POLISH is true ----------------------------------------------------------------------------- //
- // //
- #if POLISH
- const char MONTH_MSG_00 [] PROGMEM = "E R R O R";
- const char MONTH_MSG_01 [] PROGMEM = "STYCZEN";
- const char MONTH_MSG_02 [] PROGMEM = "L U T Y";
- const char MONTH_MSG_03 [] PROGMEM = "M A R Z E C";
- const char MONTH_MSG_04 [] PROGMEM = "KWIECIEN";
- const char MONTH_MSG_05 [] PROGMEM = "M A J";
- const char MONTH_MSG_06 [] PROGMEM = "CZERWIEC";
- const char MONTH_MSG_07 [] PROGMEM = "L I P I E C";
- const char MONTH_MSG_08 [] PROGMEM = "SIERPIEN";
- const char MONTH_MSG_09 [] PROGMEM = "WRZESIEN";
- const char MONTH_MSG_10 [] PROGMEM = "PAZDZIERNIK";
- const char MONTH_MSG_11 [] PROGMEM = "LISTOPAD";
- const char MONTH_MSG_12 [] PROGMEM = "GRUDZIEN";
- #endif
- // --- ENGLISH MONTH is LANGUAGE is true --- angielskie miesiące jeśli makro LANGUAGE jest TRUE -------------------------- //
- #if ENGLISH
- const char MONTH_MSG_00 [] PROGMEM = "No Month";
- const char MONTH_MSG_01 [] PROGMEM = "January";
- const char MONTH_MSG_02 [] PROGMEM = "February";
- const char MONTH_MSG_03 [] PROGMEM = "March";
- const char MONTH_MSG_04 [] PROGMEM = "April";
- const char MONTH_MSG_05 [] PROGMEM = "May";
- const char MONTH_MSG_06 [] PROGMEM = "June";
- const char MONTH_MSG_07 [] PROGMEM = "July";
- const char MONTH_MSG_08 [] PROGMEM = "August";
- const char MONTH_MSG_09 [] PROGMEM = "September";
- const char MONTH_MSG_10 [] PROGMEM = "October";
- const char MONTH_MSG_11 [] PROGMEM = "November";
- const char MONTH_MSG_12 [] PROGMEM = "December";
- #endif
- const char * const MONTH_MSG [] PROGMEM = {
- MONTH_MSG_00, MONTH_MSG_01, MONTH_MSG_02, MONTH_MSG_03, MONTH_MSG_04,
- MONTH_MSG_05, MONTH_MSG_06, MONTH_MSG_07, MONTH_MSG_08, MONTH_MSG_09,
- MONTH_MSG_10, MONTH_MSG_11, MONTH_MSG_12
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E D E F I N I T I O N -------------------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P A C M A N D E F I N I T I O N -------------------------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_PMAN1 = 6; // rozmiar duszka PACMAN ----------------- //
- const uint8_t W_PMAN1 = 8; // rozmiar duszka PACMAN ----------------- //
- static const uint8_t pacman1[F_PMAN1 * W_PMAN1] PROGMEM = // definicja animacji PACMAN ------------- //
- {
- 0x00, 0x81, 0xc3, 0xe7, 0xff, 0x7e, 0x7e, 0x3c,
- 0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c,
- 0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c,
- 0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c,
- 0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c,
- 0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : W A V E / W O R M D E F I N I T I O N ---------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_WAVE = 14;
- const uint8_t W_WAVE = 14;
- static const uint8_t wave [F_WAVE * W_WAVE] PROGMEM =
- {
- 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10,
- 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20,
- 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40,
- 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
- 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
- 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20,
- 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10,
- 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08,
- 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04,
- 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02,
- 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
- 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02,
- 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04,
- 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : G H O S T D E F I N I T I O N ---------------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_PMAN2 = 6; // rozmiar duszka GHOST ----------------- //
- const uint8_t W_PMAN2 = 18; // rozmiar duszka GHOST ----------------- //
- static const uint8_t pacman2[F_PMAN2 * W_PMAN2] PROGMEM = // animacja DUCH goni PACMANA ----------- //
- {
- 0x00, 0x81, 0xc3, 0xe7, 0xff, 0x7e, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
- 0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
- 0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
- 0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
- 0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
- 0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
- }; //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : R O L L I N G 1 S Q U A R E D E F I N I T I O N -------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_ROLL1 = 4;
- const uint8_t W_ROLL1 = 8;
- static const uint8_t roll1[F_ROLL1 * W_ROLL1] PROGMEM =
- {
- 0xff, 0x8f, 0x8f, 0x8f, 0x81, 0x81, 0x81, 0xff,
- 0xff, 0xf1, 0xf1, 0xf1, 0x81, 0x81, 0x81, 0xff,
- 0xff, 0x81, 0x81, 0x81, 0xf1, 0xf1, 0xf1, 0xff,
- 0xff, 0x81, 0x81, 0x81, 0x8f, 0x8f, 0x8f, 0xff,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : R O L L I N G 2 O C T A G O N D E F I N I T I O N -------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_ROLL2 = 4;
- const uint8_t W_ROLL2 = 8;
- static const uint8_t roll2 [F_ROLL2 * W_ROLL2] PROGMEM =
- {
- 0x3c, 0x4e, 0x8f, 0x8f, 0x81, 0x81, 0x42, 0x3c,
- 0x3c, 0x72, 0xf1, 0xf1, 0x81, 0x81, 0x42, 0x3c,
- 0x3c, 0x42, 0x81, 0x81, 0xf1, 0xf1, 0x72, 0x3c,
- 0x3c, 0x42, 0x81, 0x81, 0x8f, 0x8f, 0x4e, 0x3c,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : S P A C E D L I N E S D E F I N I T I O N ---------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_LINES = 3;
- const uint8_t W_LINES = 8;
- static const uint8_t lines [F_LINES * W_LINES] PROGMEM =
- {
- 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00,
- 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00,
- 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : A R R O W F A D I N G D E F I N I T I O N --------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_ARROW1 = 3;
- const uint8_t W_ARROW1 = 10;
- static const uint8_t arrow1 [F_ARROW1 * W_ARROW1] PROGMEM =
- {
- 0x18, 0x3c, 0x7e, 0xff, 0x7e, 0x00, 0x00, 0x3c, 0x00, 0x00,
- 0x18, 0x3c, 0x7e, 0xff, 0x00, 0x7e, 0x00, 0x00, 0x18, 0x00,
- 0x18, 0x3c, 0x7e, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x18,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : A R R O W F A D I N G O U T S I D E D E F I N I T I O N ---------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_ARROW2 = 3;
- const uint8_t W_ARROW2 = 9;
- static const uint8_t arrow2 [F_ARROW2 * W_ARROW2] PROGMEM =
- {
- 0x18, 0x3c, 0x7e, 0xe7, 0x00, 0x00, 0xc3, 0x00, 0x00,
- 0x18, 0x3c, 0x7e, 0xe7, 0xe7, 0x00, 0x00, 0x81, 0x00,
- 0x18, 0x3c, 0x7e, 0xe7, 0x00, 0xc3, 0x00, 0x00, 0x81,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : Ż A G L Ó W K A S H I P D E F I N I T I O N ------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_SAILBOAT = 1;
- const uint8_t W_SAILBOAT = 11;
- static const uint8_t sailboat[F_SAILBOAT * W_SAILBOAT] PROGMEM =
- {
- 0x10, 0x30, 0x58, 0x94, 0x92, 0x9f, 0x92, 0x94, 0x98, 0x50, 0x30,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : T I T A N I C S T E A M D E F I N I T I O N ------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_STEAMBOAT = 2;
- const uint8_t W_STEAMBOAT = 11;
- const uint8_t steamboat[F_STEAMBOAT * W_STEAMBOAT] PROGMEM =
- {
- 0x10, 0x30, 0x50, 0x9c, 0x9e, 0x90, 0x91, 0x9c, 0x9d, 0x90, 0x71,
- 0x10, 0x30, 0x50, 0x9c, 0x9c, 0x91, 0x90, 0x9d, 0x9e, 0x91, 0x70,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : H E A R T D E F I N I T I O N ------------------------------------------------------------------ //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_HEART = 5;
- const uint8_t W_HEART = 9;
- static const uint8_t heart[F_HEART * W_HEART] PROGMEM =
- {
- 0x0e, 0x11, 0x21, 0x42, 0x84, 0x42, 0x21, 0x11, 0x0e,
- 0x0e, 0x1f, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x1f, 0x0e,
- 0x0e, 0x1f, 0x3f, 0x7e, 0xfc, 0x7e, 0x3f, 0x1f, 0x0e,
- 0x0e, 0x1f, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x1f, 0x0e,
- 0x0e, 0x11, 0x21, 0x42, 0x84, 0x42, 0x21, 0x11, 0x0e,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : N A J E Ż D Z C A Z K O S M O S U D E F I N I T I O N -------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_INVADER = 2;
- const uint8_t W_INVADER = 10;
- static const uint8_t invader[F_INVADER * W_INVADER] PROGMEM =
- {
- 0x0e, 0x98, 0x7d, 0x36, 0x3c, 0x3c, 0x36, 0x7d, 0x98, 0x0e,
- 0x70, 0x18, 0x7d, 0xb6, 0x3c, 0x3c, 0xb6, 0x7d, 0x18, 0x70,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : R A K I E T A Z K O S M O S U D E F I N I T I O N ------------------------------------------ //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_ROCKET = 2;
- const uint8_t W_ROCKET = 11;
- static const uint8_t rocket[F_ROCKET * W_ROCKET] PROGMEM =
- {
- 0x18, 0x24, 0x42, 0x81, 0x99, 0x18, 0x99, 0x18, 0xa5, 0x5a, 0x81,
- 0x18, 0x24, 0x42, 0x81, 0x18, 0x99, 0x18, 0x99, 0x24, 0x42, 0x99,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : F I R E B A L L D E F I N I T I O N ------------------------------------------------------------ //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_FBALL = 2;
- const uint8_t W_FBALL = 11;
- static const uint8_t fireball[F_FBALL * W_FBALL] PROGMEM =
- {
- 0x7e, 0xab, 0x54, 0x28, 0x52, 0x24, 0x40, 0x18, 0x04, 0x10, 0x08,
- 0x7e, 0xd5, 0x2a, 0x14, 0x24, 0x0a, 0x30, 0x04, 0x28, 0x08, 0x10,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : C H E V R O N D E F I N I T I O N -------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_CHEVRON = 1;
- const uint8_t W_CHEVRON = 9;
- static const uint8_t chevron[F_CHEVRON * W_CHEVRON] PROGMEM =
- {
- 0x18, 0x3c, 0x66, 0xc3, 0x99, 0x3c, 0x66, 0xc3, 0x81,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : I D Ą C Y L U D Z I K D E F I N I T I O N ---------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- const uint8_t F_WALKER = 5;
- const uint8_t W_WALKER = 7;
- static const uint8_t walker[F_WALKER * W_WALKER] PROGMEM =
- {
- 0x00, 0x48, 0x77, 0x1f, 0x1c, 0x94, 0x68,
- 0x00, 0x90, 0xee, 0x3e, 0x38, 0x28, 0xd0,
- 0x00, 0x00, 0xae, 0xfe, 0x38, 0x28, 0x40,
- 0x00, 0x00, 0x2e, 0xbe, 0xf8, 0x00, 0x00,
- 0x00, 0x10, 0x6e, 0x3e, 0xb8, 0xe8, 0x00,
- };
- // ------------------------------------------------------------------------------------------------------------------------ //
- // S P R I T E : S T R U K T U R A A N I M A C J I d l a D U S Z K Ó W ----------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- struct
- {
- const uint8_t *data;
- uint8_t width;
- uint8_t frames;
- }
- sprite[] =
- {
- { walker, W_WALKER, F_WALKER },
- { invader, W_INVADER, F_INVADER },
- { chevron, W_CHEVRON, F_CHEVRON },
- { heart, W_HEART, F_HEART },
- { arrow1, W_ARROW1, F_ARROW1 },
- { steamboat, W_STEAMBOAT, F_STEAMBOAT },
- { fireball, W_FBALL, F_FBALL },
- { rocket, W_ROCKET, F_ROCKET },
- { roll2, W_ROLL2, F_ROLL2 },
- { pacman2, W_PMAN2, F_PMAN2 },
- { lines, W_LINES, F_LINES },
- { roll1, W_ROLL1, F_ROLL1 },
- { sailboat, W_SAILBOAT, F_SAILBOAT },
- { arrow2, W_ARROW2, F_ARROW2 },
- { wave, W_WAVE, F_WAVE },
- { pacman1, W_PMAN1, F_PMAN1 }
- };
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // T M a t r i x P a r o l a C l a s s //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- class TMatrix // klasa TMatrix ................................ //
- { //
- // części prywatne klasy - private parts of the class ................................................................. //
- private : //
- MD_Parola & P; // adres obiektu klasy MD_Parola -> P ........... //
- //
- // Z M I E N N E P R Y W A T N E ................................................................................ //
- #define oldMethod false
- bool F_Matrix_Busy; // flaga wyświetlacza ... true = busy ........... //
- bool F_Matrix_Free; // flaga wyświetlacza ... true = free ........... //
- bool F_Matrix_Off; // flaga wyświetlacza ... true = OFF ............ //
- bool F_Matrix_On; // flaga wyświetlacza ... true = ON ............. //
- #define Bufor_Size 15 // definiowanie rozmiaru BUFORÓW ................ //
- //
- // bufor nie wykorzystany jeśli oldMethod jest false, wyłącza też zostaje funkcja MSG2Bufor z binarki ............. //
- // by używać metody i bufora należy przestawić wartość oldMethod na true .......................................... //
- #if oldMethod
- char P_Bufor[Bufor_Size]; // bufor napisów do wyświetlenia na P ........... //
- #endif
- //
- #if oldMethod
- char M_Bufor[Bufor_Size]; // bufor nazw miesiąca dla &P PAROLA MATRIX ..... //
- #endif
- #if oldMethod
- char D_Bufor[Bufor_Size]; // bufor nazw tygodnia dla &P PAROLA MATRIX ..... //
- #endif
- byte Day_Tab_Size = 0; // przechowuje rozmiar tablicy DAY_MSG[] ........ //
- byte Month_Tab_Size = 0; // przechowuje rozmiar tablucy MONTH_MSG[] ...... //
- // O N L Y F O R D E M O O N L Y ---------------------------------------------------------------------------- //
- // //
- //bool F_Effect_Demo = false;
- //bool F_Sprite_Demo = false;
- //
- // już nie używane, flagi zastąpiono funkcją matematyczną rand -> generator liczb losowych ------------------------ //
- // ---------------------------------------------------------------------------------------------------------------- //
- // K A T A L O G E F E K T Ó W --- S T R U K T U R A D L A E f e c t P A R O L A ........................ //
- struct pCatalog //
- { //
- textEffect_t effect; // effect do wyświetlenia ----------------------- //
- uint16_t speed; // speed multiplier of library default //
- uint16_t pause; // pause multiplier for library default //
- }; //
- // ---------------------------------------------------------------------------------------------------------------- //
- //
- int P_MSG_SIZE = 0; // zmienna przechowuje wielkość tablicy P_MSG [] //
- #define EFECT_SIZE 28 //
- //
- pCatalog Efect[EFECT_SIZE] =
- {
- { PA_PRINT, 1, 1 },
- { PA_SCROLL_UP, 5, 1 },
- { PA_SCROLL_DOWN, 5, 1 },
- { PA_SCROLL_LEFT, 5, 1 },
- { PA_SCROLL_RIGHT, 5, 1 },
- { PA_SPRITE, 5, 1 },
- { PA_SLICE, 1, 1 },
- { PA_MESH, 20, 1 },
- { PA_FADE, 20, 1 },
- { PA_DISSOLVE, 7, 1 },
- { PA_BLINDS, 7, 1 },
- { PA_RANDOM, 3, 1 },
- { PA_WIPE, 5, 1 },
- { PA_WIPE_CURSOR, 4, 1 },
- { PA_SCAN_HORIZ, 4, 1 },
- { PA_SCAN_HORIZX, 4, 1 },
- { PA_SCAN_VERT, 3, 1 },
- { PA_SCAN_VERTX, 3, 1 },
- { PA_OPENING, 3, 1 },
- { PA_OPENING_CURSOR, 4, 1 },
- { PA_CLOSING, 3, 1 },
- { PA_CLOSING_CURSOR, 4, 1 },
- { PA_SCROLL_UP_LEFT, 7, 1 },
- { PA_SCROLL_UP_RIGHT, 7, 1 },
- { PA_SCROLL_DOWN_LEFT, 7, 1 },
- { PA_SCROLL_DOWN_RIGHT, 7, 1 },
- { PA_GROW_UP, 7, 1 },
- { PA_GROW_DOWN, 7, 1 }
- };
- // HOT TO USE ? JAK UŻYWAĆ EFEKTY --------------------------------------------------------------------------------- //
- // P.displayText(Efect[i].psz, just, Efect[i].speed, Efect[i].pause, Efect[i].effect, Efect[i].effect);//
- // F U N K C J E P R Y W A T N E ................................................................................ //
- void SerialMSG(byte nr_msg); //
- void ValueMSG(byte nr_msg); //
- #if oldMethod
- void MSG2Bufor(byte nr_msg); // wyciąga z pamięci PROGMEM wiadomość do ....... //
- #endif
- // wyświetlenia i kopiuje do P_Bufor ............ //
- char * MSG2Bufor(byte nr_msg, char *buf, byte lenght); // a ta zwraca CHAR * bez kopiowania ............ //
- //
- #if oldMethod
- void DayExtract(byte nr_day); // wyciąga z pamięci PROGMEM dzien tygodnia ..... //
- #endif
- // i kopiuje łańcuch CHAR * do D_Bufor .......... //
- char * DayExtract(byte nr_day, char *buf, byte lenght); // a ta zwraca CHAR * bez kopiowania ........... //
- //
- #if oldMethod
- void MonthExtract(byte nr_month); // wyciąga z pamięci PROGMEM nazwę miesiąca ..... //
- #endif
- // i kopiuje łańcuch CHAR * do M_Bufor .......... //
- char * MonthExtract(byte nr_month, char *buf, byte lenght); // a ta zwraca CHAR * bez kopiowania //
- //
- void ShowMsgRandomSprite(char *buf);
- //
- void toON(); // włącz MATRIX - przestawia tylko flagi ........ //
- void toOFF(); // wyłącz MATRIX - przestawia tylko flagi ....... //
- inline bool isBUSY(); // czy matryca zajęta - dodatkowa flaga ......... //
- inline bool isFREE(); // czy matryca wolna - dodatkowa flaga .......... //
- inline bool isON(); // czy matryca włączona - główna flaga .......... //
- inline bool isOFF(); // czy matryca wyłączona - główna flaga ......... //
- //
- // częci publiczne klasy --- public parts of the class ---------------------------------------------------------------- //
- public: //
- TMatrix(MD_Parola & _P) : P ( _P ) { } // konstukor automatyczyny - auto. constructor .. //
- // ------------------------------------------------------------------------------------------------------------------ //
- void Init() //
- { //
- F_Matrix_Busy = false; // ustaw flagę na false - matryca wolna ......... //
- // flaga pomocnicza - additional flag ........... //
- F_Matrix_Free = true; // ustaw flagę na true - matryca wolna .......... //
- // flaga pomocnicza - additional flag ........... //
- F_Matrix_Off = true; // ustaw flagę na true - matryca wyłączona ...... //
- // matrix is OFF - value is TRUE ................ //
- F_Matrix_On = false; // ustaw flagę na false - matryca wyłączona ..... //
- // matrix is ON - value is TRUE ................. //
- P_MSG_SIZE = sizeof ( P_MSG ) / 2 ; // ustal ilość wiadomości do wyświetlenia ....... //
- Day_Tab_Size = sizeof ( DAY_MSG ) / 2 ; // przechowuje rozmiar tablicy DAY_MSG[] ........ //
- Month_Tab_Size = sizeof ( MONTH_MSG ) / 2 ; // przechowuje rozmiar tablicy MONTH_MSG[] ...... //
- // -------------------------------------------------------------------------------------------------------------- //
- //
- #if TERMINAL
- Serial.begin(TERMINAL_PC_SPEED);
- #endif
- //
- // jeśli DEBUG ma true wyświetl komunikat na monitorze USB ------------------------------------------------------ //
- #if M_DEBUG
- SerialMSG(1);
- Serial.print(F(" ROZMIAR Day_Tab_Size : "));
- Serial.println(Day_Tab_Size);
- Serial.print(F(" Rozmiar Month_Tab_Size : "));
- Serial.println(Month_Tab_Size);
- #endif
- // tworzy SPRITE Pacman & Ghost --------------------------------------------------------------------------------- //
- #if ENA_SPRITE
- P.setSpriteData(pacman1, W_PMAN1, F_PMAN1, pacman2, W_PMAN2, F_PMAN2);
- #endif
- // --- ustaw prędkości efektów ---------------------------------------------------------------------------------- //
- for (uint8_t i=0; i<EFECT_SIZE; i++)
- {
- Efect[i].speed *= P.getSpeed();
- Efect[i].pause *= 500;
- }
- // koniec obsługi DEBUG ----------------------------------------------------------------------------------------- //
- } //
- // koniec konstruktora .............................................................................................. //
- //
- #if TERMINAL
- // albo jest albo nie ma :-) jeśli TERMINAL true //
- void ShowAllValue(); // pokaz ustawienie wszystkich flag ............. //
- // jeśli TERMINAL false funkcja nie istnieje .... //
- #endif
- void ShowEffectDemo(); // demo efektów PAROLA .......................... //
- void ShowSpriteDemo(); // demo duszków PAROLA .......................... //
- void ShowRandomDemo(); // mikser DEMO -> efekty / duszki ............... //
- void ShowDayName(uint8_t nr_day); // pokaż nazwę dnia - random sprite animation //
- void ShowMonthName(uint8_t nr_month); // pokaż nazwę miesiąca - random effect animation //
- //
- }; //
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // --- end of class declaracion --- koniec deklaracji klasy --------------------------------------------------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // --- start private class definition function --- początek definicji funkcji prywatnych klasy TMatrix -------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // --- SHOW Messege with Random Sprite Effect --- POKAZ napis z losową animację duszka ------------------------------------ //
- // ------------------------------------------------------------------------------------------------------------------------ //
- void TMatrix::ShowMsgRandomSprite(char *buf) //
- { //
- if(P.displayAnimate()) //
- { //
- int curEFX = random ( ARRAY_SIZE ( sprite ) ); //
- P.setSpriteData(sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames, // wejście SPRITE ----------- //
- sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames); // wyjśćie SPRITE ----------- //
- P.displayText(buf, PA_CENTER, 10, 1000, PA_SPRITE, PA_SPRITE); // wyświetl napis z bufora -- //
- } //
- } //
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N - D E B U G E R M S G S E R I A L I N F O //
- // ------------------------------------------------------------------------------------------------------------------------ //
- //
- void TMatrix::SerialMSG(byte nr_msg) //
- { //
- #if M_DEBUG
- if( nr_msg >= sizeof (SERIAL_MSG) / 2 ) // sprawdź czy istnieje ! ............... //
- { //
- char *bufor = new char [ strlen_P( pgm_read_word (& SERIAL_MSG[0] ) ) ]; // dynamiczny przydział pamięci bufora .. //
- strcpy_P ( bufor, (char*) pgm_read_word (& SERIAL_MSG[0] )); // kopiujemy z pamięci msg: error do bufor//
- Serial.println(bufor); //
- delete bufor; // kasujemy bufor z pam.ięci ............ //
- } //
- else //
- { //
- char *bufor = new char [ strlen_P( pgm_read_word (& SERIAL_MSG[nr_msg] ) ) ]; //
- strcpy_P ( bufor, (char*) pgm_read_word (& SERIAL_MSG[nr_msg] )); //
- Serial.println(bufor); //
- delete bufor; // kasujemy bufor z pamięci ............ //
- } //
- #endif
- } //
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N - D E B U G E R V A L U E O N L Y S E R I A L I N F O //
- // ------------------------------------------------------------------------------------------------------------------------ //
- void TMatrix::ValueMSG(byte nr_msg) //
- {
- #if V_DEBUG
- if( nr_msg >= sizeof (VALUE_MSG) / 2 ) // sprawdź czy istnieje ! ............... //
- { //
- char *bufor = new char [ strlen_P( pgm_read_word (& VALUE_MSG[0] ) ) ]; // dynamiczny przydział pamięci bufora .. //
- strcpy_P ( bufor, (char*) pgm_read_word (& VALUE_MSG[0] )); // kopiujemy z pamięci msg: error do bufor//
- Serial.println(bufor);
- delete bufor; // kasujemy bufor z pamięci ............ //
- } //
- else //
- { //
- char *bufor = new char [ strlen_P( pgm_read_word (& VALUE_MSG[nr_msg] ) ) ]; //
- strcpy_P ( bufor, (char*) pgm_read_word (& VALUE_MSG[nr_msg] )); //
- Serial.println(bufor);
- switch( nr_msg )
- {
- case 0 : break;
- case 1 : Serial.println ( F_Matrix_Busy ); break;
- case 2 : Serial.println ( F_Matrix_Free ); break;
- case 3 : Serial.println ( F_Matrix_Off ); break;
- case 4 : Serial.println ( F_Matrix_On ); break;
- default: break;
- }
- delete bufor; // kasujemy bufor z pamięci ............ //
- } //
- #endif
- }
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N - D E B U G E R V A L U E O N L Y S E R I A L I N F O //
- // ------------------------------------------------------------------------------------------------------------------------ //
- #if oldMethod
- void TMatrix::MSG2Bufor(byte nr_msg) //
- { //
- if( nr_msg > P_MSG_SIZE - 1) // sprawdź czy istnieje ! ............... //
- { //
- strcpy_P ( P_Bufor, (char*) pgm_read_word (& P_MSG[0] )); //
- } //
- else //
- { //
- strcpy_P ( P_Bufor, (char*) pgm_read_word (& P_MSG[nr_msg] )); //
- } //
- } //
- #endif
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- char * TMatrix::MSG2Bufor(byte nr_msg, char *buf, byte lenght) // metoda nie kopiuje do bufora, zwraca sklejony //
- { // napis jako char * ........................... //
- if( nr_msg > P_MSG_SIZE - 1) // wyłap błąd ---------------------------------- //
- { //
- #if M_DEBUG
- SerialMSG(8);
- buf = "MARCINEK";
- #endif
- } //
- else //
- { // brak błędu ---------------------------------- //
- strcpy_P (buf, (char*) pgm_read_word (& P_MSG[nr_msg])); // do wskaznika z PROGMEM ---------------------- //
- buf[lenght] = '\0'; // znak kónca do wskaźnika --------------------- //
- } //
- return buf; // zwzróć buf .................................. //
- // używać tak : MSG2Bufor(numer_msg, charBuf, sizeof(charBuf)-1) ................................................... //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // TMatrix_ON() - przełącz flagi --- wyświetlacz włączony ----------------------------------------------------------------- //
- void TMatrix::toON() //
- { //
- F_Matrix_On = true; // flaga T_Matrix_On = true - MATRIX jest ON ...... //
- F_Matrix_Off = false; // flaga T_Matrix_Off = false - MATRIX jest ON .... //
- F_Matrix_Busy = false; // flaga T_Matrix_Busy = false - MATRIX jest FREE . //
- F_Matrix_Free = true; // flaga T_Matrix_Free = true - MATRIX jest FREE .. //
- //
- // jeśli DEBUG ma true wyświetl komunikat na monitorze USB -------------------------------------------------------- //
- #if M_DEBUG
- SerialMSG(2);
- #endif
- // koniec obsługi DEBUG ------------------------------------------------------------------------------------------- //
- } //
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- // TMatrix_OFF() - przełącz flagi --- wyświetlacz wyłączony --------------------------------------------------------------- //
- void TMatrix::toOFF() //
- { //
- F_Matrix_On = false; // flaga T_Matrix_On = false - MATRIX jest OFF .... //
- F_Matrix_Off = true; // flaga T_Matrix_Off = true - MATRIX jest OFF .... //
- //
- // jeśli DEBUG ma true wyświetl komunikat na monitorze USB -------------------------------------------------------- //
- #if M_DEBUG
- SerialMSG(3);
- #endif
- // koniec obsługi DEBUG ------------------------------------------------------------------------------------------- //
- } //
- // //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- inline bool TMatrix:: isON() //
- { //
- //
- // jeśli DEBUG ma true wyświetl komunikat na monitorze USB -------------------------------------------------------- //
- #if M_DEBUG
- SerialMSG(6);
- #endif
- // koniec obsługi DEBUG ------------------------------------------------------------------------------------------- //
- return F_Matrix_On; // return matrix status - direct flag ............. //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- inline bool TMatrix::isOFF() //
- { //
- //
- // jeśli DEBUG ma true wyświetl komunikat na monitorze USB -------------------------------------------------------- //
- #if M_DEBUG
- SerialMSG(7);
- #endif
- // koniec obsługi DEBUG ------------------------------------------------------------------------------------------- //
- return F_Matrix_Off; // return matrix status - direct flag ............. //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N - A D D B U S Y F L A G //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // Czy matryca jest zajęta ? zwróć false lub true --- matrix is busy ? rerurn false or true ------------------------------- //
- inline bool TMatrix::isBUSY() //
- { //
- //
- // jeśli DEBUG ma true wyświetl komunikat na monitorze USB -------------------------------------------------------- //
- #if M_DEBUG
- SerialMSG(4);
- Serial.println(F_Matrix_Busy);
- #endif
- // koniec obsługi DEBUG ------------------------------------------------------------------------------------------- //
- return F_Matrix_Busy; // return matrix status - 3 auxiliary flag ........ //
- } //
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P R I V A T E F U N C T I O N - A D D F R E E F L A G //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // Czy matryca jest wolna ? zwróć false lub true --- matrix is free ? rerurn false or true -------------------------------- //
- inline bool TMatrix::isFREE() //
- { //
- // jeśli DEBUG ma true wyświetl komunikat na monitorze USB -------------------------------------------------------- //
- #if M_DEBUG
- SerialMSG(5);
- Serial.println(F_Matrix_Free);
- #endif
- // koniec obsługi DEBUG ------------------------------------------------------------------------------------------- //
- //
- return F_Matrix_Free; // return matrix status - 4 auxiliary flag ........ //
- } //
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // D A Y E X T R A C T O R F R O M P R O G M E M T O B U F O R //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // funkcja wyciąga z pamięci PROGMEM dzień tygodnia i kopiuje do bufora D_Bufor[] ---------------------------------------- //
- // wyłączona makrem oldMethod -> korzystać ze zwracającej bufor char * //
- // //
- #if oldMethod
- void TMatrix::DayExtract(byte nr_day) //
- { //
- if( nr_day > Day_Tab_Size - 1 ) // OBSŁUGA BŁĘDU - WYŁAP !!! Catch ERROR !!! ... //
- { // jeżeli dzien tygodnia > 7 skopiuj ERROR //
- strcpy_P ( D_Bufor, (char*) pgm_read_word (& DAY_MSG[0] )); // do bufora i jeśli DEBUGER wyślij na Serial .. //
- #if M_DEBUG
- SerialMSG(8);
- #endif
- } //
- else // BRAK BŁĘDU !!! NO ERROR !!! skopiuj do Bufora //
- { //
- strcpy_P ( D_Bufor, (char*) pgm_read_word (& DAY_MSG[nr_day] )); //
- } //
- }
- #endif //
- // ------------------------------------------------------------------------------------------------------------------------ //
- char * TMatrix::DayExtract(byte nr_day, char *buf, byte lenght) // zwraca dzień tygodnia jako char * //
- { //
- * buf = '\0'; // do wskaźnika dołącz '\0' .................... //
- if( nr_day > Day_Tab_Size - 1) // wyłap błąd ---------------------------------- //
- { //
- #if M_DEBUG
- SerialMSG(8);
- #endif
- } //
- else //
- { // brak błędu ---------------------------------- //
- strcpy_P (buf, (char*) pgm_read_word (& DAY_MSG[nr_day])); // do wskaznika z PROGMEM ---------------------- //
- buf[lenght] = '\0'; // znak kónca do wskaźnika --------------------- //
- } //
- return buf; // zwzróć buf .................................. //
- // używać tak : DayExtract(RTC.day_of_month, dayBuf, sizeof(dayBuf)-1) gdzie dayBuf to tablica typu char[15] //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // M O N T H E X T R A C T O R F R O M P R O G M E M T O B U F O R //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // funkcja wyciąga z pamięci PROGMEM nazwe miesiąca i kopiuje do bufora M_Bufor[] --------------------------------------- //
- // wyłączona makrem oldMethod -> korzystać ze zwracającej bufor char * //
- // //
- #if oldMethod
- void TMatrix::MonthExtract(byte nr_month) //
- { //
- if( nr_month > Month_Tab_Size - 1 ) // OBSŁUGA BŁĘDU - WYŁAP !!! Catch ERROR !!! ... //
- { // jeżeli miesiac > 12 skopiuj ERROR //
- strcpy_P ( M_Bufor, (char*) pgm_read_word (& MONTH_MSG[0] )); // do bufora i jeśli DEBUGER wyślij na Serial .. //
- #if M_DEBUG
- SerialMSG(9);
- #endif
- } //
- else // BRAK BŁĘDU !!! NO ERROR !!! skopiuj do Bufora //
- { //
- strcpy_P ( M_Bufor, (char*) pgm_read_word (& MONTH_MSG[nr_month] )); //
- } //
- }
- #endif
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- char * TMatrix::MonthExtract(byte nr_month, char *buf, byte lenght) // zwraca miesiac jako char * //
- { //
- * buf = '\0'; // do wskaźnika dołącz '\0' .................... //
- if( nr_month > Month_Tab_Size - 1) // wyłap błąd ---------------------------------- //
- { //
- #if M_DEBUG
- SerialMSG(9);
- #endif
- } //
- else //
- { // brak błędu ---------------------------------- //
- strcpy_P (buf, (char*) pgm_read_word (& MONTH_MSG[nr_month])); // do wskaznika z PROGMEM ---------------------- //
- buf[lenght] = '\0'; // znak kónca do wskaźnika --------------------- //
- } //
- return buf; // zwzróć buf .................................. //
- // używać tak : MonthExtract(RTC.month, monthBuf, sizeof(monthBuf)-1) gdzie monthBuf to tablica typu char[15] //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // --- end private class definition function --- koniec definicji prywatnych funkcji klasy TMatrix ------------------------ //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // --- start public class definition function --- początek definicji funkcji publicznych klasy TMatrix -------------------- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // //
- // M A G I C D E B U G E R F O R P R I V A T E A L L V A R I A B L E I N C L A S S ------------------------ //
- // funkcja istnieje jeśli TERMINAL jest true, jeżeli false nie można jej wywołać - błąd kompilatora, przestaw na true ----- //
- #if TERMINAL
- void TMatrix::ShowAllValue() //
- { //
- ValueMSG(1); // pokaż wartość TRUE/FALSE na fladze : T_Matrix_Busy --------- //
- ValueMSG(2); // pokaż wartość TRUE/FALSE na fladze : T_Matrix_Free --------- //
- ValueMSG(3); // pokaż wartość TRUE/FALSE na fladze : T_Matrix_Off ---------- //
- ValueMSG(4); // pokaż wartosć TRUE/FALSE na fladze : T_Matrix_On ----------- //
- } //
- #endif
- // ------------------------------------------------------------------------------------------------------------------------ //
- // D E M O A L L E F E C T //
- // ------------------------------------------------------------------------------------------------------------------------ //
- //
- void TMatrix::ShowEffectDemo() //
- { //
- static uint8_t curEFX = 0; // statyczny licznik efektów ------------------- //
- static uint8_t curMSG = 0; // statyczny licznik napisów ------------------- //
- // --- GO GO GO ------------------------------------------------------------------------------------------------------- //
- if(P.displayAnimate()) // jeśli animacja trwa ------------------------- //
- { //
- //MSG2Bufor(curMSG); // przygotuj bufor napisu dla m ---------------- //
- char napis[15]; // bufor pomocniczy ---------------------------- //
- MSG2Bufor(curMSG, napis, sizeof(napis)-1); // przygotuj bufor - nowa wersja .............. //
- //strcpy(napis,P_Bufor); // kopiuj z bufora głównego do bufora pomocnicz. //
- //
- // M A T E M A T Y K A J E S T S P O K O - oszczędzamy pamięć i przyśpieszamy ------------------------- //
- //
- curEFX = ( curEFX + 1) % ARRAY_SIZE ( Efect ); // ustaw następnego duszka do kolejki ......... //
- curMSG = ( curMSG + 1) % ARRAY_SIZE ( P_MSG ); // ustaw następną wiadomość do kolejki ........ //
- //
- P.displayText(napis, PA_CENTER, Efect[curEFX].speed, Efect[curEFX].pause,Efect[curEFX].effect, Efect[curEFX].effect);
- //
- // --- jesli M_DEBUG jest true --- pokaż informację o zawartości bufora ------------------------------------------- //
- #if M_DEBUG
- Serial.print(F("ShowEffectDemo -> Utworzono napis w buforze : "));
- Serial.println(napis);
- #endif
- //F_Effect_Demo = true; // przestaw flagę - animacja trwa -------------- //
- } // jeśli animacja się skończyła wypadamy z IF -- //
- //else F_Effect_Demo = false; // przestaw flagę - demo się skończyło --------- //
- // --- END END END ---------------------------------------------------------------------------------------------------- //
- } //
- //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // D E M O S P R I T E A L L E F E C T //
- // ------------------------------------------------------------------------------------------------------------------------ //
- //
- void TMatrix::ShowSpriteDemo() //
- { //
- static uint8_t curEFX = 0; // numer SPRITE -> aktualny duszek ........... //
- static uint8_t curMSG = 0; // numer P_MSG -> aktualny napis ............. //
- // --- jeśli trwa animacja nie wchodź ................................................................................... //
- if (P.displayAnimate()) //
- { //
- //MSG2Bufor(curMSG); // przygotuj bufor - stara wersja jeszcze ..... //
- char napis[15]; // bufor pomocniczy - działa, zostawiamy ...... //
- MSG2Bufor(curMSG, napis, sizeof(napis)-1); // przygotuj bufor - nowa wersja .............. //
- //strcpy(napis,P_Bufor); // kopiuj z bufora P_Bufor do bufora napis .... //
- //
- P.setSpriteData(sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames, // USTAW -> 1 przejście duszka .. //
- sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames); // USTAW -> 2 przejście duszka .. //
- //
- // --- T R O C H Ę Z A A W A N S O W A N E J M A T E M A T Y K I ------------------------------------------------ //
- //
- curEFX = ( curEFX + 1) % ARRAY_SIZE ( sprite ); // ustaw następnego duszka do kolejki ......... //
- curMSG = ( curMSG + 1) % ARRAY_SIZE ( P_MSG ); // ustaw następną wiadomość do kolejki ........ //
- //
- P.displayText(napis, PA_CENTER, 10, 1000, PA_SPRITE, PA_SPRITE); // wyświetl animację .......................... //
- #if M_DEBUG
- Serial.print(F("ShowSpriteDemo -> Utworzono napis w buforze : "));
- Serial.println(napis);
- #endif
- //F_Sprite_Demo = true; // przestaw flagę - demo trwa ................. //
- } //
- //else F_Sprite_Demo = false; // przestaw flagę - demo się skończyło ........ //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // D E M O R A N D O M - S P R I T E O R E F F E C T //
- // ------------------------------------------------------------------------------------------------------------------------ //
- //
- void TMatrix::ShowRandomDemo() //
- { //
- switch ( rand() % 2 ) // wylosuj liczbę i sprawdź resztę z dzielenia ....... //
- { //
- case 0 : ShowSpriteDemo(); break; // jeśli reszta z dzielenia to : 0 uruchom SPRITE ... //
- case 1 : ShowEffectDemo(); break; // jeśli reszta z dzielenia to : 1 uruchom EFFECT ... //
- } //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P O K A Z N A Z W Ę D N I A - E F E K T S P R I T E //
- // ------------------------------------------------------------------------------------------------------------------------ //
- void TMatrix::ShowDayName(uint8_t nr_day) //
- { //
- if( nr_day > 0 && nr_day < 8) // sprawdź czy dzień tygodnia 0 > nr_day < 8 --------- //
- { //
- if(P.displayAnimate()) //
- { //
- char bufor[15]; // bufor do pobrania nazwy dnia ------------------ //
- DayExtract(nr_day, bufor, sizeof(bufor)-1); // pobierz nazwę dnia tygodnia PL lub ENG -------- //
- int curEFX = random ( ARRAY_SIZE ( sprite ) ); //
- P.setSpriteData(sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames, // wejście SPRITE --------- //
- sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames); // wyjśćie SPRITE --------- //
- P.displayText(bufor, PA_CENTER, 10, 1000, PA_SPRITE, PA_SPRITE); // wyświetl napis z bufora //
- } //
- } //
- else // jeśli dzień poza zakresem (możliwe wartości 1-7) ! //
- { //
- #if M_DEBUG
- SerialMSG(8); // wyświetl BŁĄD - dzień tygodnia poza zakresem ------ //
- #endif
- } //
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
- // P O K A Z N A Z W Ę M I E S I Ą C A - E F E K T S P R I T E //
- // ------------------------------------------------------------------------------------------------------------------------ //
- void TMatrix::ShowMonthName(uint8_t nr_month) //
- { //
- if( nr_month > 0 && nr_month < 13) // sprawdź czy miesiąc > 0 i miesiąc < 13 ------------ //
- { //
- if(P.displayAnimate()) //
- { //
- char bufor[15]; // bufor do pobrania nazwy miesiąć --------------- //
- MonthExtract(nr_month, bufor, sizeof(bufor)-1); // pobierz nazwę dnia tygodnia PL lub ENG -------- //
- int curEFX = random ( ARRAY_SIZE ( sprite ) ); //
- P.setSpriteData(sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames, // wejście SPRITE --------- //
- sprite[curEFX].data,sprite[curEFX].width,sprite[curEFX].frames); // wyjśćie SPRITE --------- //
- P.displayText(bufor, PA_CENTER, 10, 1000, PA_SPRITE, PA_SPRITE); // wyświetl napis z bufora // //
- } //
- } //
- else // jeśli miesiąc poza zakresem (możliwe wartości 1-12) //
- { //
- #if M_DEBUG
- SerialMSG(9); // wyświetl BŁĄD - dzień tygodnia poza zakresem ------ //
- #endif
- }
- } //
- // ------------------------------------------------------------------------------------------------------------------------ //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement