{"id":2132,"date":"2019-10-28T14:28:41","date_gmt":"2019-10-28T14:28:41","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=2132"},"modified":"2019-11-04T19:55:49","modified_gmt":"2019-11-04T19:55:49","slug":"ws2812b-oraz-millis","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=2132","title":{"rendered":"Ws2812b oraz millis()"},"content":{"rendered":"\n<p>Kolejne spotkanie z kolorowymi paskami LED\u00f3w WS2812B &#8211; tym razem zap\u0119tlone w ko\u0142o, wi\u0119c efekt fajny! <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/11\/DSC_7025-1024x576.jpg\" alt=\"\" class=\"wp-image-2135\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/11\/DSC_7025-1024x576.jpg 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/11\/DSC_7025-300x169.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/11\/DSC_7025-768x432.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Efekty mog\u0105 by\u0107 fajne, ale&#8230; programuj\u0105c tylko takie &#8222;k\u00f3\u0142eczka&#8221; nie martwimy si\u0119 u\u017cywaniem funkcji delay(). <strong>To dobrze w tym prostym przypadku<\/strong>. Ale czy zawsze tak mo\u017cna?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zadanie do wykonania<\/h2>\n\n\n\n<p>miga\u0107 pierwszym LEDem co 1 sek (w\u0142\u0105cza\u0107 na 1 sek, wy\u0142\u0105cza\u0107 na 1 sek), miga\u0107 drugim LEDem co 30 sek &#8212; wszystko bez u\u017cycia funkcji <a href=\"https:\/\/www.arduino.cc\/reference\/en\/language\/functions\/time\/delay\/\">delay<\/a>() ! Po co to nam? A chodzi o to, \u017ce efekty \u015bwietlne maj\u0105 pojawia\u0107 si\u0119 <strong>niezale\u017cnie od innych rzeczy<\/strong> dziej\u0105cych si\u0119 w &#8222;mi\u0119dzyczasie&#8221;, <strong>nie chcemy ich stopowa\u0107<\/strong> delay()em. W naszym przypadku zamierzamy je\u017adzi\u0107 pojazdami, kt\u00f3re sterowane b\u0119d\u0105 bezprzewodowo przez modu\u0142y radiowe nRF24L wi\u0119c nie chcemy zatrzymywa\u0107 odbioru sterowania wy\u015bwietlaj\u0105c efekty na kolorowych k\u00f3\u0142kach. Jak to zrobi\u0107?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Liczniki czasu &#8211; funkcja millis()<\/h2>\n\n\n\n<p>Powiedzmy, \u017ce chcemy wykona\u0107 pewne instrukcje co <strong>interwa\u0142<\/strong> czasu (mo\u017ce by\u0107 150 ms, mo\u017ce by\u0107 3777 ms albo dowolnie).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unsigned long int interwal = 3777;\nunsigned long int t1,t2;\nunsigned long int licznik = 0;\n\n\nvoid loop(){\n  t1 = millis();\n  \/\/\n  \/\/rozne operacje, ktorych nie chcemy zatrzymywac\n  \/\/\n  t2 = millis();\n  licznik += (t2 - t1);\n\n  if (licznik >= interwal){\n    \/\/wykonaj zadania co dany interwal\n    licznik = 0;\n  }\n}\/\/loop<\/code><\/pre>\n\n\n\n<p>Powy\u017cszy kod to szkic post\u0119powania w celu uzyskania &#8222;wielozadaniowo\u015bci&#8221; na platformie Arduino \ud83d\ude09 Na pocz\u0105tku p\u0119tli loop() zapisujemy aktualny czasu do zmiennej t1, wykonujemy wszystkie potrzebne instrukcje, kt\u00f3rych nie chcemy przerywa\u0107, na koniec ponownie zapisujemy czas do zmiennej  t2. Zwi\u0119kszamy licznik czasu (zmienna <strong>licznik<\/strong>) w\u0142a\u015bnie o czas wykonania p\u0119tli loop(), czyli r\u00f3\u017cnic\u0119 t2-t1. Nast\u0119pnie sprawdzamy czy <strong>licznik<\/strong> &#8222;nape\u0142ni\u0142 si\u0119&#8221; do zadanego <strong>interwa\u0142u<\/strong> &#8211; je\u015bli tak, wykonujemy zadania i zerujemy licznik. Oczywi\u015bcie mo\u017cemy mie\u0107 wiele licznik\u00f3w, jak te\u017c i r\u00f3\u017cne interwa\u0142y&#8230;<\/p>\n\n\n\n<p style=\"text-align:right\">(c) <em>K.G. 2019<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kolejne spotkanie z kolorowymi paskami LED\u00f3w WS2812B &#8211; tym razem zap\u0119tlone w ko\u0142o, wi\u0119c efekt fajny! Efekty mog\u0105 by\u0107 fajne, ale&#8230; programuj\u0105c tylko takie &#8222;k\u00f3\u0142eczka&#8221; nie martwimy si\u0119 u\u017cywaniem funkcji delay(). To dobrze w tym prostym przypadku. Ale czy zawsze tak mo\u017cna? Zadanie do wykonania miga\u0107 pierwszym LEDem co 1 sek (w\u0142\u0105cza\u0107 na 1 sek, [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":2135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[52],"tags":[366,177,269],"class_list":{"0":"post-2132","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-fibot","8":"tag-delay","9":"tag-millis","10":"tag-ws2812","12":"post-with-thumbnail","13":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/2132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2132"}],"version-history":[{"count":4,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/2132\/revisions"}],"predecessor-version":[{"id":2138,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/2132\/revisions\/2138"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/2135"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}