PowerTGS440

max.h dla ESP32

Apr 23rd, 2021 (edited)
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 39.14 KB | None | 0 0
  1. // ------------------------------------------------------------------------------------------------------------ //
  2. // ---          M A X L E D   L I B R A R Y    B Y   T O M A S Z   M A J C H E R                            --- //
  3. // ------------------------------------------------------------------------------------------------------------ //
  4. //
  5. //  by Tomasz Majcher (TLG) Trans Line Group, Lubin POLSKA
  6. //  NIP:    692-201-09-78
  7. //  TEL:    667-08-21-21
  8. //  mail:   [email protected]
  9. //
  10. //  Trans Line Group Tomasz Majcher
  11. //  * usługi transportowe (wywrotki, silosy) -
  12. //  * sprzedaw kruszyw (piasek, żwir, pospółka, grysy, tłuczeń, mieszanki, żużel, kryszywa)
  13. //  * automatyka przemysłowa i domowa
  14. //
  15. // ------------------------------------------------------------------------------------------------------------ //
  16. // --- HISTORIA WERSJI ---------------------------------------------------------------------------------------- //
  17. // ------------------------------------------------------------------------------------------------------------ //
  18. //
  19. //  MAX v0.07 BETA    -   budowa polskich ogonków (NOT FREE !!!)
  20. //  MAX v0.06 BETA    -   budowa metody wyświetlającej demo
  21. //  MAX v0.05 BETA    -   budowa metody tworzącej bufory
  22. //  MAX v0.04 BETA    -   import effect
  23. //  MAX v0.03 BETA    -   import sprite
  24. //  MAX v0.02 BETA    -   budowa klasy
  25. //  MAX v0.01 BETA    -   pomysł :-)
  26. //
  27. // ------------------------------------------------------------------------------------------------------------ //
  28. // --- DOŁĄCZONE NAGŁÓWKI BIBLIOTEK --------------------------------------------------------------------------- //
  29. // ------------------------------------------------------------------------------------------------------------ //
  30.  
  31. extern ESP32Time rtc
  32.  
  33. typedef byte BAJT;
  34.  
  35. // ------------------------------------------------------------------------------------------------------------- //
  36. // S P R I T E   D E F I N I T I O N --------------------------------------------------------------------------- //
  37. // ------------------------------------------------------------------------------------------------------------- //
  38. // P A C M A N   D E F I N I T I O N --------------------------------------------------------------------------- //
  39. // ------------------------------------------------------------------------------------------------------------- //
  40.  
  41. const uint8_t F_PMAN1 = 6;                                                      
  42. const uint8_t W_PMAN1 = 8;                                                      
  43. static const uint8_t pacman1[F_PMAN1 * W_PMAN1] PROGMEM =                        
  44. {
  45.   0x00, 0x81, 0xc3, 0xe7, 0xff, 0x7e, 0x7e, 0x3c,
  46.   0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c,
  47.   0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c,
  48.   0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c,
  49.   0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c,
  50.   0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c,
  51. };
  52. // 293756 / 28612
  53. // ------------------------------------------------------------------------------------------------------------- //
  54. // S P R I T E   :   W A V E   /   W O R M   D E F I N I T I O N ----------------------------------------------- //
  55. // ------------------------------------------------------------------------------------------------------------- //
  56.  
  57. const uint8_t F_WAVE = 14;
  58. const uint8_t W_WAVE = 14;
  59. static const uint8_t wave [F_WAVE * W_WAVE] PROGMEM =  
  60. {
  61.   0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10,
  62.   0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20,
  63.   0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40,
  64.   0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
  65.   0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
  66.   0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20,
  67.   0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10,
  68.   0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08,
  69.   0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04,
  70.   0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02,
  71.   0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
  72.   0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02,
  73.   0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04,
  74.   0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08,
  75. };
  76.  
  77. // ------------------------------------------------------------------------------------------------------------- //
  78. // S P R I T E   :   G H O S T   D E F I N I T I O N ----------------------------------------------------------- //
  79. // ------------------------------------------------------------------------------------------------------------- //
  80.  
  81. const uint8_t F_PMAN2 = 6;                                                        
  82. const uint8_t W_PMAN2 = 18;                                                      
  83. static const uint8_t pacman2[F_PMAN2 * W_PMAN2] PROGMEM =                        
  84. {
  85.   0x00, 0x81, 0xc3, 0xe7, 0xff, 0x7e, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
  86.   0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
  87.   0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
  88.   0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
  89.   0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
  90.   0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
  91. };                                                                                                                  
  92.  
  93. // ------------------------------------------------------------------------------------------------------------- //
  94. // 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 --------------------------------- //
  95. // ------------------------------------------------------------------------------------------------------------- //
  96.  
  97. const uint8_t F_ROLL1 = 4;
  98. const uint8_t W_ROLL1 = 8;
  99. static const uint8_t roll1[F_ROLL1 * W_ROLL1] PROGMEM =  
  100. {
  101.   0xff, 0x8f, 0x8f, 0x8f, 0x81, 0x81, 0x81, 0xff,
  102.   0xff, 0xf1, 0xf1, 0xf1, 0x81, 0x81, 0x81, 0xff,
  103.   0xff, 0x81, 0x81, 0x81, 0xf1, 0xf1, 0xf1, 0xff,
  104.   0xff, 0x81, 0x81, 0x81, 0x8f, 0x8f, 0x8f, 0xff,
  105. };
  106.  
  107. // ------------------------------------------------------------------------------------------------------------- //
  108. // 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 --------------------------------- //
  109. // ------------------------------------------------------------------------------------------------------------- //
  110.  
  111. const uint8_t F_ROLL2 = 4;
  112. const uint8_t W_ROLL2 = 8;
  113. static const uint8_t roll2 [F_ROLL2 * W_ROLL2] PROGMEM =  
  114. {
  115.   0x3c, 0x4e, 0x8f, 0x8f, 0x81, 0x81, 0x42, 0x3c,
  116.   0x3c, 0x72, 0xf1, 0xf1, 0x81, 0x81, 0x42, 0x3c,
  117.   0x3c, 0x42, 0x81, 0x81, 0xf1, 0xf1, 0x72, 0x3c,
  118.   0x3c, 0x42, 0x81, 0x81, 0x8f, 0x8f, 0x4e, 0x3c,
  119. };
  120.  
  121. // ------------------------------------------------------------------------------------------------------------- //
  122. // 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 ----------------------------------------- //
  123. // ------------------------------------------------------------------------------------------------------------- //
  124.  
  125. const uint8_t F_LINES = 3;
  126. const uint8_t W_LINES = 8;
  127. static const uint8_t lines [F_LINES * W_LINES] PROGMEM =
  128. {
  129.   0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00,
  130.   0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00,
  131.   0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
  132. };
  133.  
  134. // ------------------------------------------------------------------------------------------------------------- //
  135. // 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 ---------------------------------------- //
  136. // ------------------------------------------------------------------------------------------------------------- //
  137.  
  138. const uint8_t F_ARROW1 = 3;
  139. const uint8_t W_ARROW1 = 10;
  140. static const uint8_t arrow1 [F_ARROW1 * W_ARROW1] PROGMEM =  
  141. {
  142.   0x18, 0x3c, 0x7e, 0xff, 0x7e, 0x00, 0x00, 0x3c, 0x00, 0x00,
  143.   0x18, 0x3c, 0x7e, 0xff, 0x00, 0x7e, 0x00, 0x00, 0x18, 0x00,
  144.   0x18, 0x3c, 0x7e, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x18,
  145. };
  146.  
  147. // ------------------------------------------------------------------------------------------------------------- //
  148. // 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 ----------------------- //
  149. // ------------------------------------------------------------------------------------------------------------- //
  150.  
  151. const uint8_t F_ARROW2 = 3;
  152. const uint8_t W_ARROW2 = 9;
  153. static const uint8_t arrow2 [F_ARROW2 * W_ARROW2] PROGMEM =  
  154. {
  155.   0x18, 0x3c, 0x7e, 0xe7, 0x00, 0x00, 0xc3, 0x00, 0x00,
  156.   0x18, 0x3c, 0x7e, 0xe7, 0xe7, 0x00, 0x00, 0x81, 0x00,
  157.   0x18, 0x3c, 0x7e, 0xe7, 0x00, 0xc3, 0x00, 0x00, 0x81,
  158. };
  159.  
  160. // ------------------------------------------------------------------------------------------------------------- //
  161. // 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 -------------------------------------- //
  162. // ------------------------------------------------------------------------------------------------------------- //
  163.  
  164. const uint8_t F_SAILBOAT = 1;
  165. const uint8_t W_SAILBOAT = 11;
  166. static const uint8_t sailboat[F_SAILBOAT * W_SAILBOAT]  PROGMEM =  
  167. {
  168.   0x10, 0x30, 0x58, 0x94, 0x92, 0x9f, 0x92, 0x94, 0x98, 0x50, 0x30,
  169. };
  170.  
  171. // ------------------------------------------------------------------------------------------------------------- //
  172. // 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 -------------------------------------- //
  173. // ------------------------------------------------------------------------------------------------------------- //
  174.  
  175. const uint8_t F_STEAMBOAT = 2;
  176. const uint8_t W_STEAMBOAT = 11;
  177. const uint8_t steamboat[F_STEAMBOAT * W_STEAMBOAT]  PROGMEM =
  178. {
  179.   0x10, 0x30, 0x50, 0x9c, 0x9e, 0x90, 0x91, 0x9c, 0x9d, 0x90, 0x71,
  180.   0x10, 0x30, 0x50, 0x9c, 0x9c, 0x91, 0x90, 0x9d, 0x9e, 0x91, 0x70,
  181. };
  182.  
  183. // ------------------------------------------------------------------------------------------------------------- //
  184. // S P R I T E   :   H E A R T       D E F I N I T I O N ------------------------------------------------------- //
  185. // ------------------------------------------------------------------------------------------------------------- //
  186.  
  187. const uint8_t F_HEART = 5;
  188. const uint8_t W_HEART = 9;
  189. static const uint8_t heart[F_HEART * W_HEART]  PROGMEM =  
  190. {
  191.   0x0e, 0x11, 0x21, 0x42, 0x84, 0x42, 0x21, 0x11, 0x0e,
  192.   0x0e, 0x1f, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x1f, 0x0e,
  193.   0x0e, 0x1f, 0x3f, 0x7e, 0xfc, 0x7e, 0x3f, 0x1f, 0x0e,
  194.   0x0e, 0x1f, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x1f, 0x0e,
  195.   0x0e, 0x11, 0x21, 0x42, 0x84, 0x42, 0x21, 0x11, 0x0e,
  196. };
  197.  
  198. // ------------------------------------------------------------------------------------------------------------- //
  199. // 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 --------------------------- //
  200. // ------------------------------------------------------------------------------------------------------------- //
  201.  
  202. const uint8_t F_INVADER = 2;
  203. const uint8_t W_INVADER = 10;
  204. static const uint8_t invader[F_INVADER * W_INVADER]  PROGMEM =  
  205. {
  206.   0x0e, 0x98, 0x7d, 0x36, 0x3c, 0x3c, 0x36, 0x7d, 0x98, 0x0e,
  207.   0x70, 0x18, 0x7d, 0xb6, 0x3c, 0x3c, 0xb6, 0x7d, 0x18, 0x70,
  208. };
  209.  
  210. // ------------------------------------------------------------------------------------------------------------- //
  211. // 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 ------------------------------- //
  212. // ------------------------------------------------------------------------------------------------------------- //
  213.  
  214. const uint8_t F_ROCKET = 2;
  215. const uint8_t W_ROCKET = 11;
  216. static const uint8_t rocket[F_ROCKET * W_ROCKET]  PROGMEM =  
  217. {
  218.   0x18, 0x24, 0x42, 0x81, 0x99, 0x18, 0x99, 0x18, 0xa5, 0x5a, 0x81,
  219.   0x18, 0x24, 0x42, 0x81, 0x18, 0x99, 0x18, 0x99, 0x24, 0x42, 0x99,
  220. };
  221.  
  222. // ------------------------------------------------------------------------------------------------------------- //
  223. // S P R I T E   :   F I R E B A L L       D E F I N I T I O N ------------------------------------------------- //
  224. // ------------------------------------------------------------------------------------------------------------- //
  225.  
  226. const uint8_t F_FBALL = 2;
  227. const uint8_t W_FBALL = 11;
  228. static const uint8_t fireball[F_FBALL * W_FBALL] PROGMEM =  
  229. {
  230.   0x7e, 0xab, 0x54, 0x28, 0x52, 0x24, 0x40, 0x18, 0x04, 0x10, 0x08,
  231.   0x7e, 0xd5, 0x2a, 0x14, 0x24, 0x0a, 0x30, 0x04, 0x28, 0x08, 0x10,
  232. };
  233.  
  234. // ------------------------------------------------------------------------------------------------------------- //
  235. // S P R I T E   :   C H E V R O N       D E F I N I T I O N --------------------------------------------------- //
  236. // ------------------------------------------------------------------------------------------------------------- //
  237.  
  238. const uint8_t F_CHEVRON = 1;
  239. const uint8_t W_CHEVRON = 9;
  240. static const uint8_t chevron[F_CHEVRON * W_CHEVRON] PROGMEM =  
  241. {
  242.   0x18, 0x3c, 0x66, 0xc3, 0x99, 0x3c, 0x66, 0xc3, 0x81,
  243. };
  244.  
  245. // ------------------------------------------------------------------------------------------------------------- //
  246. // 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 ----------------------------------------- //
  247. // ------------------------------------------------------------------------------------------------------------- //
  248.  
  249. const uint8_t F_WALKER = 5;
  250. const uint8_t W_WALKER = 7;
  251. static const uint8_t walker[F_WALKER * W_WALKER]  PROGMEM =  
  252. {
  253.     0x00, 0x48, 0x77, 0x1f, 0x1c, 0x94, 0x68,
  254.     0x00, 0x90, 0xee, 0x3e, 0x38, 0x28, 0xd0,
  255.     0x00, 0x00, 0xae, 0xfe, 0x38, 0x28, 0x40,
  256.     0x00, 0x00, 0x2e, 0xbe, 0xf8, 0x00, 0x00,
  257.     0x00, 0x10, 0x6e, 0x3e, 0xb8, 0xe8, 0x00,
  258. };
  259.  
  260. // ------------------------------------------------------------------------------------------------------------- //
  261. // 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 ------------------------------ //
  262. // ------------------------------------------------------------------------------------------------------------- //
  263.  
  264. struct Sprite
  265. {
  266.   const uint8_t *data;
  267.   uint8_t width;
  268.   uint8_t frames;
  269. };
  270.  
  271. Sprite sprite[] = {
  272.                   { walker, W_WALKER, F_WALKER },
  273.                   { invader, W_INVADER, F_INVADER },
  274.                   { chevron, W_CHEVRON, F_CHEVRON },
  275.                   { heart, W_HEART, F_HEART },
  276.                   { arrow1, W_ARROW1, F_ARROW1 },
  277.                   { steamboat, W_STEAMBOAT, F_STEAMBOAT },
  278.                   { fireball, W_FBALL, F_FBALL },
  279.                   { rocket, W_ROCKET, F_ROCKET },
  280.                   { roll2, W_ROLL2, F_ROLL2 },
  281.                   { pacman2, W_PMAN2, F_PMAN2 },
  282.                   { lines, W_LINES, F_LINES },
  283.                   { roll1, W_ROLL1, F_ROLL1 },
  284.                   { sailboat, W_SAILBOAT, F_SAILBOAT },
  285.                   { arrow2, W_ARROW2, F_ARROW2 },
  286.                   { wave, W_WAVE, F_WAVE },
  287.                   { pacman1, W_PMAN1, F_PMAN1 }
  288.                   };
  289.                  
  290. // ------------------------------------------------------------------------------------------------------------- //
  291. // ---   K A T A L O G   E F E K T Ó W                                                                       --- //
  292. // ------------------------------------------------------------------------------------------------------------- //
  293.  
  294. struct Effect
  295.         {              
  296.           textEffect_t  effect;                                          
  297.           uint16_t      speed;                                            
  298.           uint16_t      pause;                                            
  299.         }                                                                  
  300.                                                                                                                            
  301.         efekt [] =  
  302.                {
  303.                { PA_PRINT, 1, 1 },
  304.                { PA_SCROLL_UP, 5, 1 },
  305.                { PA_SCROLL_DOWN, 5, 1 },
  306.                { PA_SCROLL_LEFT, 5, 1 },
  307.                { PA_SCROLL_RIGHT,  5, 1 },
  308.                { PA_SPRITE, 5, 1 },
  309.                { PA_SLICE,  1, 1 },
  310.                { PA_MESH, 20, 1 },
  311.                { PA_FADE, 20, 1 },
  312.                { PA_DISSOLVE, 7, 1 },
  313.                { PA_BLINDS, 7, 1 },
  314.                { PA_RANDOM, 3, 1 },
  315.                { PA_WIPE, 5, 1 },
  316.                { PA_WIPE_CURSOR, 4, 1 },
  317.                { PA_SCAN_HORIZ, 4, 1 },
  318.                { PA_SCAN_HORIZX, 4, 1 },
  319.                { PA_SCAN_VERT, 3, 1 },
  320.                { PA_SCAN_VERTX, 3, 1 },
  321.                { PA_OPENING, 3, 1 },
  322.                { PA_OPENING_CURSOR, 4, 1 },
  323.                { PA_CLOSING, 3, 1 },
  324.                { PA_CLOSING_CURSOR, 4, 1 },
  325.                { PA_SCROLL_UP_LEFT, 7, 1 },
  326.                { PA_SCROLL_UP_RIGHT, 7, 1 },
  327.                { PA_SCROLL_DOWN_LEFT, 7, 1 },
  328.                { PA_SCROLL_DOWN_RIGHT, 7, 1 },
  329.                { PA_GROW_UP, 7, 1 },
  330.                { PA_GROW_DOWN, 7, 1 }
  331.                };
  332.  
  333. // ------------------------------------------------------------------------------------------------------------- //
  334. // ---   K A T A L O G   C Y F R                                                                             --- //
  335. // ------------------------------------------------------------------------------------------------------------- //
  336.  
  337. //   DUŻE CYFRY                      0     1     2     3     4     5     6     7      8      9            
  338. const char * DuzeCyfry[10]     = { "\27", "\1", "\2", "\3", "\4", "\5", "\6", "\7", "\10", "\11" };  
  339.  
  340. //   NORMALNE CYFRY                  0      1      2      3      4      5      6      7      8      9            
  341. const char * NormalneCyfry[10] = { "\60", "\61", "\62", "\63", "\64", "\65", "\66", "\67", "\70", "\71" };  
  342.                                                                                                
  343. //   MAŁE CYFRY                     0      1      2      3      4      5      6      7      8      9  
  344. const char * MaleCyfry[10]    = { "\12", "\13", "\14", "\15", "\16", "\17", "\20", "\21", "\22", "\23" };  
  345.  
  346. // ------------------------------------------------------------------------------------------------------------- //
  347. // ---   K L A S A   M A X                                                                                   --- //
  348. // ------------------------------------------------------------------------------------------------------------- //
  349.  
  350. class MAX
  351. {
  352.     private:                                                        // metody i zmienne prywatne
  353.         // -------------------------------------------------------------------------------------------- //
  354.         MD_Parola &P;                                               // pseudo obiekt
  355.        
  356.         uint8_t SpriteSize = 0;                                     // rozmiar tablicy z duszkami        
  357.         uint8_t EffectSize = 0;                                     // rozmiar tablicy z efektami
  358.  
  359.         // ******************************************************************************************** //
  360.         // *** B U F O R Y   T E K S T O W E   D O   W Y Ś W I E T L E N I A ************************** //
  361.         // ******************************************************************************************** //
  362.  
  363.         char  BOpisPogody[40];                                      // bufor  : krótki opis podody
  364.         char  BTemperatura[40];                                     // bufor  : temperatura w st.C
  365.         char  BWilgotnosc[40];                                      // bufor  : wilgotność w % RH
  366.         char  BIndexUV[40];                                         // bufor  : UV
  367.         char  BWidzialnosc[40];                                     // bufor  : widzialność w km
  368.         char  BZachmurzenie[40];                                    // bufor  : zachmurzenie w %
  369.         char  BOpady[40];                                           // bufor  : opady deszczu w mm
  370.         char  BCisnienie[40];                                       // bufor  : cisnienie atmosferyczne w mPA
  371.         char  BWiatr[40];                                           // bufor  : prędkość wiatru w km/h
  372.         char  BWiatrPorywy[40];                                     // bufor  : porywy wiatru w km/h
  373.         char  BWiatrKierunek[40];                                   // bufor  : kierunek wiatru (kompas)
  374.         char  BCzasLokalny[40];                                     // bufor  : czas lokalny z serwera
  375.         char  BWschodSlonca[40];                                    // bufor  : wschód słońca
  376.         char  BZachodSlonca[40];                                    // bufor  : zachód słońca
  377.         char  BWschodKsiezyca[40];                                  // bufor  : wschód księżyca
  378.         char  BZachodKsiezyca[40];                                  // bufor  : zachód księżyca
  379.         char  BFazaKsiezyca[60];                                    // bufor  : faza księżyca
  380.         char  BTlenekWegla[40];                                     // bufor  : tlenek węgla
  381.         char  BOzon[40];                                            // bufor  : ozon
  382.         char  BDwutlenekAzotu[40];                                  // bufor  : dwutlenek azotu
  383.         char  BDwutlenekSiarki[40];                                 // bufor  : dwutlenek siarki
  384.         char  BPylyPM25[40];                                        // bufor  : pyły PM25
  385.         char  BPylyPM10[40];                                        // bufor  : pyły PM10
  386.  
  387.         // ******************************************************************************************** //
  388.         // *** M E T O D Y   P R Y W A T N E   K L A S Y   M A X ************************************** //
  389.         // ******************************************************************************************** //
  390.        
  391.         void Scroll2Right(char *msg);                               // wyświetl napis -> scroll w prawo
  392.         void Scroll2Left(char *msg);                                // wyświetl napis -> scroll w lewo
  393.  
  394.     public:                                                         // metody i zmienne publiczne
  395.         // -------------------------------------------------------------------------------------------- //
  396.         MAX(MD_Parola & adrP) : P ( adrP ) { }                      // konstruktor domyślny
  397.         void Setup();                                               // Setup klasy MAX
  398.         void ShowBigClock();                                        // pokaz zegar
  399.         void PrepareBufor();                                        // przygotuj bufory do wyświetlenia
  400.         void ShowTest();
  401. };
  402.  
  403. // ------------------------------------------------------------------------------------------------------------- //
  404. // ---   M E T O D Y   P R Y W A T N E                                                                       --- //
  405. // ------------------------------------------------------------------------------------------------------------- //
  406. // ---   Wyswietl scroll w prawo                                                                             --- //
  407. // ------------------------------------------------------------------------------------------------------------- //
  408. void MAX::Scroll2Right(char *msg)
  409. {
  410.     if(P.displayAnimate())
  411.     {
  412.         P.displayText(msg, PA_RIGHT, 20, 0, PA_SCROLL_RIGHT, PA_SCROLL_LEFT);
  413.     }
  414. }
  415.  
  416.  
  417. // ------------------------------------------------------------------------------------------------------------- //
  418. // ---   M E T O D Y   P R Y W A T N E                                                                       --- //
  419. // ------------------------------------------------------------------------------------------------------------- //
  420. // ---   Wyswietl scroll w lewo                                                                              --- //
  421. // ------------------------------------------------------------------------------------------------------------- //
  422.  
  423. void MAX::Scroll2Left(char *msg)
  424. {
  425.     if(P.displayAnimate())
  426.     {
  427.         P.displayText(msg, PA_LEFT, 20, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
  428.     }
  429. }
  430.  
  431. // ------------------------------------------------------------------------------------------------------------- //
  432. // ---   M E T O D Y   P U B L I C Z N E                                                                     --- //
  433. // ------------------------------------------------------------------------------------------------------------- //
  434. // ---   S E T U P                                                                                           --- //
  435. // ------------------------------------------------------------------------------------------------------------- //
  436.  
  437. void MAX::Setup()
  438. {
  439.     SpriteSize    =   ARRAY_SIZE ( sprite );    
  440.     EffectSize    =   ARRAY_SIZE ( efekt  );
  441.  
  442.     for (uint8_t i=0; i<EffectSize; i++)                                          
  443.     {                                                                              
  444.         efekt[i].speed *= P.getSpeed();                                            
  445.         efekt[i].pause *= 500;                                                      
  446.     }  
  447. }
  448.  
  449. // ------------------------------------------------------------------------------------------------------------- //
  450. // ---   M E T O D Y   P U B L I C Z N E                                                                     --- //
  451. // ------------------------------------------------------------------------------------------------------------- //
  452. // ---   P O K A Z   D U Ż Y   Z E G A R                                                                     --- //
  453. // ------------------------------------------------------------------------------------------------------------- //
  454.  
  455. void MAX::ShowBigClock()
  456. {
  457.     char TimeBufor[20] = " TOMEK ";                         // bufor do przechowywania czasu          
  458.                                                                                                      
  459.     strcpy(TimeBufor, DuzeCyfry[rtc.getHour(true) / 10]);                                                      
  460.     strcat(TimeBufor, DuzeCyfry[rtc.getHour(true) % 10]);                                                  
  461.                                                                                                      
  462.     if(rtc.getSecond() % 2)  strcat(TimeBufor, "\24");                                                  
  463.     else                     strcat(TimeBufor, "\26");                                                  
  464.                                                                                                      
  465.     strcat(TimeBufor, DuzeCyfry[rtc.getMinute() / 10]);                                                  
  466.     strcat(TimeBufor, DuzeCyfry[rtc.getMinute() % 10]);                                                  
  467.                                                                                                      
  468.     strcat(TimeBufor, "\25");                                                                        
  469.                                                                                                      
  470.     strcat(TimeBufor, DuzeCyfry[rtc.getSecond() / 10]);                                                  
  471.     strcat(TimeBufor, DuzeCyfry[rtc.getSecond() % 10]);                                                  
  472.                                                                                                      
  473.     P.displayText(TimeBufor, PA_LEFT, 50, 1000, PA_PRINT, PA_SCROLL_UP);                              
  474.     P.displayAnimate();                
  475. }
  476.  
  477. //
  478. // ------------------------------------------------------------------------------------------------------------- //
  479. // ---   M E T O D Y   P U B L I C Z N E                                                                     --- //
  480. // ------------------------------------------------------------------------------------------------------------- //
  481. // ---   Przygotuj bufory do wyświetlenia                                                                    --- //
  482. // ------------------------------------------------------------------------------------------------------------- //
  483. //
  484.  
  485. void MAX::PrepareBufor()
  486. {    
  487.     char bufor[20];    
  488.  
  489.     // ******************************************************************** //
  490.     //                                    POLSKIE ZNAKI (ogonki )           //
  491.     // ósemkowo 232 to ć                                                    //
  492.     // ósemkowo 243 to ś                  wymagana biblioteka przygotowana  //
  493.     // ósemkowo 244 to ó                  przez mojego syna :-) 50zł        //
  494.     // ósemkowo 245 to ę                                                    //
  495.     // ósemkowo 246 to ż                                                    //
  496.     // ósemkowo 247 to ł                                                    //
  497.     // ósemkowo 250 to ń                                                    //
  498.     // ósemkowo 251 to ź                                                    //
  499.     // ósemkowo 252 to ą                                                    //
  500.     //                                                                      //
  501.     // ******************************************************************** //
  502.    
  503.     // --- TEMPERATURA ---------------------------------------------------- //
  504.     strcpy  ( BTemperatura, "Temperatura : " );
  505.     sprintf ( bufor, "%2.2f", pogoda.temperatura_C );
  506.     strcat  ( BTemperatura, bufor );
  507.     strcat  ( BTemperatura, " " );
  508.     strcat  ( BTemperatura, "\44" );
  509.     strcat  ( BTemperatura, "C" );
  510.  
  511.     // --- WILGOTNOŚĆ ----------------------------------------------------- //
  512.  
  513.     strcpy  ( BWilgotnosc, "Wilgotno\243\242 Powietrza : " );    
  514.     sprintf ( bufor, "%d", pogoda.wilgotnosc);
  515.     strcat  ( BWilgotnosc, bufor );
  516.     strcat  ( BWilgotnosc, " %RH" );
  517.  
  518.     // --- INDEX UV ------------------------------------------------------- //
  519.  
  520.     strcpy  ( BIndexUV, "Index UV : " );
  521.     sprintf ( bufor, "%d", pogoda.index_uv );
  522.     strcat  ( BIndexUV, bufor );
  523.  
  524.     // --- WIDZIALNOŚĆ ---------------------------------------------------- //
  525.  
  526.     strcpy  ( BWidzialnosc, "Widzialno\243\242 : " );
  527.     sprintf ( bufor, "%d", pogoda.widzialnosc );
  528.     strcat  ( BWidzialnosc, bufor );
  529.     strcat  ( BWidzialnosc, " km" );
  530.  
  531.     // --- ZACHMURZENIE --------------------------------------------------- //
  532.  
  533.     strcpy  ( BZachmurzenie, "Zachmurzenie : " );
  534.     sprintf ( bufor, "%d", pogoda.zachmurzenie );
  535.     strcat  ( BZachmurzenie, bufor );
  536.     strcat  ( BZachmurzenie, " % chmur" );
  537.    
  538.     // --- OPADY --------------------------------------------------------- //
  539.  
  540.     strcpy  ( BOpady, "Opady : " );
  541.     sprintf ( bufor, "%2.2f", pogoda.opady );
  542.     strcat  ( BOpady, bufor );
  543.     strcat  ( BOpady, " mm" );
  544.  
  545.     // --- CISNIENIE ------------------------------------------------------ //
  546.  
  547.     strcpy  ( BCisnienie, "Ci\243nienie Atmosferyczne : " );
  548.     sprintf ( bufor, "%d", pogoda.cisnienie );
  549.     strcat  ( BCisnienie, bufor );
  550.     strcat  ( BCisnienie, " mPA" );
  551.  
  552.     // --- PRĘDKOŚC WIATRU ------------------------------------------------ //
  553.  
  554.     strcpy  ( BWiatr, "Pr\245dko\243\242 Wiatru : " );
  555.     sprintf ( bufor, "%2.2f", pogoda.predkosc_wiatru_kph );
  556.     strcat  ( BWiatr, bufor );
  557.     strcat  ( BWiatr, " km/h" );
  558.  
  559.     // --- KIERUNEK WIATRU ------------------------------------------------ //
  560.  
  561.     strcpy  ( BWiatrKierunek, "Kierunek Wiatru : " );
  562.     strcat  ( BWiatrKierunek, pogoda.kierunek_wiatru_kompas.c_str() );    
  563.  
  564.     // --- PORYWY WIATRU -------------------------------------------------- //
  565.  
  566.     strcpy  ( BWiatrPorywy, "Porywy Wiatru : " );
  567.     sprintf ( bufor, "%2.2f", pogoda.podmuchy_wiatru );
  568.     strcat  ( BWiatrPorywy, bufor );
  569.     strcat  ( BWiatrPorywy, " km/h" );
  570.  
  571.     // --- PORYWY WIATRU -------------------------------------------------- //
  572.  
  573.     strcpy  ( BOpisPogody, pogoda.miejscowosc.c_str() );
  574.     strcat  ( BOpisPogody, ", " );
  575.     strcat  ( BOpisPogody, pogoda.kraj.c_str() );    
  576.  
  577.     // --- CZAS LOKALNY --------------------------------------------------- //
  578.  
  579.     strcpy  ( BCzasLokalny, "Czas lokalny : ");    
  580.     strcat  ( BCzasLokalny, pogoda.czas_lokalny.c_str() );  
  581.  
  582.     // --- WSCHÓD SŁOŃCA -------------------------------------------------- //
  583.  
  584.     strcpy ( BWschodSlonca, "Wsch\244d S\247o\250ca : " );
  585.     strcat ( BWschodSlonca, astronomia.wschod_slonca.c_str() );
  586.  
  587.     // --- ZACHÓD SŁOŃCA -------------------------------------------------- //
  588.  
  589.     strcpy ( BZachodSlonca, "Zach\244d S\247o\250ca : " );
  590.     strcat ( BZachodSlonca, astronomia.zachod_slonca.c_str() );
  591.  
  592.     // --- WSCHOD KSIĘŻYCA ------------------------------------------------ //
  593.  
  594.     strcpy ( BWschodKsiezyca, "Wsch\244d Ksi\245\246yca : " );
  595.     strcat ( BWschodKsiezyca, astronomia.wschod_ksiezyca.c_str() );
  596.  
  597.     // --- ZACHÓD KSIĘŻYCA ------------------------------------------------ //
  598.  
  599.     strcpy ( BZachodKsiezyca, "Zach\244d Ksi\245\246yca : " );
  600.     strcat ( BZachodKsiezyca, astronomia.zachod_ksiezyca.c_str() );
  601.  
  602.     // --- FAZA KSIĘŻYCA -------------------------------------------------- //
  603.  
  604.     strcpy ( BZachodKsiezyca, "Faza Ksi\245\246yca : " );
  605.  
  606.     String buforek;
  607.    
  608.     if (astronomia.faza_ksiezyca == "Waxing Crescent")
  609.     {
  610.         buforek = "Sierp przybywaj\252cy";    
  611.     }
  612.     else
  613.     if (astronomia.faza_ksiezyca == "New Moon")
  614.     {
  615.         buforek = "N\244w";
  616.     }
  617.     else
  618.     if (astronomia.faza_ksiezyca == "First Quarter")
  619.     {
  620.         buforek = "Pierwszy kwarta\247";
  621.     }
  622.     else
  623.     if (astronomia.faza_ksiezyca == "Waxing Gibbous")
  624.     {
  625.         buforek = "Przybywaj\252cy Ksi\245\246yc";
  626.     }
  627.     else
  628.     if (astronomia.faza_ksiezyca == "Full Moon")
  629.     {
  630.         buforek = "Pe\247nia ksi\245\246yca";
  631.     }
  632.     else
  633.     if (astronomia.faza_ksiezyca == "Waning Gibbous")
  634.     {
  635.         buforek = "Ubywaj\252cy Ksi\245\246yc";
  636.     }
  637.     else    
  638.     if (astronomia.faza_ksiezyca == "Waning Gibbous")
  639.     {
  640.         buforek = "Ostatni kwarta\247";
  641.     }
  642.     else    
  643.     if (astronomia.faza_ksiezyca == "Waning Crescent")
  644.     {
  645.         buforek = "Powi\245kszaj\252cy si\245 Ksi\245\246yc";
  646.     }
  647.    
  648.     strcat ( BZachodKsiezyca, buforek.c_str() );
  649.  
  650.     // --- TLENEK WĘGLA --------------------------------------------------- //
  651.  
  652.     strcpy  ( BTlenekWegla, "Tlenek W\245gla : " );    
  653.     dtostrf ( powietrze.co, 8, 8, bufor );    
  654.     strcat  ( BTlenekWegla, bufor );  
  655.     strcat  ( BTlenekWegla, " ug/m3" );
  656.    
  657.     // --- TLENEK WĘGLA --------------------------------------------------- //
  658.  
  659.     strcpy  ( BOzon, "Ozon : " );
  660.     dtostrf ( powietrze.o3, 8, 8, bufor );
  661.     strcat  ( BOzon, bufor );
  662.     strcat  ( BOzon, " ug/m3" );
  663.  
  664.     // --- DWUTLENEK AZOTU ------------------------------------------------ //
  665.  
  666.     strcpy  ( BDwutlenekAzotu, "Dwutlenek Azotu : " );
  667.     dtostrf ( powietrze.no2, 8, 8, bufor );      
  668.     strcat  ( BDwutlenekAzotu, bufor );
  669.     strcat  ( BDwutlenekAzotu, " ug/m3" );
  670.  
  671.     // --- DWUTLENEK SIARKI ------------------------------------------------ //
  672.  
  673.     strcpy  ( BDwutlenekSiarki, "Dwutlenek Siarki : " );
  674.     dtostrf ( powietrze.so2, 8, 8, bufor );      
  675.     strcat  ( BDwutlenekSiarki, bufor );
  676.     strcat  ( BDwutlenekSiarki, " ug/m3" );
  677.  
  678.     // --- AEROZOLOE I PYŁY PM25 ------------------------------------------- //
  679.  
  680.     strcpy  ( BPylyPM25, "Aerozole i py\247y PM2.5 : " );
  681.     dtostrf ( powietrze.pm25, 8, 8, bufor );      
  682.     strcat  ( BPylyPM25, bufor );
  683.     strcat  ( BPylyPM25, " um" );
  684.  
  685.     // --- AEROZOLOE I PYŁY PM10 ------------------------------------------- //
  686.  
  687.     strcpy  ( BPylyPM10, "Aerozole i py\247y PM10 : " );
  688.     dtostrf ( powietrze.pm10, 8, 8, bufor );      
  689.     strcat  ( BPylyPM10, bufor );
  690.     strcat  ( BPylyPM10, " um" );
  691.    
  692. }
  693.  
  694. //
  695. // ------------------------------------------------------------------------------------------------------------- //
  696. // ---   M E T O D Y   P U B L I C Z N E                                                                     --- //
  697. // ------------------------------------------------------------------------------------------------------------- //
  698. // ---   T E S T                                                                                             --- //
  699. // ------------------------------------------------------------------------------------------------------------- //
  700. //
  701.  
  702. void MAX::ShowTest()
  703. {
  704.     static BAJT przelacznik = 0;
  705.    
  706.     if(P.displayAnimate())
  707.     {
  708.       switch ( przelacznik )                                                                      
  709.       {                                                                                            
  710.           case  0   :   Scroll2Left(BOpisPogody);       przelacznik ++ ;   break;                                                                                    
  711.           case  1   :   Scroll2Left(BWilgotnosc);       przelacznik ++ ;   break;          
  712.           case  2   :   Scroll2Left(BIndexUV);          przelacznik ++ ;   break;
  713.           case  3   :   Scroll2Left(BWidzialnosc);      przelacznik ++ ;   break;
  714.           case  4   :   Scroll2Left(BZachmurzenie);     przelacznik ++ ;   break;
  715.           case  5   :   Scroll2Left(BOpady);            przelacznik ++ ;   break;
  716.           case  6   :   Scroll2Left(BCisnienie);        przelacznik ++ ;   break;
  717.           case  7   :   Scroll2Left(BWiatr);            przelacznik ++ ;   break;
  718.           case  8   :   Scroll2Left(BWiatrPorywy);      przelacznik ++ ;   break;
  719.           case  9   :   Scroll2Left(BWiatrKierunek);    przelacznik ++ ;   break;
  720.           case  10  :   Scroll2Left(BCzasLokalny);      przelacznik ++ ;   break;
  721.           case  11  :   Scroll2Left(BWschodSlonca);     przelacznik ++ ;   break;
  722.           case  12  :   Scroll2Left(BZachodSlonca);     przelacznik ++ ;   break;
  723.           case  13  :   Scroll2Left(BWschodKsiezyca);   przelacznik ++ ;   break;
  724.           case  14  :   Scroll2Left(BZachodKsiezyca);   przelacznik ++ ;   break;
  725.           case  15  :   Scroll2Left(BFazaKsiezyca);     przelacznik ++ ;   break;
  726.           case  16  :   Scroll2Left(BTlenekWegla);      przelacznik ++ ;   break;
  727.           case  17  :   Scroll2Left(BOzon);             przelacznik ++ ;   break;
  728.           case  18  :   Scroll2Left(BDwutlenekAzotu);   przelacznik ++ ;   break;
  729.           case  19  :   Scroll2Left(BDwutlenekSiarki);  przelacznik ++ ;   break;
  730.           case  20  :   Scroll2Left(BPylyPM25);         przelacznik ++ ;   break;
  731.           case  21  :   Scroll2Left(BPylyPM10);         przelacznik ++ ;   break;
  732.          
  733.           default   :   Scroll2Left("ESP32 DEMO Scroll Text");  przelacznik = 0; break;                                        
  734.       }          
  735.     }
  736. }
  737.  
Add Comment
Please, Sign In to add comment