PowerTGS440

RGB-MATRIX-CLOCK v0.2

Jul 14th, 2021 (edited)
756
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 25.07 KB | None | 0 0
  1. // ------------------------------------------------------------------------------------------------------------------- //
  2. //                                                                                                                     //
  3. // Simple ESP8266 NodeMCU 0.2 RGB-MATRIX-CLOCK by TOMASZ MAJCHER (TRANSLINE GROUP POAND)                               //
  4. //                                                                                                                     //
  5. // e-mail  : [email protected]                                                                               //
  6. // licence : DonationWare                                                                                              //
  7. // paypal  : @TomaszMajcher                                                                                            //
  8. // www     : https://esp32dev.blogspot.com/                                                                            //
  9. //                                                                                                                     //
  10. // ------------------------------------------------------------------------------------------------------------------- //
  11. //
  12. // v0.2 Free-Lite (10.07.2021) by Tomasz Majcher
  13. //
  14. // ------------------------------------------------------------------------------------------------------------------- //
  15.  
  16. #include <PxMatrix.h>
  17. #include "FreeMonoBold12pt7b.h"
  18. #include "kongtext4pt7b.h"
  19.  
  20. #include <Ticker.h>
  21. Ticker display_ticker;
  22.  
  23. #define P_LAT 16
  24. #define P_A 5
  25. #define P_B 4
  26. #define P_C 15
  27. #define P_D 12
  28. #define P_E 0
  29. #define P_OE 2
  30.  
  31. #define matrix_width 64
  32. #define matrix_height 32
  33.  
  34. uint8_t display_draw_time=10;
  35.  
  36. PxMATRIX display(64,32,P_LAT, P_OE,P_A,P_B,P_C,P_D);
  37.  
  38. uint16_t myRED = display.color565(255, 0, 0);
  39. uint16_t myGREEN = display.color565(0, 255, 0);
  40. uint16_t myBLUE = display.color565(0, 0, 255);
  41. uint16_t myWHITE = display.color565(255, 255, 255);
  42. uint16_t myYELLOW = display.color565(255, 255, 0);
  43. uint16_t myCYAN = display.color565(0, 255, 255);
  44. uint16_t myMAGENTA = display.color565(255, 0, 255);
  45. uint16_t myBLACK = display.color565(0, 0, 0);
  46.  
  47. uint16_t myCOLORS[8]={myRED,myGREEN,myBLUE,myWHITE,myYELLOW,myCYAN,myMAGENTA,myBLACK};
  48.  
  49. void display_updater()
  50. {
  51.     display.display(display_draw_time);
  52. }
  53.  
  54. void display_update_enable(bool is_enable)
  55. {
  56.     if (is_enable)
  57.     {
  58.         display_ticker.attach(0.004, display_updater);
  59.     }
  60.     else
  61.     {
  62.         display_ticker.detach();
  63.     }
  64. }
  65.  
  66. // ------------------------------------------------------------------------------------------------------------------- //
  67. // --- L A N G U A G E   S E T U P ----------------------------------------------------------------------------------- //
  68. // ------------------------------------------------------------------------------------------------------------------- //
  69.  
  70. #define LANGUAGE 0                                            // 0 (Polish), 1 (English), 2 (Germany)
  71.                                                              
  72. #if LANGUAGE == 0                                                
  73.     #define POLISH 1
  74.     #define ENGLISH 0
  75.     #define GERMANY 0                                          
  76. #endif
  77.  
  78. #if LANGUAGE == 1                                                      
  79.     #define POLISH 0                                        
  80.     #define ENGLISH 1
  81.     #define GERMANY 0
  82. #endif
  83.  
  84. #if LANGUAGE == 2
  85.     #define POLISH 0
  86.     #define ENGLISH 0
  87.     #define GERMANY 1
  88. #endif      
  89.  
  90. // ------------------------------------------------------------------------------------------------------------------- //
  91. // --- M A C R O   D E F I N E --------------------------------------------------------------------------------------- //
  92. // ------------------------------------------------------------------------------------------------------------------- //
  93.  
  94. #define ARRAY_SIZE(a)   (sizeof(a) / sizeof((a)[0]))
  95.  
  96. const char *ssid     = "XXXXXX";                                       // network wifi ssid  
  97. const char *password = "XXXXXXXXXXX";                                  // network wifi password
  98.  
  99. // ------------------------------------------------------------------------------------------------------------------- //
  100. // --- I N C L U D E   L I B R A R Y --------------------------------------------------------------------------------- //
  101. // ------------------------------------------------------------------------------------------------------------------- //
  102.  
  103. extern "C" char* sbrk(int incr);
  104.  
  105. #include <ESP8266WiFi.h>                                         // biblioteka Wi-Fi
  106. #include <TaskScheduler.h>                                       // scheluder
  107. #include <TimeLib.h>
  108. #include <Arduino.h>
  109.  
  110. // ------------------------------------------------------------------------------------------------------------------- //
  111. // --- N T P   T I M E ----------------------------------------------------------------------------------------------- //
  112. // ------------------------------------------------------------------------------------------------------------------- //
  113.  
  114. #include <NTPClient_Generic.h>                                   // NTP klient (Time)
  115. #include <WiFiUdp.h>                                             // UDP dla NTP (Time)
  116.  
  117. WiFiUDP ntpUDP;  
  118.  
  119. char timeServer[] = "0.ca.pool.ntp.org";
  120.  
  121. #define TIME_ZONE_OFFSET_HRS            2
  122. #define NTP_UPDATE_INTERVAL_MS          60000L
  123.  
  124. NTPClient timeClient(ntpUDP, timeServer, (3600 * TIME_ZONE_OFFSET_HRS), NTP_UPDATE_INTERVAL_MS);                                    
  125.  
  126. bool F_TimeUpdate = false;
  127.  
  128. // ------------------------------------------------------------------------------------------------------------------- //
  129. // --- S E R I A L --------------------------------------------------------------------------------------------------- //
  130. // ------------------------------------------------------------------------------------------------------------------- //
  131.  
  132. #define SERIAL true
  133. #define SerialSpeed 57600
  134.  
  135. // ------------------------------------------------------------------------------------------------------------------- //
  136. // --- P R O T O T Y P Y --------------------------------------------------------------------------------------------- //
  137. // ------------------------------------------------------------------------------------------------------------------- //
  138.  
  139. void Task0Callback();                                                     // funkcja dla task_0    
  140. void Task1Callback();                                                     // funkcja dla task_1    
  141. void Task2Callback();                                                     // funkcja dla task_2    
  142. void Task3Callback();                                                     // funkcja dla task_3    
  143.  
  144. // ------------------------------------------------------------------------------------------------------------------- //
  145. // --- Z A D A N I A   S C H E L U D E R ' A ------------------------------------------------------------------------- //
  146. // ------------------------------------------------------------------------------------------------------------------- //
  147.                                                                                                    
  148. Task task_0(  60000,  TASK_FOREVER, &Task0Callback);                      // task_0 - co 1 minutę
  149. Task task_1(  60000,  TASK_FOREVER, &Task1Callback);                      // task_1 - co 1 minutę  
  150. Task task_2(   1000,  TASK_FOREVER, &Task2Callback);                      // task_2 - co 1 sekundę  
  151. Task task_3(  90000,  TASK_FOREVER, &Task3Callback);                      // task_3 - co 90 sekund
  152.                                                                                                    
  153. Scheduler runner;    
  154.  
  155. // ------------------------------------------------------------------------------------------------------------------- //
  156. //                                              *** WiFi Reconect ***                                                  //
  157. // ------------------------------------------------------------------------------------------------------------------- //
  158.  
  159. unsigned long previousMillis = 0;
  160. unsigned long interval = 30000;
  161.  
  162. // ------------------------------------------------------------------------------------------------------------------- //
  163. //                                              *** STRUKTURA Time ***                                                 //
  164. // ------------------------------------------------------------------------------------------------------------------- //
  165.  
  166. struct TIME_DATA
  167. {
  168.     int Hour = 0;
  169.     int Minute  = 0;
  170.     int Second = 0;    
  171.     int DayOfTheWeek = 0;
  172.     int DayOfTheMonth = 0;
  173.     int Month = 0;
  174.     int Year = 0;
  175.  
  176.     String ShortTime = "NULL";
  177.  
  178.     String lastH = "NULL";
  179.     String lastM = "NULL";
  180.     String lastS = "NULL";
  181.     String currentH = "NULL";
  182.     String currentM = "NULL";
  183.     String currentS = "NULL";
  184.  
  185.     String lastampm = "NULL";
  186.     String currentampm = "NULL";
  187. }
  188. S_Time;
  189.  
  190.  
  191. // ------------------------------------------------------------------------------------------------------------------- //
  192. //                                              *** STRUKTURA DZIEN ***                                                //
  193. // ------------------------------------------------------------------------------------------------------------------- //
  194.  
  195. #if POLISH
  196.     const char Day_0 [] = "Niedziela";
  197.     const char Day_1 [] = "Poniedzialek";
  198.     const char Day_2 [] = "Wtorek";
  199.     const char Day_3 [] = "Sroda";
  200.     const char Day_4 [] = "Czwartek";
  201.     const char Day_5 [] = "Piatek";
  202.     const char Day_6 [] = "Sobota";
  203. #endif
  204.  
  205. #if ENGLISH
  206.     const char Day_0 [] = "Sunday";
  207.     const char Day_1 [] = "Monday";
  208.     const char Day_2 [] = "Tuesday";
  209.     const char Day_3 [] = "Wednesday";
  210.     const char Day_4 [] = "Thursday";
  211.     const char Day_5 [] = "Friday";
  212.     const char Day_6 [] = "Saturday";
  213. #endif
  214.  
  215. #if GERMANY
  216.     const char Day_0 [] = "Sonntag";
  217.     const char Day_1 [] = "Montag";
  218.     const char Day_2 [] = "Dienstag";
  219.     const char Day_3 [] = "Mittwoch";
  220.     const char Day_4 [] = "Donnerstag";
  221.     const char Day_5 [] = "Freitag";
  222.     const char Day_6 [] = "Samstag";
  223. #endif
  224.  
  225. const char * const DAY[] = { Day_0, Day_1, Day_2, Day_3, Day_4, Day_5, Day_6 }; // dni tygodnia [0..6]
  226.  
  227. // ------------------------------------------------------------------------------------------------------------------- //
  228. //                                              *** STRUKTURA MONTH ***                                                //
  229. // ------------------------------------------------------------------------------------------------------------------- //
  230.  
  231. #if POLISH
  232.     const char MONTH_0  [] = "NULL";
  233.     const char MONTH_1  [] = "Styczen";
  234.     const char MONTH_2  [] = "Luty";
  235.     const char MONTH_3  [] = "Marzec";
  236.     const char MONTH_4  [] = "Kwiecien";
  237.     const char MONTH_5  [] = "Maj";
  238.     const char MONTH_6  [] = "Czerwiec";
  239.     const char MONTH_7  [] = "Lipiec";
  240.     const char MONTH_8  [] = "Sierpien";
  241.     const char MONTH_9  [] = "Wrzesien";
  242.     const char MONTH_10 [] = "Pazdziernik";
  243.     const char MONTH_11 [] = "Listopad";
  244.     const char MONTH_12 [] = "Grudzien";
  245. #endif
  246.  
  247. #if ENGLISH
  248.     const char MONTH_0  [] = "NULL";
  249.     const char MONTH_1  [] = "January";
  250.     const char MONTH_2  [] = "February";
  251.     const char MONTH_3  [] = "March";
  252.     const char MONTH_4  [] = "April";
  253.     const char MONTH_5  [] = "May";
  254.     const char MONTH_6  [] = "June";
  255.     const char MONTH_7  [] = "July";
  256.     const char MONTH_8  [] = "August";
  257.     const char MONTH_9  [] = "September";
  258.     const char MONTH_10 [] = "October";
  259.     const char MONTH_11 [] = "November";
  260.     const char MONTH_12 [] = "December";
  261. #endif
  262.  
  263. #if GERMANY
  264.     const char MONTH_0  [] = "NULL";
  265.     const char MONTH_1  [] = "Januar";
  266.     const char MONTH_2  [] = "Februar";
  267.     const char MONTH_3  [] = "März";
  268.     const char MONTH_4  [] = "April";
  269.     const char MONTH_5  [] = "Mai";
  270.     const char MONTH_6  [] = "Juni";
  271.     const char MONTH_7  [] = "Juli";
  272.     const char MONTH_8  [] = "August";
  273.     const char MONTH_9  [] = "September";
  274.     const char MONTH_10 [] = "Oktober";
  275.     const char MONTH_11 [] = "November";
  276.     const char MONTH_12 [] = "Dezember";
  277. #endif
  278.    
  279.     const char * const MONTH[] = { MONTH_0, MONTH_1, MONTH_2, MONTH_3, MONTH_4, MONTH_5, MONTH_6,
  280.                                    MONTH_7, MONTH_8, MONTH_9, MONTH_10, MONTH_11, MONTH_12 };
  281.  
  282.  
  283. // ------------------------------------------------------------------------------------------------------------------- //
  284. // --- Task0Callback() ----------------------------------------------------------------------------------------------- //
  285. // ------------------------------------------------------------------------------------------------------------------- //
  286.  
  287. void Task0Callback()
  288. {
  289.    
  290. }
  291.  
  292. // ------------------------------------------------------------------------------------------------------------------- //
  293. // --- Task1Callback() ----------------------------------------------------------------------------------------------- //
  294. // ------------------------------------------------------------------------------------------------------------------- //
  295.  
  296. void Task1Callback()
  297. {
  298.     #if SERIAL
  299.         Serial.printf("\n[ESP] [TASK1] [Memory Free]     : %u [kB]", ESP.getFreeHeap());      
  300.         Serial.printf("\n[ESP] [TASK1] [CPU frequency]   : %u [MHz]",ESP.getCpuFreqMHz());  
  301.         Serial.printf("\n[ESP] [TASK1] [WiFi IP]         : "); Serial.print(WiFi.localIP() );
  302.     #endif        
  303. }
  304.  
  305. // ------------------------------------------------------------------------------------------------------------------- //
  306. // --- Task2Callback() ----------------------------------------------------------------------------------------------- //
  307. // ------------------------------------------------------------------------------------------------------------------- //
  308.  
  309. void Task2Callback()
  310. {
  311.     timeClient.update();                                        // update time
  312.    
  313.     if (timeClient.updated())
  314.     {
  315.         Serial.printf("\n********UPDATED********");
  316.         F_TimeUpdate = true;
  317.  
  318.         S_Time.ShortTime = timeClient.getStrHours() + timeClient.getStrMinutes();
  319.         S_Time.currentH = timeClient.getStrHours();
  320.         S_Time.currentM = timeClient.getStrMinutes();
  321.         S_Time.currentS = timeClient.getStrSeconds();
  322.  
  323.         if (timeClient.getHours() < 12) S_Time.currentampm = "AM";
  324.         if (timeClient.getHours() > 11) S_Time.currentampm = "PM";
  325.     }
  326.     else
  327.     {
  328.         Serial.printf("\n******NOT UPDATED******");
  329.         F_TimeUpdate = false;
  330.     }
  331.    
  332. }
  333.  
  334. // ------------------------------------------------------------------------------------------------------------------- //
  335. // --- Task3Callback() ----------------------------------------------------------------------------------------------- //
  336. // ------------------------------------------------------------------------------------------------------------------- //
  337.  
  338. void Task3Callback()
  339. {
  340.    
  341. }
  342.  
  343. // ------------------------------------------------------------------------------------------------------------------- //
  344. // --- stat Wi-Fi ---------------------------------------------------------------------------------------------------- //
  345. // ------------------------------------------------------------------------------------------------------------------- //
  346.  
  347. void statWiFi()
  348. {
  349.     switch (WiFi.status())
  350.     {
  351.         case WL_NO_SSID_AVAIL:
  352.                             #if SERIAL
  353.                                 #if ENGLISH
  354.                                     Serial.printf("\nConfigured SSID cannot be reached");
  355.                                 #endif
  356.                                 #if POLISH
  357.                                     Serial.printf("\nNie można osiągnąć skonfigurowanego identyfikatora SSID");
  358.                                 #endif
  359.                                 #if GERMANY
  360.                                     Serial.printf("\nKonfigurierte SSID ist nicht erreichbar");
  361.                                 #endif
  362.                             #endif        
  363.                             break;
  364.                            
  365.         case WL_CONNECTED:
  366.                             #if SERIAL
  367.                                 #if ENGLISH
  368.                                     Serial.printf("\nConnection successfully established");
  369.                                     Serial.printf("\nYour IP : %s", WiFi.localIP().toString().c_str());
  370.                                     Serial.printf("\nReceived Signal Strength Indication : %d", WiFi.RSSI());
  371.                                 #endif
  372.                                 #if POLISH
  373.                                     Serial.printf("\nPomyślnie nawiązano połączenie");
  374.                                     Serial.printf("\nTwój adres IP : %s", WiFi.localIP().toString().c_str());
  375.                                     Serial.printf("\nWskazanie siły odbieranego sygnału : %d", WiFi.RSSI());
  376.                                 #endif
  377.                                 #if GERMANY
  378.                                     Serial.printf("\nVerbindung erfolgreich hergestellt");
  379.                                     Serial.printf("\nDeine IP-Adresse : %s", WiFi.localIP().toString().c_str());
  380.                                     Serial.printf("\nAnzeige der empfangenen Signalstärke : %d", WiFi.RSSI());                                
  381.                                 #endif
  382.                             #endif
  383.                             break;
  384.                            
  385.         case WL_CONNECT_FAILED:
  386.                             #if SERIAL
  387.                                 #if ENGLISH
  388.                                     Serial.printf("\nConnection failed");
  389.                                 #endif
  390.                                 #if POLISH
  391.                                     Serial.printf("\nPołączenie nieudane");
  392.                                 #endif
  393.                                 #if GERMANY
  394.                                     Serial.printf("\nVerbindung fehlgeschlagen");
  395.                                 #endif
  396.                             #endif
  397.                             break;
  398.     }      
  399. }
  400.  
  401. // ------------------------------------------------------------------------------------------------------------------- //
  402. // --- init Wi-Fi ---------------------------------------------------------------------------------------------------- //
  403. // ------------------------------------------------------------------------------------------------------------------- //
  404.  
  405. void initWiFi()
  406. {
  407.     WiFi.mode(WIFI_STA);
  408.     WiFi.begin(ssid, password);
  409.  
  410.     #if SERIAL    
  411.         #if ENGLISH
  412.             Serial.printf("\nConnecting to WiFi ..");
  413.         #endif
  414.         #if POLISH
  415.             Serial.printf("\nŁącze z siecią WiFi ..");
  416.         #endif
  417.         #if GERMANY
  418.             Serial.printf("\nNetzwerkverbindung mit WLAN ..");
  419.         #endif
  420.     #endif
  421.    
  422.     while (WiFi.status() != WL_CONNECTED)
  423.     {
  424.         Serial.print('.');
  425.         delay(200);
  426.     }
  427.  
  428.     statWiFi();
  429.        
  430.     WiFi.setAutoReconnect(true);
  431.     WiFi.persistent(true);
  432.  
  433.    
  434. }
  435.  
  436. // ------------------------------------------------------------------------------------------------------------------- //
  437. // --- reconect Wi-Fi ------------------------------------------------------------------------------------------------ //
  438. // ------------------------------------------------------------------------------------------------------------------- //
  439.  
  440. void reconectWifi()
  441. {
  442.     unsigned long currentMillis = millis();
  443.    
  444.     if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval))
  445.     {
  446.         #if SERIAL
  447.             #if ENGLISH
  448.                 Serial.println("Reconnecting to WiFi...");
  449.             #endif
  450.             #if POLISH
  451.                 Serial.println("Ponowne łączenie z Wi-Fi...");
  452.             #endif
  453.             #if GERMANY
  454.                 Serial.println("Erneut mit WLAN verbinden...");
  455.             #endif
  456.         #endif
  457.        
  458.         WiFi.disconnect();
  459.         WiFi.begin(ssid, password);
  460.        
  461.         statWiFi();
  462.        
  463.         previousMillis = currentMillis;
  464.   }
  465. }
  466.  
  467. // ------------------------------------------------------------------------------------------------------------------- //
  468. // --- SerialTypeWriter ---------------------------------------------------------------------------------------------- //
  469. // ------------------------------------------------------------------------------------------------------------------- //
  470.  
  471. void SerialTypeWriter(const String & message, unsigned int wait)
  472. {
  473.     for(const char c : message)
  474.     {
  475.         Serial.print(c);    
  476.         delay(wait);  
  477.     }
  478. }
  479.  
  480. // ------------------------------------------------------------------------------------------------------------------- //
  481. // --- S E T U P ----------------------------------------------------------------------------------------------------- //
  482. // ------------------------------------------------------------------------------------------------------------------- //
  483.  
  484. void setup()
  485. {
  486.     #if SERIAL
  487.         Serial.begin(SerialSpeed);
  488.     #endif
  489.  
  490.    
  491.    initWiFi();
  492.  
  493.    timeClient.begin();  
  494.  
  495.    runner.init();                                       // inicjalizuj scheluder
  496.                                                                                  
  497.    runner.addTask(task_0);                              // dodaj zadanie do scheluder
  498.    task_0.enable();                                     // włącz zadanie do scheluder
  499.    runner.addTask(task_1);                              // dodaj zadanie do scheluder
  500.    task_1.enable();                                     // włącz zadanie do scheluder
  501.    runner.addTask(task_2);                              // dodaj zadanie do scheluder
  502.    task_2.enable();                                     // włącz zadanie do scheluder
  503.    runner.addTask(task_3);                              // dodaj zadanie do scheluder
  504.    task_3.enable();                                     // włącz zadanie do scheluder
  505.    
  506.  
  507.    // --- WYWOŁAJ TERAZ --------------------- //
  508.    
  509.    Task1Callback();  
  510.    Task2Callback();  
  511.    Task3Callback();
  512.    Task0Callback();
  513.  
  514.    // --------------------------------------- //
  515.  
  516.    display.begin(16);
  517.    display_update_enable(true);
  518.  
  519.    display.fillScreen(display.color565(0, 0, 0));
  520.    
  521. }
  522.  
  523. // ------------------------------------------------------------------------------------------------------------------- //
  524. // --- L O O P ------------------------------------------------------------------------------------------------------- //
  525. // ------------------------------------------------------------------------------------------------------------------- //
  526.  
  527. void loop()
  528. {
  529.     runner.execute();     // scheluder init
  530.     reconectWifi();       // check Wi-Fi status
  531.  
  532.     if(F_TimeUpdate)    
  533.     {
  534.         if(S_Time.currentH != S_Time.lastH)                               // if new hour
  535.         {
  536.             display.setCursor(0, 16);
  537.             display.setFont(&FreeMonoBold12pt7b);
  538.             display.setTextColor(myGREEN);
  539.             display.fillRect(0, 8, 24, 15, myBLACK);
  540.             display.print(S_Time.currentH);
  541.             display.setFont();
  542.             S_Time.lastH = S_Time.currentH;
  543.         }
  544.  
  545.         if(S_Time.currentM != S_Time.lastM)                               // if new minute
  546.         {
  547.             display.setCursor(26, 16);
  548.             display.setFont(&FreeMonoBold12pt7b);
  549.             display.setTextColor(myGREEN);
  550.             display.fillRect(26, 8, 25, 15, myBLACK);
  551.             display.print(S_Time.currentM);
  552.             display.setFont();
  553.             S_Time.lastM = S_Time.currentM;
  554.         }  
  555.  
  556.         if (S_Time.currentS != S_Time.lastS)
  557.         {  
  558.             display.fillRect(51, 17, 13, 6, myBLACK);
  559.             display.setCursor(51, 16);
  560.             display.setTextSize(1);
  561.             display.setTextColor(myYELLOW);
  562.             display.setFont(&kongtext4pt7b);
  563.             display.print(S_Time.currentS);
  564.             display.setFont();
  565.             S_Time.lastS = S_Time.currentS;
  566.         }
  567.  
  568.         if (S_Time.currentampm != S_Time.lastampm)
  569.         {  
  570.             display.fillRect(50, 7, 13, 6, myBLACK);
  571.             display.setCursor(50, 7);
  572.             display.setTextSize(1);
  573.             display.setTextColor(myBLUE);
  574.             display.setFont(&kongtext4pt7b);
  575.             display.print(S_Time.currentampm);
  576.             display.setFont();
  577.             S_Time.lastampm = S_Time.currentampm;
  578.         }
  579.  
  580.         static int c = 0;      
  581.  
  582.         display.setCursor(20, 8);
  583.         display.setTextSize(2);
  584.  
  585.         if(c)
  586.         {
  587.             display.setTextColor(myGREEN);
  588.             display.print(":");
  589.             display.setTextSize(1);
  590.             c = 0;
  591.         }
  592.         else
  593.         {
  594.             display.setTextColor(myBLACK);
  595.             display.print(":");
  596.             display.setTextSize(1);
  597.             c = 1;
  598.         }
  599.        
  600.         F_TimeUpdate = false;        
  601.     }
  602. }
Add Comment
Please, Sign In to add comment