PowerTGS440

Untitled

Mar 23rd, 2021
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 82.71 KB | None | 0 0
  1. // -------------------------------------------------------------------------------------------------- //
  2. // //
  3. // file : Marcin E-Home Reminder.ino //
  4. // version : 0.05 BETA (dla mikro-procesora ESP8266 32-bit RISC Tensilica Xtensa 160 MHz) //
  5. // //
  6. // autor : Marcinek //
  7. // //
  8. // licencja: tylko do użytku prywatnego //
  9. // //
  10. // -------------------------------------------------------------------------------------------------- //
  11. // //
  12. // MATRYCA ENGINE v0.34 BETA by T R A N S L I N E T o m a s z M a j c h e r //
  13. // TOOLS ENGINE v0.02 BETA by T R A N S L I N E T o m a s z M a j c h e r //
  14. // //
  15. // -------------------------------------------------------------------------------------------------- //
  16. // HISTORIA WERSJI //
  17. // //
  18. // wersja 0.05 BETA - (14.02.2021) - SPIFFS + logger //
  19. // wersja 0.04 PRO - (14.03.2021) - test OK. PRO v.stabilna ( RAM Free : 37328 [kB] ) //
  20. // wersja 0.03 BETA - (13.03.2021) - harmonogram e-lekcji MARCIN klasa 4B //
  21. // wersja 0.02 BETA - (12.03.2021) - przebudowa !!! do wersji PRO //
  22. // wersja 0.01 BETA - dawno dawno temu - w ramach testu układu ESP8266 //
  23. // //
  24. // -------------------------------------------------------------------------------------------------- // <--- I N C L U D E
  25. // --- I N C L U D E --- //
  26. // -------------------------------------------------------------------------------------------------- //
  27.  
  28. extern "C" char* sbrk(int incr);
  29.  
  30. #include <ESP8266WiFi.h> // biblioteka Wi-Fi
  31. //#include "FS.h" // SPIFFS memory
  32. #include <NTPClient.h> // NTP klient (czas)
  33. #include <WiFiUdp.h> // UDP
  34. #include <MD_Parola.h> // MATRYCA
  35. #include <MD_MAX72xx.h> // MATRYCA
  36. #include <SPI.h> // SPI wire dla MATRYCY
  37. #include <ESP8266HTTPClient.h> // HTTP klient
  38. #include <TaskScheduler.h> // menadżer zadań
  39. #include <WiFiClient.h> // klient Wi-Fi
  40. #include "tools.h" // TOOLS ENGINE
  41. #include <Arduino_JSON.h> // for PARSER / dla parsera
  42. #include "struktura.h" // przechowuje struktury
  43. #include "matryca.h" // MATRYCA ENGINE
  44. #include <TimeLib.h> // parser czasu
  45. #include <ESP8266FtpServer.h> // ftp server
  46. #include <logger_spiffs.h> // logger to pamięci SPIFFS
  47.  
  48. // -------------------------------------------------------------------------------------------------- // <--- P A R O L A
  49. // --- D E F I N E - P A R O L A - O P T Y M I Z E D T O 8 * M A X 7 2 1 9 --- //
  50. // -------------------------------------------------------------------------------------------------- //
  51.  
  52. #define HARDWARE_TYPE MD_MAX72XX::FC16_HW
  53. #define MAX_DEVICES 8 // ilość wyświetlaczy ( 8 )
  54. #define CLK_PIN D5 // CLK (SCK) PIN D5 na ESP2886
  55. #define DATA_PIN D7 // DATA (MOSI) PIN D7 na ESP2886
  56. #define CS_PIN D8 // CS (SS) PIND D8 na ESP2886
  57. // GND do G na ESP2886
  58. // VCC do 3V na ESP2886
  59.  
  60. // -------------------------------------------------------------------------------------------------- //
  61. // --- D E F I N E - T E R M I N A L - S E R I A L D E B U G --- //
  62. // -------------------------------------------------------------------------------------------------- //
  63.  
  64. #define TERMINAL 1 // 0 - wyłącz SERIAL, 1 - włącz SERIAL
  65. #define USBSPEED 57600 // 57600 - prędkość Terminala szeregowego
  66.  
  67. // -------------------------------------------------------------------------------------------------- // <--- P A R O L A
  68. // --- O B J E C T - P A R O L A - M A T R Y C A ( P A R O L A ) --- //
  69. // -------------------------------------------------------------------------------------------------- //
  70.  
  71. MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
  72. Matryca M(P); // dla klasy Matryca (matryca.h)
  73.  
  74. // -------------------------------------------------------------------------------------------------- // <--- T O O L S
  75. // --- O B J E C T - T O O L S --- //
  76. // -------------------------------------------------------------------------------------------------- //
  77.  
  78. Tools tools;
  79. FtpServer ftpSrv;
  80. LoggerSPIFFS myLog("/log/mylog.log");
  81.  
  82. // -------------------------------------------------------------------------------------------------- //
  83. // --- O B J E C T - W I F I & N T P //
  84. // -------------------------------------------------------------------------------------------------- // <--- W I F I
  85.  
  86. WiFiUDP ntpUDP; // ntp dla Time / Date Serwer
  87. NTPClient timeClient(ntpUDP, "pool.ntp.org", 3600);
  88.  
  89. // ================================================================================================== //
  90. // === S C H E L U D E R ============================================================================ //
  91. // ================================================================================================== //
  92.  
  93. void Task0Callback(); // funkcja dla task_0
  94. void Task1Callback(); // funkcja dla task_1
  95. void Task2Callback(); // funkcja dla task_2
  96. void Task3Callback(); // funkcja dla task_2
  97.  
  98. Task task_0( 3600000, TASK_FOREVER, &Task0Callback); // task_0 - co 1 godzinę
  99. Task task_1(10800000, TASK_FOREVER, &Task1Callback); // task_1 - co 3 godziny
  100. Task task_2( 60000, TASK_FOREVER, &Task2Callback); // task_2 - co 1 minutę
  101. Task task_3( 1000, TASK_FOREVER, &Task3Callback); // task_3 - co 1 sekundę
  102.  
  103. Scheduler runner;
  104.  
  105. // -------------------------------------------------------------------------------------------------- //
  106. // --- O T H E R V A R I A B L E & C O N S T --- //
  107. // -------------------------------------------------------------------------------------------------- //
  108.  
  109. const char *ssid = "DIABLO"; // network wifi ssid
  110. const char *password = "XXXXXXXXXX "; // network wifi password
  111. String openWeatherMapApiKey = "565a88311e7c48c2d00b170cd0765c91"; // token for openWeather
  112. String city = "Legnica"; // city for weather
  113. String countryCode = "Pl"; // country for weather
  114. String jsonBuffer; // buffer - bufor
  115.  
  116. bool Flaga_PokazCzas = true; // flaga zegara dla Matrycy
  117.  
  118. void ( *ptrF ) (); // wskaźnik do funkcji void
  119.  
  120. // -------------------------------------------------------------------------------------------------- //
  121. // --- S E T U P M A I N S E C T I O N --- //
  122. // -------------------------------------------------------------------------------------------------- //
  123.  
  124. void setup(void)
  125. {
  126. SPIFFS.begin(); // File System 2MBita
  127. myLog.begin();
  128. //SPIFFS.format(); // tylko raz !!!
  129. timeClient.begin(); // Time Client NTP start
  130. ftpSrv.begin("Marcin","Marcin"); //username, password for ftp. set ports in ESP8266FtpServer.h (default 21, 50009 for PASV)
  131.  
  132. // ------------------------------ if TERMINAL == 1 Serial.begin ----------------------------------- //
  133.  
  134. #if TERMINAL
  135. Serial.begin(57600);
  136. #endif
  137.  
  138. // ------------------------------------------------------------------------------------------------ //
  139.  
  140. WiFi.begin(ssid, password); // WiFi start connection
  141.  
  142. // ------------------------------------------------------------------------------------------------ //
  143.  
  144. while ( WiFi.status() != WL_CONNECTED ) // czekaj na połączenie
  145. { // wait for connect
  146. delay ( 200 ); // safe mode
  147. #if TERMINAL
  148. Serial.print ( "." ); // print dot / drukuj .
  149. #endif
  150. }
  151. // ------------------------------------------------------------------------------------------------ //
  152.  
  153. #if TERMINAL
  154. Serial.printf("\n[ESP] [SETUP] POLACZONO z WIFI ");
  155. Serial.printf("\n[ESP] [Memory Free] : %u [kB]", ESP.getFreeHeap());
  156. Serial.printf("\n[ESP] [CPU frequency] : %u [MHz]",ESP.getCpuFreqMHz());
  157. Serial.println(WiFi.localIP() );
  158. #endif
  159.  
  160. P.begin(); // Parola (P) begin
  161.  
  162. M.Setup(); // Matryca (Parola) Setup
  163.  
  164. // ------------------------------------------------------------------------------------------------ //
  165. // R U N M Y T H R E A D N O W - U R U C H O M Z A D A N I A Z S E T U P //
  166. // ------------------------------------------------------------------------------------------------ //
  167.  
  168. runner.init(); // inicjalizuj scheluder
  169.  
  170. runner.addTask(task_0); // dodaj zadanie do scheluder
  171. task_0.enable(); // włącz zadanie do scheluder
  172. runner.addTask(task_1); // dodaj zadanie do scheluder
  173. task_1.enable(); // włącz zadanie do scheluder
  174. runner.addTask(task_2); // dodaj zadanie do scheluder
  175. task_2.enable(); // włącz zadanie do scheluder
  176. runner.addTask(task_3); // dodaj zadanie do scheluder
  177. task_3.enable(); // włącz zadanie do scheluder
  178.  
  179. TaskSetup();
  180.  
  181.  
  182. }
  183.  
  184. // --- END SETUP ------------------------------------------------------------------------------------ //
  185. //
  186. //
  187. //
  188. //
  189. //
  190. //
  191. //
  192. //
  193. // -------------------------------------------------------------------------------------------------- //
  194. // --- L O O P --- // <--- L O O P
  195. // -------------------------------------------------------------------------------------------------- //
  196.  
  197. void loop(void)
  198. {
  199.  
  200. runner.execute(); // HARMONOGRAM zadań RUNNER
  201. //ftpSrv.handleFTP();
  202. TaskLoop(); // GŁÓWNY LOOP ZADAŃ
  203. }
  204.  
  205. // E N D L O O P ---------------------------------------------------------------------------------- //
  206. //
  207. //
  208. //
  209. //
  210. //
  211. //
  212. //
  213. //
  214. // ================================================================================================== //
  215. // === TaskLoop - Główny Przełącznik Zadań =================================================== // <- TASK LOOP
  216. // ================================================================================================== //
  217.  
  218. void TaskLoop()
  219. {
  220. switch(czas.Minuta)
  221. {
  222. case 0: Flaga_PokazCzas = false; TaskSwitcher00(); break;
  223. case 1: Flaga_PokazCzas = false; TaskSwitcher01(); break; // TaskSwitcher 01 run
  224. case 2: Flaga_PokazCzas = false; TaskSwitcher02(); break; // TaskSwitcher 02 run
  225. case 3: Flaga_PokazCzas = false; TaskSwitcher03(); break; // TaskSwitcher 03 run
  226. case 4: Flaga_PokazCzas = false; TaskSwitcher04(); break; // TaskSwitcher 04 run
  227. case 5: Flaga_PokazCzas = true; break; // zegar
  228. case 6: Flaga_PokazCzas = true; break; // zegar
  229. case 7: Flaga_PokazCzas = true; break; // zegar
  230. case 8: Flaga_PokazCzas = true; break; // zegar
  231. case 9: Flaga_PokazCzas = true; break; // zegar
  232. case 10: Flaga_PokazCzas = true; break; // zegar
  233. case 11: Flaga_PokazCzas = false; TaskSwitcher11(); break; // TaskSwitcher 11 run
  234. case 12: Flaga_PokazCzas = true; break; // zegar
  235. case 13: Flaga_PokazCzas = true; break; // zegar
  236. case 14: Flaga_PokazCzas = true; break; // zegar
  237. case 15: Flaga_PokazCzas = false; TaskSwitcher15(); break; // TaskSwitcher 15 run
  238. case 16: Flaga_PokazCzas = true; break; // zegar
  239. case 17: Flaga_PokazCzas = false; TaskSwitcher17(); break; // TaskSwitcher 17 run
  240. case 18: Flaga_PokazCzas = true; break; // zegar
  241. case 19: Flaga_PokazCzas = true; break; // zegar
  242. case 20: Flaga_PokazCzas = false; TaskSwitcher20(); break; // TaskSwitcher 20 run
  243. case 21: Flaga_PokazCzas = false; TaskSwitcher21(); break; // TaskSwitcher 21 run
  244. case 22: Flaga_PokazCzas = true; break; // zegar
  245. case 23: Flaga_PokazCzas = false; TaskSwitcher23(); break; // TaskSwitcher 23 run
  246. case 24: Flaga_PokazCzas = true; break; // zegar
  247. case 25: Flaga_PokazCzas = false; TaskSwitcher25(); break; // TaskSwitcher 25 run
  248. case 26: Flaga_PokazCzas = true; break; // zegar
  249. case 27: Flaga_PokazCzas = false; TaskSwitcher27(); break; // TaskSwitcher 27 run
  250. case 28: Flaga_PokazCzas = true; break; // zegar
  251. case 29: Flaga_PokazCzas = true; break; // zegar
  252. case 30: Flaga_PokazCzas = false; TaskSwitcher30(); break; // TaskSwitcher 30 run
  253. case 31: Flaga_PokazCzas = false; TaskSwitcher31(); break; // TaskSwitcher 31 run
  254. case 32: Flaga_PokazCzas = true; break; // zegar
  255. case 33: Flaga_PokazCzas = true; break; // zegar
  256. case 34: Flaga_PokazCzas = true; break; // zegar
  257. case 35: Flaga_PokazCzas = false; TaskSwitcher35(); break; // TaskSwitcher 35 run (szkoła 11:35)
  258. case 36: Flaga_PokazCzas = true; break; // zegar
  259. case 37: Flaga_PokazCzas = true; break; // zegar
  260. case 38: Flaga_PokazCzas = true; break; // zegar
  261. case 39: Flaga_PokazCzas = true; break; // zegar
  262. case 40: Flaga_PokazCzas = false; TaskSwitcher40(); break; // TaskSwitcher 40 run (szkoła 11:40)
  263. case 41: Flaga_PokazCzas = true; break; // zegar
  264. case 42: Flaga_PokazCzas = true; break; // zegar
  265. case 43: Flaga_PokazCzas = true; break; // zegar
  266. case 44: Flaga_PokazCzas = true; break; // zegar
  267. case 45: Flaga_PokazCzas = false; TaskSwitcher45(); break; // TaskSwitcher 45 run (szkoła 10:45, 12:45)
  268. case 46: Flaga_PokazCzas = true; break; // zegar
  269. case 47: Flaga_PokazCzas = true; break; // zegar
  270. case 48: Flaga_PokazCzas = false; TaskSwitcher48(); break; // TaskSwitcher 48 run
  271. case 49: Flaga_PokazCzas = true; break; // zegar
  272. case 50: Flaga_PokazCzas = false; TaskSwitcher50(); break; // TaskSwitcher 50 run (szkoła 9:50)
  273. case 51: Flaga_PokazCzas = true; break; // zegar
  274. case 52: Flaga_PokazCzas = true; break; // zegar
  275. case 53: Flaga_PokazCzas = true; break; // zegar
  276. case 54: Flaga_PokazCzas = true; break; // zegar
  277. case 55: Flaga_PokazCzas = false; TaskSwitcher55(); break; // TaskSwitcher 55 run (szkoła 8:55)
  278. case 56: Flaga_PokazCzas = true; break; // zegar
  279. case 57: Flaga_PokazCzas = false; TaskSwitcher57(); break; // TaskSwitcher 57 run
  280. case 58: Flaga_PokazCzas = false; TaskSwitcher58(); break; // TaskSwitcher 58 run
  281. case 59: Flaga_PokazCzas = true; break; // zegar
  282. dafault : Flaga_PokazCzas = true; break; // zegar
  283. }
  284. }
  285.  
  286. // ================================================================================================== //
  287. // === TaskSetup - wykonywane z SETUP ======================================================= // <- TASK SETUP
  288. // ================================================================================================== //
  289.  
  290. void TaskSetup()
  291. {
  292. Task0Callback();
  293. Task1Callback();
  294. Task2Callback();
  295. Task3Callback();
  296. }
  297.  
  298. // ================================================================================================== //
  299. // === TASK0 - wykonywane co 1 godzinę ====================================================== // <- TASK 0
  300. // ================================================================================================== //
  301.  
  302. void Task0Callback()
  303. {
  304. WeatherUpdate(); // aktualizuj dane pogodowe
  305. M.Dane2Bufor(); // buduj bufory dla MATRYCY
  306. }
  307.  
  308. // ================================================================================================== //
  309. // === TASK1 - wykonywane co 3 godziny ====================================================== // <- TASK 1
  310. // ================================================================================================== //
  311.  
  312. void Task1Callback()
  313. {
  314. DateUpdate(); // aktualizuj datę z serwera
  315. M.Czas2Bufor(); // buduj bufory czasu
  316. M.Data2Bufor(); // buduj bufory dla MATRYCY
  317.  
  318. if ( indx_temp < 24 ) backup_temperatura[indx_temp++] = pogoda.temperatura; // zapisz temperaturę do tablicy
  319. else indx_temp = 0; // resetuj licznik
  320.  
  321. double srednia = 0;
  322.  
  323.  
  324. for(byte index = 0; index < indx_temp; index ++ ) srednia += backup_temperatura[index];
  325.  
  326. char temp[10];
  327. sprintf(temp, "%.2f", srednia / (indx_temp) );
  328.  
  329. tools.PokazWiadomosc("ESP","Temperatura Srednia",temp);
  330.  
  331. String record = "[" + czas.SformatowanaData + "][" + czas.SformatowanyCzas
  332. + "][Temp: " + String(pogoda.temperatura) +"][Temp Średnia: " + String(temp) + "]";
  333.  
  334. myLog.append(record.c_str());
  335.  
  336.  
  337. }
  338.  
  339. // ================================================================================================== //
  340. // === TASK2 - wykonywane co 1 minutę ========================================================= // <- TASK 2
  341. // ================================================================================================== //
  342.  
  343. void Task2Callback()
  344. {
  345. M.Czas2Bufor(); // buduj bufory czasu
  346. M.System2Bufor(); // buduj bufory systemu
  347.  
  348. #if TERMINAL
  349. Serial.printf("\n[ESP] [Memory Free] : %u [kB]", ESP.getFreeHeap());
  350. #endif
  351. }
  352.  
  353. // ================================================================================================== //
  354. // === TASK3 - wykonywane co 1 sekundę ====================================================== // <- TASK 3
  355. // ================================================================================================== //
  356.  
  357. void Task3Callback()
  358. {
  359. TimeUpdate(); // aktualizuj czas i synchronizuj
  360. if(Flaga_PokazCzas) M.PokazCzas_Typ1(); // pokaż duży zegar na matrycy
  361. }
  362.  
  363. // ================================================================================================== //
  364. // //
  365. // F U N K C J E H A R M O N O G R A M U Z A D A Ń C Z A S O W Y C H //
  366. // //
  367. // ================================================================================================== //
  368. // === TASK - wykonywane w 00 minucie ===================================================== // <- TASK SWITCHER 00
  369. // ================================================================================================== //
  370.  
  371. void TaskSwitcher00()
  372. {
  373. // ----------------------------------------------------------------------------//
  374. // 0 8 : 0 0
  375. // ----------------------------------------------------------------------------//
  376.  
  377. if(czas.Godzina == 8)
  378. {
  379. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  380.  
  381. switch( czas.DzienTygodnia ) // wykonywane o godz: 8 : 00
  382. {
  383. case 0: M.ShowSundayMsg(); break; // niedziela 08:00
  384. case 1: M.WyswietlPogode(); break; // poniedzialek 08:00
  385. case 2: M.WyswietlPogode(); break; // wtorek 08:00
  386. case 3: M.ShowLesson("Przyroda"); break; // sroda 08:00
  387. case 4: M.WyswietlPogode(); break; // czwartek 08:00
  388. case 5: M.ShowLesson("W-f"); break; // piatek 08:00
  389. case 6: M.ShowSaturdayMsg(); break; // sobota 08:00
  390. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  391. }
  392. }
  393. }
  394.  
  395. // ================================================================================================== //
  396. // === TASK - wykonywane w 1 minucie ====================================================== // <- TASK SWITCHER 1
  397. // ================================================================================================== //
  398.  
  399. void TaskSwitcher01()
  400. {
  401. M.WyswietlPogode(); // wyświetl na Matrycy dane pogodowe
  402. }
  403.  
  404. // ================================================================================================== //
  405. // === TASK - wykonywane w 2 minucie ====================================================== // <- TASK SWITCHER 2
  406. // ================================================================================================== //
  407.  
  408. void TaskSwitcher02()
  409. {
  410. M.WyswietlSystem(); // wyświetl na Matrycy zasoby system
  411. }
  412.  
  413. // ================================================================================================== //
  414. // === TASK - wykonywane w 3 minucie ====================================================== // <- TASK SWITCHER 3
  415. // ================================================================================================== //
  416.  
  417. void TaskSwitcher03()
  418. {
  419. M.SpriteDemo(); // wyświetl na Matrycy DEMO SPRITE
  420. }
  421.  
  422. // ================================================================================================== //
  423. // === TASK - wykonywane w 4 minucie ====================================================== // <- TASK SWITCHER 4
  424. // ================================================================================================== //
  425.  
  426. void TaskSwitcher04()
  427. {
  428. M.EffectDemo(); // wyświetl na Matrycy DEMO EFFECT
  429. }
  430.  
  431. // ================================================================================================== //
  432. // === TASK - wykonywane w 11 minucie ===================================================== // <- TASK SWITCHER 11
  433. // ================================================================================================== //
  434.  
  435. void TaskSwitcher11()
  436. {
  437. M.WyswietlPogode(); // wyświetl na Matrycy dane pogodowe
  438. }
  439.  
  440. // ================================================================================================== //
  441. // === TASK - wykonywane w 15 minucie ===================================================== // <- TASK SWITCHER 15
  442. // ================================================================================================== //
  443.  
  444. void TaskSwitcher15()
  445. {
  446. M.ShowDayMsg();
  447. }
  448.  
  449. // ================================================================================================== //
  450. // === TASK - wykonywane w 17 minucie ===================================================== // <- TASK SWITCHER 17
  451. // ================================================================================================== //
  452.  
  453. void TaskSwitcher17()
  454. {
  455. M.ShowDayMsg();
  456. }
  457.  
  458. // ================================================================================================== //
  459. // === TASK - wykonywane w 20 minucie ===================================================== // <- TASK SWITCHER 20
  460. // ================================================================================================== //
  461.  
  462. void TaskSwitcher20()
  463. {
  464. // ----------------------------------------------------------------------------//
  465. // 1 2 : 2 0 LEKCJA skonczy się za 5 minut PRZYPOMNIJ
  466. // ----------------------------------------------------------------------------//
  467.  
  468. if(czas.Godzina == 12)
  469. {
  470. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  471.  
  472. switch( czas.DzienTygodnia ) // wykonywane o godz: 12 : 20
  473. {
  474. case 0: M.ShowSundayMsg(); break; // niedziela 12 : 20
  475. case 1: M.ShowReminderLesson("Za 5 minut konczy sie W-F"); break; // poniedzialek 12 : 20
  476. case 2: M.ShowReminderLesson("Za 5 minut konczy sie Polski"); break; // wtorek 12 : 20
  477. case 3: M.ShowReminderLesson("Za 5 minut konczy sie Polski"); break; // sroda 12 : 20
  478. case 4: M.ShowReminderLesson("Za 5 minut konczy sie Informatyka"); break; // czwartek 12 : 20
  479. case 5: M.ShowReminderLesson("Za 5 minut konczy sie Przyroda"); break; // piatek 12 : 20
  480. case 6: M.ShowSaturdayMsg(); break; // sobota 12 : 20
  481. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  482. }
  483. }
  484. else Flaga_PokazCzas = true;
  485. }
  486.  
  487. // ================================================================================================== //
  488. // === TASK - wykonywane w 21 minucie ===================================================== // <- TASK SWITCHER 21
  489. // ================================================================================================== //
  490.  
  491. void TaskSwitcher21()
  492. {
  493. M.WyswietlPogode(); // wyświetl na Matrycy dane pogodowe
  494. }
  495.  
  496. // ================================================================================================== //
  497. // === TASK - wykonywane w 23 minucie ===================================================== // <- TASK SWITCHER 23
  498. // ================================================================================================== //
  499.  
  500. void TaskSwitcher23()
  501. {
  502. M.ShowDayMsg();
  503. }
  504.  
  505. // ================================================================================================== //
  506. // === TASK - wykonywane w 25 minucie ===================================================== // <- TASK SWITCHER 25
  507. // ================================================================================================== //
  508.  
  509. void TaskSwitcher25()
  510. {
  511. // ----------------------------------------------------------------------------//
  512. // 1 1 : 2 5 LEKCJA konczy się za 5 minut PRZYPOMNIJ
  513. // ----------------------------------------------------------------------------//
  514.  
  515. if(czas.Godzina == 11)
  516. {
  517. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  518.  
  519. switch( czas.DzienTygodnia ) // wykonywane o godz: 11 : 25
  520. {
  521. case 0: M.ShowSundayMsg(); break; // niedziela 11:25
  522. case 1: M.ShowReminderLesson("Za 5 minut konczy sie W-F"); break; // poniedzialek 11:25
  523. case 2: M.ShowReminderLesson("Za 5 minut konczy sie Polski"); break; // wtorek 11:25
  524. case 3: M.ShowReminderLesson("Za 5 minut konczy sie Plastyka"); break; // sroda 11:25
  525. case 4: M.ShowReminderLesson("Za 5 minut konczy sie Angielski"); break; // czwartek 11:25
  526. case 5: M.ShowReminderLesson("Za 5 minut konczy sie Polski"); break; // piatek 11:25
  527. case 6: M.ShowSaturdayMsg(); break; // sobota 11:25
  528. default : Flaga_PokazCzas = true; break;
  529. }
  530. }
  531.  
  532. // ----------------------------------------------------------------------------//
  533. // 1 3 : 2 5 LEKCJA konczy się za 5 minut PRZYPOMNIJ
  534. // ----------------------------------------------------------------------------//
  535.  
  536. else if(czas.Godzina == 13)
  537. {
  538. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  539.  
  540. switch( czas.DzienTygodnia ) // wykonywane o godz: 13: 25
  541. {
  542. case 0: M.ShowSundayMsg(); break; // niedziela 13: 25
  543. case 1: M.ShowReminderLesson("Za 5 minut konczy sie Muzyka"); break; // poniedzialek 13: 25
  544. case 2: M.ShowReminderLesson("Za 5 minut konczy sie W-F"); break; // wtorek 13: 25
  545. case 3: M.ShowReminderLesson("Za 5 minut konczy sie Angielski"); break; // sroda 13: 25
  546. case 4: M.ShowReminderLesson("Za 5 minut konczy sie WDŻ"); break; // czwartek 13: 25
  547. case 5: M.ShowReminderLesson("Za 5 minut konczy sie Religia"); break; // piatek 13: 25
  548. case 6: M.ShowSaturdayMsg(); break; // sobota 13: 25
  549. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  550. }
  551. }
  552.  
  553. // ----------------------------------------------------------------------------//
  554. // 1 4 : 2 5 LEKCJA się kończy za 5 minut
  555. // ----------------------------------------------------------------------------//
  556.  
  557. else if(czas.Godzina == 14)
  558. {
  559. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  560.  
  561. switch( czas.DzienTygodnia ) // wykonywane o godz: 14: 25
  562. {
  563. case 0: M.ShowSundayMsg(); break; // niedziela 14: 25
  564. case 1: M.WyswietlPogode(); break; // poniedzialek 14: 25
  565. case 2: M.ShowReminderLesson("Za 5 minut konczy sie Angielski");
  566. break; // wtorek 14: 25
  567. case 3: M.WyswietlPogode(); break; // sroda 14: 25
  568. case 4: M.WyswietlPogode(); break; // czwartek 14: 25
  569. case 5: M.WyswietlPogode(); break; // piatek 14: 25
  570. case 6: M.ShowSaturdayMsg(); break; // sobota 14: 25
  571. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  572. }
  573. }
  574.  
  575. else Flaga_PokazCzas = true;
  576. }
  577.  
  578. // ================================================================================================== //
  579. // === TASK - wykonywane w 27 minucie ===================================================== // <- TASK SWITCHER 27
  580. // ================================================================================================== //
  581.  
  582. void TaskSwitcher27()
  583. {
  584. M.ShowDayMsg();
  585. }
  586.  
  587. // ================================================================================================== //
  588. // === TASK - wykonywane w 30 minucie ===================================================== // <- TASK SWITCHER 30
  589. // ================================================================================================== //
  590.  
  591. void TaskSwitcher30()
  592. {
  593. // ----------------------------------------------------------------------------//
  594. // 1 0 : 3 0 PRZYPOMNIJ O zblizajacym sie koncu LEKCJI
  595. // ----------------------------------------------------------------------------//
  596.  
  597. if(czas.Godzina == 10)
  598. {
  599. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  600.  
  601. switch( czas.DzienTygodnia ) // wykonywane o godz: 10 : 30
  602. {
  603. case 0: M.ShowSundayMsg(); break; // niedziela 10 : 30
  604. case 1: M.ShowReminderLesson("Za 5 minut konczy sie Technika"); break; // poniedzialek 10:30
  605. case 2: M.ShowReminderLesson("Za 5 minut konczy sie Matematyka"); break; // wtorek 10 : 30
  606. case 3: M.ShowReminderLesson("Za 5 minut konczy sie Matematyka"); break; // sroda 10 : 30
  607. case 4: M.ShowReminderLesson("Za 5 minut konczy sie Religia"); break; // czwartek 10 : 30
  608. case 5: M.ShowReminderLesson("Za 5 minut konczy sie Godzina Wychowawcza."); break; // piatek 10 : 30
  609. case 6: M.ShowSaturdayMsg(); break; // sobota 10 : 30
  610. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  611. }
  612. }
  613.  
  614. else Flaga_PokazCzas = true;
  615. }
  616.  
  617. // ================================================================================================== //
  618. // === TASK - wykonywane w 31 minucie ===================================================== // <- TASK SWITCHER 31
  619. // ================================================================================================== //
  620.  
  621. void TaskSwitcher31()
  622. {
  623. M.WyswietlPogode(); // wyświetl na Matrycy dane pogodowe
  624. }
  625.  
  626. // ================================================================================================== //
  627. // === TASK - wykonywane w 35 minucie ===================================================== // <- TASK SWITCHER 35
  628. // ================================================================================================== //
  629.  
  630. void TaskSwitcher35()
  631. {
  632.  
  633. // ----------------------------------------------------------------------------//
  634. // 0 9 : 3 5 LEKCJA KOŃCZY SIĘ za 5 MINUT
  635. // ----------------------------------------------------------------------------//
  636.  
  637. if(czas.Godzina == 9)
  638. {
  639. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  640.  
  641. switch( czas.DzienTygodnia ) // wykonywane o godz: 09 : 35
  642. {
  643. case 0: M.ShowSundayMsg(); break; // niedziela 09 : 35
  644. case 1: M.ShowReminderLesson("Za 5 minut konczy sie Matematyka"); break; // poniedzialek 09 : 35
  645. case 2: M.ShowLesson("masz 15 min przerwy"); break; // wtorek 09 : 35
  646. case 3: M.ShowReminderLesson("Za 5 minut konczy sie Historia"); break; // sroda 09 : 35
  647. case 4: M.ShowReminderLesson("Za 5 minut konczy sie Jezyk Polski"); break; // czwartek 09 : 35
  648. case 5: M.ShowReminderLesson("Za 5 minut konczy sie Matematyka"); break; // piatek 09 : 35
  649. case 6: M.ShowSaturdayMsg(); break; // sobota 09 : 35
  650. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  651. }
  652. }
  653.  
  654. // ----------------------------------------------------------------------------//
  655. // 1 1 : 3 5 LEKCJA zacznie się za 5 minut PRZYPOMNIJ
  656. // ----------------------------------------------------------------------------//
  657.  
  658. else if(czas.Godzina == 11)
  659. {
  660. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  661.  
  662. switch( czas.DzienTygodnia ) // wykonywane o godz: 11 : 35
  663. {
  664. case 0: M.ShowSundayMsg(); break; // niedziela 11:35
  665. case 1: M.ShowReminderLesson("Za 5 minut zaczyna sie W-F"); break; // poniedzialek 11:35
  666. case 2: M.ShowReminderLesson("Za 5 minut zaczyna sie Polski"); break; // wtorek 11:35
  667. case 3: M.ShowReminderLesson("Za 5 minut zaczyna sie Polski"); break; // sroda 11:35
  668. case 4: M.ShowReminderLesson("Za 5 minut zaczyna sie Informatyka"); break; // czwartek 11:35
  669. case 5: M.ShowReminderLesson("Za 5 minut zaczyna sie Przyroda"); break; // piatek 11:35
  670. case 6: M.ShowSaturdayMsg(); break; // sobota 11:35
  671. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  672. }
  673. }
  674.  
  675. else Flaga_PokazCzas = true;
  676. }
  677. // ================================================================================================== //
  678. // === TASK - wykonywane w 40 minucie ===================================================== // <- TASK SWITCHER 40
  679. // ================================================================================================== //
  680.  
  681. void TaskSwitcher40()
  682. {
  683.  
  684. // ----------------------------------------------------------------------------//
  685. // 0 8 : 4 0 za 5 minut koniec lekcji
  686. // ----------------------------------------------------------------------------//
  687.  
  688. if(czas.Godzina == 8)
  689. {
  690. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  691.  
  692. switch( czas.DzienTygodnia ) // wykonywane o godz: 8 : 40
  693. {
  694. case 0: M.ShowSundayMsg(); break; // niedziela 08:40
  695. case 1: M.WyswietlPogode(); break; // poniedzialek 08:40
  696. case 2: M.WyswietlPogode(); break; // wtorek 08:40
  697. case 3: M.ShowReminderLesson("Za 5 minut konczy sie Przyroda"); break; // sroda 08:40
  698. case 4: M.WyswietlPogode(); break; // czwartek 08:40
  699. case 5: M.ShowReminderLesson("Za 5 minut konczy sie W-f"); break; // piatek 08:40
  700. case 6: M.ShowSaturdayMsg(); break; // sobota 08:40
  701. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  702. }
  703. }
  704.  
  705. // ----------------------------------------------------------------------------//
  706. // 1 0 : 4 0 LEKCJA zacznie się za 5 minut PRZYPOMNIJ
  707. // ----------------------------------------------------------------------------//
  708.  
  709. else if(czas.Godzina == 10)
  710. {
  711. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  712.  
  713. switch( czas.DzienTygodnia ) // wykonywane o godz: 10 : 40
  714. {
  715. case 0: M.ShowSundayMsg(); break; // niedziela 10:40
  716. case 1: M.ShowReminderLesson("Za 5 minut zaczyna sie W-F"); break; // poniedzialek 10:40
  717. case 2: M.ShowReminderLesson("Za 5 minut zaczyna sie Polski"); break; // wtorek 10:40
  718. case 3: M.ShowReminderLesson("Za 5 minut zaczyna sie Plastyka"); break; // sroda 10:40
  719. case 4: M.ShowReminderLesson("Za 5 minut zaczyna sie Angielski"); break; // czwartek 10:40
  720. case 5: M.ShowReminderLesson("Za 5 minut zaczyna sie Polski"); break; // piatek 10:40
  721. case 6: M.ShowSaturdayMsg(); break; // sobota 10:40
  722. default : Flaga_PokazCzas = true; break;
  723. }
  724. }
  725.  
  726. // ----------------------------------------------------------------------------//
  727. // 1 1 : 4 0 LEKCJA SIE ROZPOCZĘŁA
  728. // ----------------------------------------------------------------------------//
  729.  
  730. else if(czas.Godzina == 11)
  731. {
  732. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  733.  
  734. switch( czas.DzienTygodnia ) // wykonywane o godz: 8 : 55
  735. {
  736. case 0: M.ShowSundayMsg(); break; // niedziela 11:40
  737. case 1: M.ShowLesson("W-F"); break; // poniedzialek 11:40
  738. case 2: M.ShowLesson("Polski"); break; // wtorek 11:40
  739. case 3: M.ShowLesson("Polski"); break; // sroda 11:40
  740. case 4: M.ShowLesson("Informatyka"); break; // czwartek 11:40
  741. case 5: M.ShowLesson("Przyroda"); break; // piatek 11:40
  742. case 6: M.ShowSaturdayMsg(); break; // sobota 11:40
  743. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  744. }
  745. }
  746.  
  747. // ----------------------------------------------------------------------------//
  748. // 1 2 : 4 0 PRZYPOMNIJ O LEKCJI
  749. // ----------------------------------------------------------------------------//
  750.  
  751. else if(czas.Godzina == 12)
  752. {
  753. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  754.  
  755. switch( czas.DzienTygodnia ) // wykonywane o godz: 12: 40
  756. {
  757. case 0: M.ShowSundayMsg(); break; // niedziela 12:40
  758. case 1: M.ShowReminderLesson("Za 5 minut zaczyna sie Muzyka"); break; // poniedzialek 12:40
  759. case 2: M.ShowReminderLesson("Za 5 minut zaczyna sie W-F"); break; // wtorek 12:40
  760. case 3: M.ShowReminderLesson("Za 5 minut zaczyna sie Angielski"); break; // sroda 12:40
  761. case 4: M.ShowReminderLesson("Za 5 minut zaczyna sie WDŻ"); break; // czwartek 12:40
  762. case 5: M.ShowReminderLesson("Za 5 minut zaczyna sie Religia"); break; // piatek 12:40
  763. case 6: M.ShowSaturdayMsg(); break; // sobota 12:40
  764. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  765. }
  766. }
  767.  
  768. // ----------------------------------------------------------------------------//
  769. // 1 3 : 4 0 PRZYPOMNIJ O LEKCJI
  770. // ----------------------------------------------------------------------------//
  771.  
  772. else if(czas.Godzina == 13)
  773. {
  774. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  775.  
  776. switch( czas.DzienTygodnia ) // wykonywane o godz: 13: 55
  777. {
  778. case 0: M.ShowSundayMsg(); break; // niedziela 13:40
  779. case 1: M.WyswietlPogode(); break; // poniedzialek 13:40
  780. case 2: M.ShowReminderLesson("Za 5 minut zaczyna sie Angielski"); break; // wtorek 13:40
  781. case 3: M.WyswietlPogode(); break; // sroda 13:40
  782. case 4: M.WyswietlPogode(); break; // czwartek 13:40
  783. case 5: M.WyswietlPogode(); break; // piatek 13:40
  784. case 6: M.ShowSaturdayMsg(); break; // sobota 13:40
  785. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  786. }
  787. }
  788.  
  789. else Flaga_PokazCzas = true;
  790. }
  791.  
  792. // ================================================================================================== //
  793. // === TASK - wykonywane w 45 minucie ===================================================== // <- TASK SWITCHER 45
  794. // ================================================================================================== //
  795.  
  796. void TaskSwitcher45()
  797. {
  798. // ----------------------------------------------------------------------------//
  799. // 0 9 : 4 5 PRZYPOMNIJ O LEKCJI
  800. // ----------------------------------------------------------------------------//
  801.  
  802. if(czas.Godzina == 9)
  803. {
  804. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  805.  
  806. switch( czas.DzienTygodnia ) // wykonywane o godz: 9 : 45
  807. {
  808. case 0: M.ShowSundayMsg(); break; // niedziela 9:45
  809. case 1: M.ShowReminderLesson("Za 5 minut zaczyna sie Technika"); break; // poniedzialek 9:45
  810. case 2: M.ShowReminderLesson("Za 5 minut zaczyna sie Matematyka"); break; // wtorek 9:45
  811. case 3: M.ShowReminderLesson("Za 5 minut zaczyna sie Matematyka"); break; // sroda 9:45
  812. case 4: M.ShowReminderLesson("Za 5 minut zaczyna sie Religia"); break; // czwartek 9:45
  813. case 5: M.ShowReminderLesson("Za 5 minut zaczyna sie Godzina Wychowawcza."); break; // piatek 9:45
  814. case 6: M.ShowSaturdayMsg(); break; // sobota 9:45
  815. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  816. }
  817. }
  818.  
  819. // ----------------------------------------------------------------------------//
  820. // 1 0 : 4 5 LEKCJA SIE ZACZĘŁA
  821. // ----------------------------------------------------------------------------//
  822.  
  823. else if(czas.Godzina == 10)
  824. {
  825. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  826.  
  827. switch( czas.DzienTygodnia ) // wykonywane o godz: 10 : 45
  828. {
  829. case 0: M.ShowSundayMsg(); break; // niedziela 10:45
  830. case 1: M.ShowLesson("W-F"); break; // poniedzialek 10:45
  831. case 2: M.ShowLesson("Polski"); break; // wtorek 10:45
  832. case 3: M.ShowLesson("Plastyka"); break; // sroda 10:45
  833. case 4: M.ShowLesson("Angielski"); break; // czwartek 10:45
  834. case 5: M.ShowLesson("Polski"); break; // piatek 10:45
  835. case 6: M.ShowSaturdayMsg(); break; // sobota 10:45
  836. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  837. }
  838. }
  839.  
  840. // ----------------------------------------------------------------------------//
  841. // 1 2 : 4 5 LEKCJA SIĘ ZACZĘŁA
  842. // ----------------------------------------------------------------------------//
  843.  
  844. else if(czas.Godzina == 12)
  845. {
  846. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  847.  
  848. switch( czas.DzienTygodnia ) // wykonywane o godz: 12: 45
  849. {
  850. case 0: M.ShowSundayMsg(); break; // niedziela 12:45
  851. case 1: M.ShowLesson("Muzyka"); break; // poniedzialek 12:45
  852. case 2: M.ShowLesson("W-F"); break; // wtorek 12:45
  853. case 3: M.ShowLesson("Angielski"); break; // sroda 12:45
  854. case 4: M.ShowLesson("WDŻ"); break; // czwartek 12:45
  855. case 5: M.ShowLesson("Religia"); break; // piatek 12:45
  856. case 6: M.ShowSaturdayMsg(); break; // sobota 12:45
  857. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  858. }
  859. }
  860.  
  861. // ----------------------------------------------------------------------------//
  862. // 1 3 : 4 5 LEKCJA SIĘ ZACZĘŁA
  863. // ----------------------------------------------------------------------------//
  864.  
  865. else if(czas.Godzina == 13)
  866. {
  867. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  868.  
  869. switch( czas.DzienTygodnia ) // wykonywane o godz: 13: 55
  870. {
  871. case 0: M.ShowSundayMsg(); break; // niedziela 13:45
  872. case 1: M.WyswietlPogode(); break; // poniedzialek 13:45
  873. case 2: M.ShowLesson("Angielski"); break; // wtorek 13:45
  874. case 3: M.WyswietlPogode(); break; // sroda 13:45
  875. case 4: M.WyswietlPogode(); break; // czwartek 13:45
  876. case 5: M.WyswietlPogode(); break; // piatek 13:45
  877. case 6: M.ShowSaturdayMsg(); break; // sobota 13:45
  878. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  879. }
  880. }
  881.  
  882. else Flaga_PokazCzas = true;
  883. }
  884.  
  885. // ================================================================================================== //
  886. // === TASK - wykonywane w 48 minucie ===================================================== // <- TASK SWITCHER 48
  887. // ================================================================================================== //
  888.  
  889. void TaskSwitcher48()
  890. {
  891. M.WyswietlPogode(); // wyświetl na Matrycy dane pogodowe
  892. }
  893.  
  894. // ================================================================================================== //
  895. // === TASK - wykonywane w 50 minucie ====================================================== // <- TASK SWITCHER 50
  896. // ================================================================================================== //
  897.  
  898. void TaskSwitcher50()
  899. {
  900.  
  901. // ----------------------------------------------------------------------------//
  902. // 0 8 : 5 0 PRZYPOMNIJ O LEKCJI 5MIN PRZED
  903. // ----------------------------------------------------------------------------//
  904.  
  905. if(czas.Godzina == 8)
  906. {
  907. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  908.  
  909. switch( czas.DzienTygodnia ) // wykonywane o godz: 8 : 55
  910. {
  911. case 0: M.ShowSundayMsg(); break; // niedziela 8:50
  912. case 1: M.ShowReminderLesson("Za 5 minut zaczyna sie Matematyka"); break; // poniedzialek 8:50
  913. case 2: M.ShowReminderLesson("Za 1 godzine zaczyna sie Matematyka"); break; // wtorek 8:50
  914. case 3: M.ShowReminderLesson("Za 5 minut zaczyna sie Przyroda"); break; // sroda 8:50
  915. case 4: M.ShowReminderLesson("Za 5 minut zaczyna sie Jezyk Polski"); break; // czwartek 8:50
  916. case 5: M.ShowReminderLesson("Za 5 minut zaczyna sie Matematyka"); break; // piatek 8:50
  917. case 6: M.ShowSaturdayMsg(); break; // sobota 8:50
  918. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  919. }
  920. }
  921.  
  922. // ----------------------------------------------------------------------------//
  923. // 0 9 : 5 0 LEKCJA SIĘ ZACZĘŁA
  924. // ----------------------------------------------------------------------------//
  925.  
  926. else if(czas.Godzina == 9)
  927. {
  928. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  929.  
  930. switch( czas.DzienTygodnia ) // wykonywane o godz: 9 : 50
  931. {
  932. case 0: M.ShowSundayMsg(); break; // niedziela 9:50
  933. case 1: M.ShowLesson("Technika"); break; // poniedzialek 9:50
  934. case 2: M.ShowLesson("Matematyka"); break; // wtorek 9:50
  935. case 3: M.ShowLesson("Matematyka"); break; // sroda 9:50
  936. case 4: M.ShowLesson("Religia"); break; // czwartek 9:50
  937. case 5: M.ShowLesson("Godz. Wych."); break; // piatek 9:50
  938. case 6: M.ShowSaturdayMsg(); break; // sobota 9:50
  939. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  940. }
  941. }
  942.  
  943. else Flaga_PokazCzas = true;
  944. }
  945.  
  946. // ================================================================================================== //
  947. // === TASK - wykonywane w 55 minucie ====================================================== // <- TASK SWITCHER 55
  948. // ================================================================================================== //
  949.  
  950. void TaskSwitcher55()
  951. {
  952.  
  953. // ----------------------------------------------------------------------------//
  954. // 0 7 : 5 5 PRZYPOMNIJ O LEKCJI 5 min PRZED
  955. // ----------------------------------------------------------------------------//
  956.  
  957. if(czas.Godzina == 8)
  958. {
  959. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  960.  
  961. switch( czas.DzienTygodnia ) // wykonywane o godz: 07:55
  962. {
  963. case 0: M.ShowSundayMsg(); break; // niedziela 07:55
  964. case 1: M.WyswietlPogode(); break; // poniedzialek 07:55
  965. case 2: M.WyswietlPogode(); break; // wtorek 07:55
  966. case 3: M.ShowReminderLesson("Za 5 minut zaczyna sie Przyroda");
  967. break; // sroda 07:55
  968. case 4: M.WyswietlPogode(); break; // czwartek 07:55
  969. case 5: M.ShowReminderLesson("Za 5 minut zaczyna sie W-f");
  970. break; // piatek 07:55
  971. case 6: M.ShowSaturdayMsg(); break; // sobota 07:55
  972. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  973. }
  974. }
  975.  
  976. // ----------------------------------------------------------------------------//
  977. // 0 8 : 5 5 LEKCJA SIĘ ZACZĘŁA
  978. // ----------------------------------------------------------------------------//
  979.  
  980. else if(czas.Godzina == 8)
  981. {
  982. Flaga_PokazCzas = false; // wyłącz zegar główny na Matrycy
  983.  
  984. switch( czas.DzienTygodnia ) // wykonywane o godz: 8 : 55
  985. {
  986. case 0: M.ShowSundayMsg(); break; // niedziela 8:55
  987. case 1: M.ShowLesson("Matematyka"); break; // poniedzialek 8:55
  988. case 2: M.ShowLesson("masz 55 min"); break; // wtorek 8:55
  989. case 3: M.ShowLesson("Historia"); break; // sroda 8:55
  990. case 4: M.ShowLesson("Jezyk Polski"); break; // czwartek 8:55
  991. case 5: M.ShowLesson("Matematyka"); break; // piatek 8:55
  992. case 6: M.ShowSaturdayMsg(); break; // sobota 8:55
  993. default : Flaga_PokazCzas = true; break; // domyślnie, aczkolwiek nie spełnione
  994. }
  995. }
  996.  
  997. else Flaga_PokazCzas = true;
  998. }
  999.  
  1000. // ================================================================================================== //
  1001. // === TASK - wykonywane w 58 minucie ===================================================== // <- TASK SWITCHER 58
  1002. // ================================================================================================== //
  1003.  
  1004. void TaskSwitcher57()
  1005. {
  1006. M.RandomDemo(); // wyświetl na Matrycy dane pogodowe
  1007. }
  1008.  
  1009. // ================================================================================================== //
  1010. // === TASK - wykonywane w 58 minucie ===================================================== // <- TASK SWITCHER 58
  1011. // ================================================================================================== //
  1012.  
  1013. void TaskSwitcher58()
  1014. {
  1015. M.WyswietlPogode(); // wyświetl na Matrycy dane pogodowe
  1016. }
  1017.  
  1018.  
  1019. // ================================================================================================== //
  1020. //
  1021. //
  1022. //
  1023. //
  1024. //
  1025. //
  1026. //
  1027. //
  1028. //
  1029. // -------------------------------------------------------------------------------------------------- //
  1030. // --- D A T A U P D A T E --- //
  1031. // -------------------------------------------------------------------------------------------------- //
  1032. // --- aktualizuj datę z serwera : pool.ntp.org ----------------------------------------------------- // <--- aktualizacja daty z serwera NTP
  1033. // -------------------------------------------------------------------------------------------------- //
  1034.  
  1035. void DateUpdate()
  1036. {
  1037. timeClient.update();
  1038. unsigned long epochTime = timeClient.getEpochTime();
  1039. struct tm *ptm = gmtime ((time_t *)&epochTime);
  1040.  
  1041. czas.SformatowanaData = timeClient.getFormattedTime();
  1042. czas.DzienTygodnia = timeClient.getDay();
  1043. czas.DzienMiesiaca = ptm->tm_mday;
  1044. czas.Miesiac = ptm->tm_mon+1;
  1045. czas.Rok = ptm->tm_year+1900;
  1046.  
  1047. #if TERMINAL
  1048. tools.PokazWiadomosc("ESP","Data","Pobrano datę z serwera ntp");
  1049. #endif
  1050.  
  1051. }
  1052.  
  1053. // -------------------------------------------------------------------------------------------------- //
  1054. // --- T I M E U P D A T E --- //
  1055. // -------------------------------------------------------------------------------------------------- //
  1056. // --- aktualizuj czas z serwera : pool.ntp.org ----------------------------------------------------- // <--- aktualizacja czasu z serwera NTP
  1057. // -------------------------------------------------------------------------------------------------- //
  1058.  
  1059. void TimeUpdate()
  1060. {
  1061. timeClient.update();
  1062.  
  1063. czas.Godzina = timeClient.getHours(); // zapisz godzinę z serwera
  1064. czas.Minuta = timeClient.getMinutes(); // zapisz minutę z serwera
  1065. czas.Sekunda = timeClient.getSeconds(); // zapisz sekundę z serwera
  1066. }
  1067.  
  1068. // -------------------------------------------------------------------------------------------------- //
  1069. // --- W E A T H E R U P D A T E --- //
  1070. // -------------------------------------------------------------------------------------------------- //
  1071. // --- aktualizuj pogode z serwera : openwearhermap.org --------------------------------------------- // <--- aktualizacja pogody z serwera OPEN
  1072. // -------------------------------------------------------------------------------------------------- //
  1073. void WeatherUpdate()
  1074. {
  1075. if(WiFi.status()== WL_CONNECTED)
  1076. {
  1077. String serverPath = "http://api.openweathermap.org/data/2.5/weather?q=" + city + ","
  1078. + countryCode + "&APPID=" + openWeatherMapApiKey;
  1079.  
  1080. jsonBuffer = httpGETRequest(serverPath.c_str());
  1081.  
  1082. #if TERMINAL
  1083. //Serial.println(jsonBuffer); // DRUKUJE CAŁY NIESPARSOWY STRING z POGODA
  1084. #endif
  1085.  
  1086. JSONVar myObject = JSON.parse(jsonBuffer);
  1087.  
  1088. if (JSON.typeof(myObject) == "undefined")
  1089. {
  1090. // -------------------------------------------- //
  1091. #if TERMINAL
  1092. Serial.println("Blad parsowania");
  1093. #endif
  1094. // -------------------------------------------- //
  1095. return;
  1096. }
  1097. // ---------------------------------------------- //
  1098. #if TERMINAL
  1099. //Serial.println(myObject);
  1100. #endif
  1101. // ------------------------------------------------------------------- //
  1102. // --- P R Z E T W A R Z A N I E D A N Y C H Z S E R W E R A --- // <--- PARSOWANIE danych z pogody
  1103. // ------------------------------------------------------------------- // <--- PARSING WEATHER ONLY
  1104.  
  1105. double Kelvin = 273.15;
  1106.  
  1107. pogoda.temperatura = myObject["main"]["temp"]; // pobieramy wartość do skruktury
  1108. pogoda.temperatura -= Kelvin; // odejmujemy wartość Kelvin
  1109.  
  1110. pogoda.temperatura_odczuwalna = myObject["main"]["feels_like"];
  1111. pogoda.temperatura_odczuwalna -= Kelvin;
  1112.  
  1113. pogoda.temperatura_minimalna = myObject["main"]["temp_min"];
  1114. pogoda.temperatura_minimalna -= Kelvin;
  1115.  
  1116. pogoda.temperatura_maksymalna = myObject["main"]["temp_max"];
  1117. pogoda.temperatura_maksymalna -= Kelvin;
  1118.  
  1119. pogoda.cisnienie = myObject["main"]["pressure"];
  1120.  
  1121. pogoda.wilgotnosc = myObject["main"]["humidity"];
  1122.  
  1123. pogoda.wiatr = myObject["wind"]["speed"];
  1124. pogoda.zachmurzenie = myObject["clouds"]["all"];
  1125.  
  1126. pogoda.widzialnosc = myObject["visibility"];
  1127.  
  1128. // --- wykorzystana biblioteka TimeLib.h -----------
  1129. sprintf(czas.wschod_slonca, "%02d:%02d",hour(myObject["sys"]["sunrise"]),minute(myObject["sys"]["sunrise"]));
  1130.  
  1131. // --- wykorzystana biblioteka TimeLib.h -----------
  1132. sprintf(czas.zachod_slonca, "%02d:%02d",hour(myObject["sys"]["sunset"]),minute(myObject["sys"]["sunset"]));
  1133.  
  1134. #if TERMINAL
  1135. tools.PokazWiadomosc("ESP","Weather","Pobrano pogodę z serwera openweathermap.org");
  1136. #endif
  1137. }
  1138. }
  1139.  
  1140. // -------------------------------------------------------------------------------------------------- //
  1141. // --- httpGET --- // <--- http GET request
  1142. // -------------------------------------------------------------------------------------------------- //
  1143. String httpGETRequest(const char* serverName) //
  1144. { //
  1145. HTTPClient http; //
  1146. http.begin(serverName); //
  1147. int httpResponseCode = http.GET(); //
  1148. String bufor = "{}"; //
  1149. //
  1150. if ( httpResponseCode > 0 ) //
  1151. { //
  1152. #if TERMINAL //
  1153. //Serial.print("HTTP Response code: "); //
  1154. //Serial.println(httpResponseCode); //
  1155. #endif //
  1156. bufor = http.getString(); //
  1157. } //
  1158. else //
  1159. { //
  1160. #if TERMINAL //
  1161. //Serial.print("Error code: "); //
  1162. //Serial.println(httpResponseCode); //
  1163. #endif //
  1164. } //
  1165. http.end(); //
  1166. return bufor; //
  1167. } //
  1168. // -------------------------------------------------------------------------------------------------- //
  1169.  
Advertisement
Add Comment
Please, Sign In to add comment