PowerTGS440

simpleESP8266ClockLQ v0.3

May 27th, 2021 (edited)
444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 41.02 KB | None | 0 0
  1. // ------------------------------------------------------------------------------------------------------------------- //
  2. // Simple ESP8266 CLOCK by TOMASZ MAJCHER (TRANSLINE GROUP POLSKA)                                                     //
  3. // e-mail  : [email protected]                                                                               //
  4. // licence : DonationWare                                                                                              //
  5. // ------------------------------------------------------------------------------------------------------------------- //
  6. //
  7. // v0.3 (27.05.2021) - FULL BETA :-)
  8. // v0.2 (26.05.2021) - budowa klasy LCD
  9. // v0.1 (26.05.2021) - budowa projektu
  10. //
  11. // ------------------------------------------------------------------------------------------------------------------- //
  12. //
  13. // GND   <---> GND
  14. // VCC   <---> Vin
  15. // SDA   <---> D2 (NodeMCU) GPIO 4
  16. // SCL   <---> D1 (NodeMCU) GPIO 5
  17. //
  18. // ------------------------------------------------------------------------------------------------------------------- //
  19.  
  20. #include "LiquidCrystal_I2C.h"                                   // https://circuits4you.com/wp-content/uploads/2019/03/I2C-LCD-ESP8266-Library.zip
  21.  
  22. #include <ESP8266WiFi.h>                                         // biblioteka Wi-Fi
  23. #include <NTPClient.h>                                           // NTP klient (czas)
  24. #include <WiFiUdp.h>                                             // UDP dla NTP (czas)
  25. #include <TaskScheduler.h>                                       // scheluder
  26. #include <TimeLib.h>                                             // dla ntp
  27.  
  28. LiquidCrystal_I2C lcd(0x27,20,4);  
  29.  
  30. const char *ssid     = "DIABLO";                                       // network wifi ssid  
  31. const char *password = "xxxxxxxxxxx";                                  // network wifi password
  32.  
  33. #define SERIAL true
  34.  
  35. // ------------------------------------------------------------------------------------------------------------------- //
  36. // --- P R O T O T Y P Y --------------------------------------------------------------------------------------------- //
  37. // ------------------------------------------------------------------------------------------------------------------- //
  38.  
  39. void Task0Callback();                                                     // funkcja dla task_0    
  40. void Task1Callback();                                                     // funkcja dla task_1    
  41. void Task2Callback();                                                     // funkcja dla task_2    
  42.  
  43. // ------------------------------------------------------------------------------------------------------------------- //
  44. // --- Z A D A N I A   S C H E L U D E R ' A ------------------------------------------------------------------------- //
  45. // ------------------------------------------------------------------------------------------------------------------- //
  46.                                                                                                    
  47. Task task_0( 3600000, TASK_FOREVER, &Task0Callback);                      // task_0 - co 1 godzinę  
  48. Task task_1(  60000,  TASK_FOREVER, &Task1Callback);                      // task_2 - co 1 minutę  
  49. Task task_2(   1000,  TASK_FOREVER, &Task2Callback);                      // task_3 - co 1 sekundę  
  50.                                                                                                    
  51. Scheduler runner;                                                                                  
  52.  
  53. // ------------------------------------------------------------------------------------------------------------------- //
  54. //                                              *** STRUKTURA CZAS ***                                                 //
  55. // ------------------------------------------------------------------------------------------------------------------- //
  56.  
  57. struct ZEGAR
  58. {
  59.     int Godzina = 0;
  60.     int Minuta  = 0;
  61.     int Sekunda = 0;
  62. }
  63. czas;
  64.  
  65. // ------------------------------------------------------------------------------------------------------------------- //
  66. //                            *** KLASA LCD *** by Tomasz Majcher (TLG) v1.00 Lite ***                                 //
  67. // ------------------------------------------------------------------------------------------------------------------- //
  68.  
  69. class LCD
  70. {
  71.     private :
  72.  
  73.         // --- ZMIENNE PRYWATNE -------------------------------------------------------------------------------------- //
  74.  
  75.         byte LGc[8]  = { B00111, B01111, B11111, B11111, B11111, B11111, B11111, B11111 };         // lewy górny ----- //
  76.         byte LDc[8]  = { B11111, B11111, B11111, B11111, B11111, B11111, B01111, B00111 };         // lewy dolny ----- //
  77.         byte PGc[8]  = { B11100, B11110, B11111, B11111, B11111, B11111, B11111, B11111 };         // prawy górny ---- //
  78.         byte PDc[8]  = { B11111, B11111, B11111, B11111, B11111, B11111, B11110, B11100 };         // prawy dolny ---- //
  79.         byte UDb[8]  = { B11111, B11111, B11111, B11111, B11111, B00000, B00000, B00000 };         // górny 1/2 ------ //
  80.         byte DDb[8]  = { B00000, B00000, B00000, B11111, B11111, B11111, B11111, B11111 };         // dolny 1/2 ------ //
  81.         byte blk[8]  = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 };         // blok pełny ----- //
  82.         byte emp[8]  = { B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000 };         // blok pusty ----- //
  83.  
  84.         // --- ZMIENNE PRYWATNE -------------------------------------------------------------------------------------- //
  85.  
  86.         LiquidCrystal_I2C & wyswietlacz;      
  87.  
  88.         // ---------------------------------------------------------------------------------------- //  
  89.         // --- METODY PRYWATNE -------------------------------------------------------------------- //
  90.         // ---------------------------------------------------------------------------------------- //
  91.  
  92.         void Kropka(int x, int y);
  93.         void Dwukropek(int x, int y);
  94.         void Liczba0(int x, int y);
  95.         void Liczba1(int x, int y);
  96.         void Liczba2(int x, int y);
  97.         void Liczba3(int x, int y);
  98.         void Liczba4(int x, int y);
  99.         void Liczba5(int x, int y);
  100.         void Liczba6(int x, int y);
  101.         void Liczba7(int x, int y);
  102.         void Liczba8(int x, int y);
  103.         void Liczba9(int x, int y);
  104.         void WyswietlCyfre(int x, int y, int numer);
  105.        
  106.         // ---------------------------------------------------------------------------------------- //
  107.        
  108.     public  :
  109.  
  110.         // ---------------------------------------------------------------------------------------- //
  111.         // --- KONSTRUKTOR KLACY LCD -------------------------------------------------------------- //
  112.         // ---------------------------------------------------------------------------------------- //
  113.        
  114.         LCD (LiquidCrystal_I2C &adres_lc) : wyswietlacz(adres_lc)
  115.         {
  116.             LcdRegister();  
  117.         }
  118.        
  119.         // ---------------------------------------------------------------------------------------- //
  120.         //  --- METODY PUBLICZNE KLASY LCD -------------------------------------------------------- //
  121.         // ---------------------------------------------------------------------------------------- //
  122.  
  123.         void WyswietlCzas();  // wyswietl zegar  
  124.         void LcdRegister();   // zarejestruj nowy zestaw znaków specjalnych  
  125.        
  126. };
  127.  
  128. // ------------------------------------------------------------------------------------------------------------------- //
  129. //          *** METODY PRYWATNE *** ZAREJESTRUJ NOWY ZESTAW ZNAKÓW SPECJALNYCH DLA WYŚWIETLACZA 20x4 ***               //
  130. // ------------------------------------------------------------------------------------------------------------------- //
  131.  
  132. void LCD :: LcdRegister()                                                                                        
  133. {                                                                                                                
  134.           wyswietlacz.createChar(0,LGc);                                   // 0 -> lewy górny narożnik ------------ //
  135.           wyswietlacz.createChar(1,LDc);                                   // 1 -> lewy dolny narożnik ------------ //
  136.           wyswietlacz.createChar(2,PGc);                                   // 2 -> prawy górny narożnik ----------- //
  137.           wyswietlacz.createChar(3,PDc);                                   // 3 -> prawy dolny narożnik ----------- //
  138.           wyswietlacz.createChar(4,UDb);                                   // 4 -> górny pół-blok ----------------- //
  139.           wyswietlacz.createChar(5,DDb);                                   // 5 -> dolny pół-blok ----------------- //
  140.           wyswietlacz.createChar(6,blk);                                   // 6 -> pełny blok --------------------- //
  141. }
  142.  
  143. // ------------------------------------------------------------------------------------------------------------------- //
  144. // --- Duża liczba 0 ------------------------------------------------------------------------------------------------- //
  145. // ------------------------------------------------------------------------------------------------------------------- //
  146.  
  147. void LCD :: Liczba0(int x, int y)                                  
  148. {                                                                                                                  //          
  149.           wyswietlacz.setCursor(x,y);                                     // ustaw kursor ------------------------ //
  150.           wyswietlacz.write(0);                                           // lewy górny narożnk ------------------ //          
  151.           wyswietlacz.write(4);                                           // kropa górna ------------------------- //
  152.           wyswietlacz.write(2);                                           // prawy górny narożnik ---------------- //
  153.           wyswietlacz.setCursor(x,y+1);                                   // ustaw kursor ------------------------ //
  154.           wyswietlacz.write(6);                                           // pełny 5x8 --------------------------- //
  155.           wyswietlacz.print(F(" "));                                      // pusty blok -------------------------- //          
  156.           wyswietlacz.write(6);                                           // pełny 5x8 --------------------------- //
  157.           wyswietlacz.setCursor(x,y+2);                                   // ustaw kursor ------------------------ //
  158.           wyswietlacz.write(1);                                           // lewy dolny narożnik ----------------- //
  159.           wyswietlacz.write(5);                                           // kropa dolna ------------------------- //
  160.           wyswietlacz.write(3);                                           // prawy dolny narożnik ---------------- //
  161. }                                                                    
  162.  
  163. // ------------------------------------------------------------------------------------------------------------------- //
  164. // --- Duża liczba 1 ------------------------------------------------------------------------------------------------- //
  165. // ------------------------------------------------------------------------------------------------------------------- //
  166.  
  167. void LCD :: Liczba1(int x, int y)  
  168. {                                                                                                          
  169.           wyswietlacz.setCursor(x,y);                                      // ustaw kursor ----------------------- //
  170.           wyswietlacz.write(4);                                            // górna kropa ------------------------ //
  171.           wyswietlacz.write(2);                                            // prawy górny narożnik --------------- //          
  172.           wyswietlacz.print(F(" "));                                       // pusty blok ------------------------- //          
  173.           wyswietlacz.setCursor(x,y+1);                                    // ustaw kursor ----------------------- //
  174.           wyswietlacz.print(F(" "));                                       // pusty blok ------------------------- //                    
  175.           wyswietlacz.write(6);                                            // pełny 5x8 -------------------------- //          
  176.           wyswietlacz.print(F(" "));                                       // pusty blok ------------------------- //                    
  177.           wyswietlacz.setCursor(x,y+2);                                    // ustaw kursor ----------------------- //
  178.           wyswietlacz.write(5);                                            // kropa dolna ------------------------ //
  179.           wyswietlacz.write(6);                                            // pełny 5x8 -------------------------- //
  180.           wyswietlacz.write(5);                                            // kropa dolna ------------------------ //
  181. }    
  182.                                                                    
  183. // ------------------------------------------------------------------------------------------------------------------- //
  184. // --- Duża liczba 2 ------------------------------------------------------------------------------------------------- //
  185. // ------------------------------------------------------------------------------------------------------------------- //
  186.  
  187. void LCD :: Liczba2(int x, int y)                                                                    
  188. {                                                                                                                
  189.           wyswietlacz.setCursor(x,y);                                     // ustaw kursor ----------------------- //
  190.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  191.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  192.           wyswietlacz.write(2);                                           // prawy górny narożnik --------------- //          
  193.           wyswietlacz.setCursor(x, y+1);                                  // ustaw kursor ----------------------- //
  194.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  195.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  196.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //          
  197.           wyswietlacz.setCursor(x, y+2);                                  // ustaw kursor ----------------------- //
  198.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //  
  199.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  200.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  201. }                                                                      
  202.  
  203. // ------------------------------------------------------------------------------------------------------------------- //
  204. // --- Duża liczba 3 ------------------------------------------------------------------------------------------------- //
  205. // ------------------------------------------------------------------------------------------------------------------- //
  206.  
  207. void LCD :: Liczba3(int x, int y)                
  208. {                                                      
  209.           wyswietlacz.setCursor(x,y);                                     // ustaw kursor ----------------------- //
  210.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  211.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  212.           wyswietlacz.write(2);                                           // prawy górny narożnik --------------- //          
  213.           wyswietlacz.setCursor(x, y+1);                                  // ustaw kursor ----------------------- //
  214.           wyswietlacz.print(F(" "));                                      // pusty blok ------------------------- //          
  215.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  216.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //          
  217.           wyswietlacz.setCursor(x, y+2);                                  // ustaw kursor ----------------------- //          
  218.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  219.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  220.           wyswietlacz.write(3);                                           // prawy dolny narożnik --------------- //
  221. }                                              
  222.  
  223. // ------------------------------------------------------------------------------------------------------------------- //
  224. // --- Duża liczba 4 ------------------------------------------------------------------------------------------------- //
  225. // ------------------------------------------------------------------------------------------------------------------- //
  226.  
  227. void LCD :: Liczba4(int x, int y)    
  228. {                                                    
  229.           wyswietlacz.setCursor(x,y);                                     // ustaw kursor ----------------------- //
  230.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //          
  231.           wyswietlacz.print(F(" "));                                      // pusty blok ------------------------- //                    
  232.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //                    
  233.           wyswietlacz.setCursor(x, y+1);                                  // ustaw kursor ----------------------- //
  234.           wyswietlacz.write(1);                                           // lewy dolny narożnik ---------------- //          
  235.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  236.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //          
  237.           wyswietlacz.setCursor(x, y+2);                                  // ustaw kursor ----------------------- //          
  238.           wyswietlacz.print(F(" "));                                      // pusty blok ------------------------- //          
  239.           wyswietlacz.print(F(" "));                                      // pusty blok ------------------------- //          
  240.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //
  241. }                                                                                                              
  242.  
  243. // ------------------------------------------------------------------------------------------------------------------- //
  244. // --- Duża liczba 5 ------------------------------------------------------------------------------------------------- //
  245. // ------------------------------------------------------------------------------------------------------------------- //
  246.    
  247. void LCD :: Liczba5(int x, int y)                            
  248. {                                                                            
  249.           wyswietlacz.setCursor(x,y);                                     // ustaw kursor ----------------------- //
  250.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //  
  251.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  252.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //                    
  253.           wyswietlacz.setCursor(x, y+1);                                  // ustaw kursor ----------------------- //
  254.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //        
  255.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  256.           wyswietlacz.write(2);                                           // prawy górny narożnik --------------- //          
  257.           wyswietlacz.setCursor(x, y+2);                                  // ustaw kursor ----------------------- //          
  258.           wyswietlacz.write(1);                                           // lewy dolny narożnik ---------------- //
  259.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  260.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //
  261. }                                                                                                                
  262.  
  263. // ------------------------------------------------------------------------------------------------------------------- //
  264. // --- Duża liczba 6 ------------------------------------------------------------------------------------------------- //
  265. // ------------------------------------------------------------------------------------------------------------------- //
  266.    
  267. void LCD :: Liczba6(int x, int y)                                                                  
  268. {                                                                                                              
  269.           wyswietlacz.setCursor(x,y);                                     // ustaw kursor ----------------------- //
  270.           wyswietlacz.write(0);                                           // lewy górny narożnk ----------------- //          
  271.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  272.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //                    
  273.           wyswietlacz.setCursor(x, y+1);                                  // ustaw kursor ----------------------- //
  274.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //          
  275.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  276.           wyswietlacz.write(2);                                           // prawy górny narożnik --------------- //          
  277.           wyswietlacz.setCursor(x, y+2);                                  // ustaw kursor ----------------------- //          
  278.           wyswietlacz.write(1);                                           // lewy dolny narożnik ---------------- //
  279.           wyswietlacz.write(5);                                           // kropa dolna ------------------------ //
  280.           wyswietlacz.write(3);                                           // prawy dolny narożnik --------------- //
  281. }                                                                                                                  
  282.  
  283. // ------------------------------------------------------------------------------------------------------------------- //
  284. // --- Duża liczba 7 ------------------------------------------------------------------------------------------------- //
  285. // ------------------------------------------------------------------------------------------------------------------- //
  286.  
  287. void LCD :: Liczba7(int x, int y)      
  288. {                                                      
  289.           wyswietlacz.setCursor(x,y);                                     // ustaw kursor ----------------------- //
  290.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  291.           wyswietlacz.write(4);                                           // kropa górna ------------------------ //
  292.           wyswietlacz.write(2);                                           // prawy górny narożnik --------------- //                    
  293.           wyswietlacz.setCursor(x, y+1);                                  // ustaw kursor ----------------------- //
  294.           wyswietlacz.print(F(" "));                                      // pusty blok ------------------------- //                    
  295.           wyswietlacz.print(F(" "));                                      // pusty blok ------------------------- //          
  296.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //          
  297.           wyswietlacz.setCursor(x, y+2);                                  // ustaw kursor ----------------------- //          
  298.           wyswietlacz.print(F("  "));                                     // pusty blok ------------------------- //                    
  299.           wyswietlacz.write(6);                                           // pełny 5x8 -------------------------- //
  300. }                                                                                                      
  301.  
  302. // ------------------------------------------------------------------------------------------------------------------- //
  303. // --- Duża liczba 8 ------------------------------------------------------------------------------------------------- //
  304. // ------------------------------------------------------------------------------------------------------------------- //
  305.  
  306. void LCD :: Liczba8(int x, int y)  
  307. {                                                  
  308.           wyswietlacz.setCursor(x,y);                                      // ustaw kursor ----------------------- //
  309.           wyswietlacz.write(0);                                            // lewy górny narożnk ----------------- //          
  310.           wyswietlacz.write(4);                                            // kropa górna ------------------------ //
  311.           wyswietlacz.write(2);                                            // prawy górny narożnik --------------- //                    
  312.           wyswietlacz.setCursor(x, y+1);                                   // ustaw kursor ----------------------- //
  313.           wyswietlacz.write(6);                                            // pełny 5x8 -------------------------- //          
  314.           wyswietlacz.write(4);                                            // kropa górna ------------------------ //
  315.           wyswietlacz.write(6);                                            // pełny 5x8 -------------------------- //          
  316.           wyswietlacz.setCursor(x, y+2);                                   // ustaw kursor ----------------------- //          
  317.           wyswietlacz.write(1);                                            // lewy dolny narożnik ---------------- //
  318.           wyswietlacz.write(5);                                            // kropa dolna ------------------------ //
  319.           wyswietlacz.write(3);                                            // prawy dolny narożnik --------------- //
  320. }                                                                                                                
  321.  
  322. // ------------------------------------------------------------------------------------------------------------------- //
  323. // --- Duża liczba 9 ------------------------------------------------------------------------------------------------- //
  324. // ------------------------------------------------------------------------------------------------------------------- //
  325.  
  326. void LCD :: Liczba9(int x, int y)                                                        
  327. {                                                                                                        
  328.           wyswietlacz.setCursor(x,y);                                       // ustaw kursor ----------------------- //
  329.           wyswietlacz.write(0);                                             // lewy górny narożnk ----------------- //  
  330.           wyswietlacz.write(4);                                             // kropa górna ------------------------ //
  331.           wyswietlacz.write(2);                                             // prawy górny narożnik --------------- //                    
  332.           wyswietlacz.setCursor(x, y+1);                                    // ustaw kursor ----------------------- //
  333.           wyswietlacz.write(1);                                             // lewy dolny narożnik ---------------- //          
  334.           wyswietlacz.write(5);                                             // kropa dolna ------------------------ //
  335.           wyswietlacz.write(6);                                             // pełny 5x8 -------------------------- //          
  336.           wyswietlacz.setCursor(x, y+2);                                    // ustaw kursor ----------------------- //          
  337.           wyswietlacz.write(5);                                             // kropa dolna ------------------------ //
  338.           wyswietlacz.write(5);                                             // kropa dolna ------------------------ //
  339.           wyswietlacz.write(3);                                             // prawy dolny narożnik --------------- //
  340. }  
  341.                                                                                                                
  342. // ------------------------------------------------------------------------------------------------------------------- //
  343. // --- Duża liczba 9 ------------------------------------------------------------------------------------------------- //
  344. // ------------------------------------------------------------------------------------------------------------------- //
  345.  
  346. void LCD :: Dwukropek(int x, int y)          
  347. {                                                            
  348.           wyswietlacz.setCursor(x,y);                                       // ustaw kursor ----------------------- //
  349.           wyswietlacz.print(F(" "));                                        // pusty blok ------------------------- //          
  350.           wyswietlacz.setCursor(x,y+1);                                     // ustaw kursor ----------------------- //
  351.           wyswietlacz.write(4);                                             // kropa górna ------------------------ //
  352.           wyswietlacz.setCursor(x,y+2);                                     // ustaw kursor ----------------------- //
  353.           wyswietlacz.write(5);                                             // kropa dolna ------------------------ //
  354. }
  355.  
  356. // ------------------------------------------------------------------------------------------------------------------- //
  357. // --- KROPA --------------------------------------------------------------------------------------------------------- //
  358. // ------------------------------------------------------------------------------------------------------------------- //
  359.  
  360. void LCD :: Kropka(int x, int y)
  361. {                                              
  362.           wyswietlacz.setCursor(x,y);                                        // ustaw kursor ----------------------- //
  363.           wyswietlacz.print(F(" "));                                         // pusty blok ------------------------- //          
  364.           wyswietlacz.setCursor(x,y+1);                                      // ustaw kursor ----------------------- //
  365.           wyswietlacz.print(F(" "));                                         // pusty blok ------------------------- //          
  366.           wyswietlacz.setCursor(x,y+2);                                      // ustaw kursor ----------------------- //
  367.           wyswietlacz.print(F(" "));                                         // pusty blok ------------------------- //          
  368. }          
  369.  
  370. // ------------------------------------------------------------------------------------------------------------------- //
  371. // --- WYSWIETL CYFRE ------------------------------------------------------------------------------------------------ //
  372. // ------------------------------------------------------------------------------------------------------------------- //
  373.  
  374. void LCD :: WyswietlCyfre(int x, int y, int numer)
  375. {                                      
  376.     // --------------------------------------------------------------------------------------------------------- //
  377.                                                      // K O N T R O L A   B Ł Ę D U                              //
  378.     if(x > 17) x = 17;                               // jesli pozycja x większa niż 17, ustaw maksymalną ------- //
  379.     if(y >  1) y =  1;                               // jesli pozycja y wieksza niz 1 , ustaw maksymalna ------- //
  380.                                                                                                                  //
  381.     // --------------------------------------------------------------------------------------------------------- //
  382.              
  383.     switch (numer)                                                                                              
  384.     {                                                                                                          
  385.         case  0:  Liczba0(x,y); break;                                                                          
  386.         case  1:  Liczba1(x,y); break;                                                                          
  387.         case  2:  Liczba2(x,y); break;                                                                          
  388.         case  3:  Liczba3(x,y); break;                                                                          
  389.         case  4:  Liczba4(x,y); break;                                                                          
  390.         case  5:  Liczba5(x,y); break;                                                                          
  391.         case  6:  Liczba6(x,y); break;                                                                          
  392.         case  7:  Liczba7(x,y); break;                                                                          
  393.         case  8:  Liczba8(x,y); break;                                                                          
  394.         case  9:  Liczba9(x,y); break;                                                                          
  395.     }                                                                                                          
  396. }        
  397.  
  398. // ------------------------------------------------------------------------------------------------------------------- //
  399. //          *** METODY PUBLICZNE *** WYSWIETL CZAS ***                                                                 //
  400. // ------------------------------------------------------------------------------------------------------------------- //
  401.  
  402. void LCD :: WyswietlCzas()
  403. {
  404.     static bool F_sec = false;
  405.     static int  O_min = 0;              // optymalizacja (no flickering)
  406.     static int  O_hrs = 0;              // optymalizacja (no flickering)
  407.  
  408.     if (O_min != czas.Minuta)  
  409.     {
  410.         WyswietlCyfre(0,  0, czas.Godzina / 10);
  411.         WyswietlCyfre(4,  0, czas.Godzina % 10);
  412.         WyswietlCyfre(10, 0, czas.Minuta / 10);
  413.         WyswietlCyfre(14, 0, czas.Minuta % 10);
  414.         O_min = czas.Minuta;
  415.     }
  416.  
  417.     switch (F_sec)                
  418.     {                            
  419.         case 0 :  Dwukropek(8,0); F_sec = true;  break;
  420.         case 1 :  Kropka   (8,0); F_sec = false; break;
  421.         default: break;          
  422.     }  
  423.  
  424.     wyswietlacz.setCursor(18,2);                      // ustaw pozycję SEKUNDNIKA
  425.     wyswietlacz.print(czas.Sekunda / 10);             // wyswietl dziesiątki sekundnika
  426.     wyswietlacz.print(czas.Sekunda % 10);             // wyswietl jednosci sekundnika
  427.  
  428.    
  429.     if (O_hrs != czas.Godzina)
  430.     {
  431.         wyswietlacz.setCursor(18,0);                  // ustaw pozycję AM/PM
  432.        
  433.         if (czas.Godzina < 12) wyswietlacz.print(F("AM"));
  434.         else                   wyswietlacz.print(F("PM"));
  435.        
  436.         wyswietlacz.setCursor(3,3);    
  437.         wyswietlacz.print(F("code by : TLG"));
  438.        
  439.         O_hrs = czas.Godzina;  
  440.     }
  441.    
  442.    
  443. }
  444.  
  445.  
  446. // ------------------------------------------------------------------------------------------------------------------- //
  447. //                            *** KLASA LCD *** by Tomasz Majcher (TLG) v1.00 Lite ***                                 //
  448. // ------------------------------------------------------------------------------------------------------------------- //
  449. //                                    * * * K O N I E C   K L A S Y   L C D ***                                        //
  450. // ------------------------------------------------------------------------------------------------------------------- //
  451.  
  452.  
  453. // ------------------------------------------------------------------------------------------------------------------- //
  454. // --- O B I E K T Y  ------------------------------------------------------------------------------------------------ //
  455. // ------------------------------------------------------------------------------------------------------------------- //
  456.  
  457. LCD myLCD(lcd);
  458.  
  459. WiFiUDP ntpUDP;                                                
  460. NTPClient timeClient(ntpUDP, "pool.ntp.org", 3600);  
  461.  
  462. // ------------------------------------------------------------------------------------------------------------------- //
  463. // --- Task0Callback() ----------------------------------------------------------------------------------------------- //
  464. // ------------------------------------------------------------------------------------------------------------------- //
  465.  
  466. void Task0Callback()
  467. {
  468.  
  469. }
  470.  
  471. // ------------------------------------------------------------------------------------------------------------------- //
  472. // --- Task1Callback() ----------------------------------------------------------------------------------------------- //
  473. // ------------------------------------------------------------------------------------------------------------------- //
  474.  
  475. void Task1Callback()
  476. {
  477.     #if SERIAL
  478.         Serial.printf("\n[ESP] [TASK1] Czas : %d:%d:%d", czas.Godzina, czas.Minuta, czas.Sekunda);
  479.     #endif  
  480. }
  481.  
  482. // ------------------------------------------------------------------------------------------------------------------- //
  483. // --- Task2Callback() ----------------------------------------------------------------------------------------------- //
  484. // ------------------------------------------------------------------------------------------------------------------- //
  485.  
  486. void Task2Callback()
  487. {
  488.     timeClient.update();                                                            
  489.                                                                                    
  490.     czas.Godzina  =  timeClient.getHours()+1;             // zapisz godzinę z serwera
  491.     czas.Minuta   =  timeClient.getMinutes();             // zapisz minutę z serwera
  492.     czas.Sekunda  =  timeClient.getSeconds();             // zapisz sekundę z serwera
  493.  
  494.     myLCD.WyswietlCzas();
  495. }
  496.  
  497. // ------------------------------------------------------------------------------------------------------------------- //
  498. // --- S E T U P ----------------------------------------------------------------------------------------------------- //
  499. // ------------------------------------------------------------------------------------------------------------------- //
  500.  
  501. void setup()
  502. {
  503.     #if SERIAL
  504.         Serial.begin(57600);
  505.     #endif
  506.  
  507.     lcd.init();                      
  508.     lcd.backlight();    
  509.     myLCD.LcdRegister();
  510.  
  511.     WiFi.begin(ssid, password);
  512.  
  513.     while ( WiFi.status() != WL_CONNECTED )                              // czekaj na połączenie
  514.     {                                                                    // wait for connect    
  515.         #if SERIAL
  516.             delay ( 200 );                                              
  517.             Serial.print ( "." );                                      
  518.         #endif
  519.     }    
  520.  
  521.    runner.init();                                       // inicjalizuj scheluder
  522.                                                                                  
  523.    runner.addTask(task_0);                              // dodaj zadanie do scheluder
  524.    task_0.enable();                                     // włącz zadanie do scheluder
  525.    runner.addTask(task_1);                              // dodaj zadanie do scheluder
  526.    task_1.enable();                                     // włącz zadanie do scheluder
  527.    runner.addTask(task_2);                              // dodaj zadanie do scheluder
  528.    task_2.enable();                                     // włącz zadanie do scheluder
  529. }
  530.  
  531. // ------------------------------------------------------------------------------------------------------------------- //
  532. // --- L O O P ------------------------------------------------------------------------------------------------------- //
  533. // ------------------------------------------------------------------------------------------------------------------- //
  534.  
  535. void loop()
  536. {
  537.     runner.execute();    
  538. }
Advertisement
Add Comment
Please, Sign In to add comment