extern ESP32Time rtc; // ------------------------------------------------------------------------------------------------------------- // // 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; const uint8_t W_PMAN1 = 8; static const uint8_t pacman1[F_PMAN1 * W_PMAN1] PROGMEM = { 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, }; // 293756 / 28612 // ------------------------------------------------------------------------------------------------------------- // // 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; const uint8_t W_PMAN2 = 18; static const uint8_t pacman2[F_PMAN2 * W_PMAN2] PROGMEM = { 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 Sprite { const uint8_t *data; uint8_t width; uint8_t frames; }; Sprite 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 } }; // ------------------------------------------------------------------------------------------------------------- // // --- K A T A L O G E F E K T Ó W --- // // ------------------------------------------------------------------------------------------------------------- // struct Effect { textEffect_t effect; uint16_t speed; uint16_t pause; } efekt [] = { { 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 } }; // ------------------------------------------------------------------------------------------------------------- // // --- K A T A L O G C Y F R --- // // ------------------------------------------------------------------------------------------------------------- // // DUŻE CYFRY 0 1 2 3 4 5 6 7 8 9 const char * DuzeCyfry[10] = { "\27", "\1", "\2", "\3", "\4", "\5", "\6", "\7", "\10", "\11" }; // NORMALNE CYFRY 0 1 2 3 4 5 6 7 8 9 const char * NormalneCyfry[10] = { "\60", "\61", "\62", "\63", "\64", "\65", "\66", "\67", "\70", "\71" }; // MAŁE CYFRY 0 1 2 3 4 5 6 7 8 9 const char * MaleCyfry[10] = { "\12", "\13", "\14", "\15", "\16", "\17", "\20", "\21", "\22", "\23" }; // ------------------------------------------------------------------------------------------------------------- // // --- K L A S A M A X --- // // ------------------------------------------------------------------------------------------------------------- // class MAX { private: // metody i zmienne prywatne // -------------------------------------------------------------------------------------------- // MD_Parola &P; // pseudo obiekt uint8_t SpriteSize = 0; // rozmiar tablicy z duszkami uint8_t EffectSize = 0; // rozmiar tablicy z efektami public: // metody i zmienne publiczne // -------------------------------------------------------------------------------------------- // MAX(MD_Parola & adrP) : P ( adrP ) { } // konstruktor domyślny void Setup(); // Setup klasy MAX void ShowBigClock(); // pokaz zegar }; // ------------------------------------------------------------------------------------------------------------- // // --- M E T O D Y P U B L I C Z N E --- // // ------------------------------------------------------------------------------------------------------------- // // --- S E T U P --- // // ------------------------------------------------------------------------------------------------------------- // void MAX::Setup() { SpriteSize = ARRAY_SIZE ( sprite ); EffectSize = ARRAY_SIZE ( efekt ); } // ------------------------------------------------------------------------------------------------------------- // // --- M E T O D Y P U B L I C Z N E --- // // ------------------------------------------------------------------------------------------------------------- // // --- P O K A Z D U Ż Y Z E G A R --- // // ------------------------------------------------------------------------------------------------------------- // void MAX::ShowBigClock() { char TimeBufor[20] = " TOMEK "; // bufor do przechowywania czasu strcpy(TimeBufor, DuzeCyfry[rtc.getHour(true) / 10]); strcat(TimeBufor, DuzeCyfry[rtc.getHour(true) % 10]); if(rtc.getSecond() % 2) strcat(TimeBufor, "\24"); else strcat(TimeBufor, "\26"); strcat(TimeBufor, DuzeCyfry[rtc.getMinute() / 10]); strcat(TimeBufor, DuzeCyfry[rtc.getMinute() % 10]); strcat(TimeBufor, "\25"); strcat(TimeBufor, DuzeCyfry[rtc.getSecond() / 10]); strcat(TimeBufor, DuzeCyfry[rtc.getSecond() % 10]); P.displayText(TimeBufor, PA_LEFT, 50, 1000, PA_PRINT, PA_SCROLL_UP); P.displayAnimate(); }