{"id":1512,"date":"2019-01-18T18:36:57","date_gmt":"2019-01-18T18:36:57","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=1512"},"modified":"2019-01-20T20:42:54","modified_gmt":"2019-01-20T20:42:54","slug":"sterowanie-serwem-za-pomoca-joysticka-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-3-5","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=1512","title":{"rendered":"kolorowo &#8211; ws2812b"},"content":{"rendered":"<p>Poznali\u015bmy bardzo ciekawy uk\u0142ad: 3x LED (kolor czerwony, niebieski i zielony) + sterownik ws2811 &#8211; wszystko razem tworzy modu\u0142 o\u015bwietlenia RGB, kt\u00f3ry bardzo \u0142atwo si\u0119 steruje &#8211; a uzyskane efekty s\u0105 bardzo przyjemne ;-)Modu\u0142y mog\u0105 by\u0107 sprzedawane osobno (pojedynczo), ale super prezentuj\u0105 si\u0119 uk\u0142ady po\u0142\u0105czone w &#8222;oczko&#8221; lub listwy.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1513\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/01\/oczko12-ws2812b-300x260.jpg\" alt=\"\" width=\"300\" height=\"260\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/01\/oczko12-ws2812b-300x260.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/01\/oczko12-ws2812b.jpg 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2>3x RGB<\/h2>\n<p>Ka\u017cdy LED \u015bwieci \u015bwiat\u0142em o danej d\u0142ugo\u015bci (L [nm]), maksymaln\u0105 jasno\u015bci\u0105 (J [mcd]) i cechuje si\u0119 te\u017c konkretnym spadkiem napi\u0119cia (V [V]). Poni\u017cej dane z <a href=\"http:\/\/pdf-embedder url=&quot;http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/01\/WS2812B.pdf\">datasheet<\/a>.:<br \/>\nRed L=620-625 J=390-420 V=2.0-2.2<br \/>\nGreen L=522-525 J=660-720 V=3.0-3.4<br \/>\nBlue L=465-467 J=180-200 V=3.0-3.4<\/p>\n<p>Trzeba <strong>uwa\u017ca\u0107<\/strong>, aby zasilaj\u0105c takie paski uwa\u017cnie dobrze policzy\u0107 <strong>wymagany MAKSYMALNY pr\u0105d pobrany przez uk\u0142ad<\/strong>! Mamy tu 3 LEDy, wi\u0119c gdy wszystkie b\u0119d\u0105 \u015bwieci\u0107 na 100% to potrzeba ~3x20mA na ka\u017cdy jeden modu\u0142. Nasze &#8222;oczko&#8221; ma 12 takich uk\u0142ad\u00f3w, wi\u0119c daje to oko\u0142o <strong>0.72A pr\u0105du<\/strong> &#8211;&nbsp; czyli ju\u017c uszkodzili\u015bmy Arduino (pami\u0119tamy, \u017ce wydajno\u015b\u0107 pr\u0105dowa p\u0142ytki Arduino UNO &lt;0.5A ? <strong>trzeba na to uwa\u017ca\u0107!<\/strong>). Gdy zasilamy paski\/oczka bezpo\u015brednio z Arduino prosz\u0119 zmniejszy\u0107 jasno\u015b\u0107 led\u00f3w do 10% albo i ni\u017cej (w zale\u017cno\u015bci ile ich mamy).<\/p>\n<div style=\"width: 720px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-1512-1\" width=\"720\" height=\"405\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/01\/6828.mp4?_=1\" \/><a href=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/01\/6828.mp4\">http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2019\/01\/6828.mp4<\/a><\/video><\/div>\n<h2>Przestrzegaj tych regu\u0142 (wzi\u0119te z <a href=\"http:\/\/www.jarzebski.pl\/arduino\/komponenty\/diody-led-ze-sterownikem-ws2811-ws2812.html\">\/dev\/jarzebski<\/a>)<\/h2>\n<ul>\n<li>Nie przekraczaj napi\u0119cia zasilania powy\u017cej 5V,<\/li>\n<li>Dodaj kondensator elektrolityczny o pojemno\u015bci od 100\u00b5F do 1000\u00b5F (np.: 6.3V lub wy\u017cszy) przy zasilaniu pierwszej diody,<\/li>\n<li>Dodaj rezystor o warto\u015bci od 300\u03a9 do 1k\u03a9 pomi\u0119dzy mikrokontrolerem, a pierwszym pinem DIN. Rezystor ten umie\u015b\u0107 jak najbli\u017cej diody,<\/li>\n<li>Postaraj si\u0119 mo\u017cliwie skr\u00f3ci\u0107 odleg\u0142o\u015b\u0107 pomi\u0119dzy&nbsp;mikrokontrolerem, a pierwsz\u0105 diod\u0105,<\/li>\n<li><strong>Nie pod\u0142\u0105czaj diod przy w\u0142\u0105czonym zasilaniu<\/strong>. Je\u015bli ju\u017c musisz, r\u00f3b to w kolejno\u015bci: masa, zasilanie, linia steruj\u0105ca, a od\u0142\u0105czaj w odwrotnej kolejno\u015bci<\/li>\n<li>Je\u015bli diody zasilasz <strong>z oddzielnego \u017ar\u00f3d\u0142a zasilania, najpierw doprowad\u017a zasilanie do diod, potem do mikrokontrolera,<\/strong><\/li>\n<li>Pami\u0119taj o zabezpieczeniu antystatycznym \ud83d\ude42 swetry, polary i inne ubiory \u0142atwo gromadz\u0105ce \u0142adunek nie s\u0105 wskazane<\/li>\n<\/ul>\n<p>Polecam ca\u0142y wpis o tych uk\u0142adach na <a href=\"http:\/\/www.jarzebski.pl\/arduino\/komponenty\/diody-led-ze-sterownikem-ws2811-ws2812.html\">\/dev\/jarzebski<\/a>.<\/p>\n<h2>NeoPixel<\/h2>\n<p>Biblioteka do programowania uk\u0142ad\u00f3w WS2812B.<\/p>\n<pre class=\"lang:arduino decode:true \" title=\"Przyk\u0142ad za\u015bwiecenia modu\u0142ami ws2812b\">    #include &lt;Adafruit_NeoPixel.h&gt;\r\n     \r\n    #define PIN 7\r\n    #define LICZBADIOD 12\r\n     \r\n    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LICZBADIOD, PIN, NEO_GRB + NEO_KHZ800);\r\n     \r\n    void setup(){\r\n      pixels.begin(); \/\/ najpierw inicjalizacja biblioteki\r\n    }\r\n    \r\n    int nr=0;\r\n    void loop(){\r\n        if (nr &gt; LICZBADIOD) nr=0;\r\n        pixels.setPixelColor(nr, random(0,256), random(0,256), random(0,256)); \/\/programujemy LED-a o numerze nr\r\n        pixels.show(); \/\/ konieczne, aby zmiany by\u0142y widoczne\r\n        delay(30);\r\n        pixels.setPixelColor(nr, 0, 0, 0); \/\/kolor czarny dla  LED-a o numerze nr \r\n        nr++;\r\n    }\r\n<\/pre>\n<p>Kompilacja zako\u0144czona z komunikatem:<\/p>\n<p>Szkic u\u017cywa 3046 bajt\u00f3w (9%) pami\u0119ci programu. Maksimum to 32256 bajt\u00f3w. Zmienne globalne <strong>u\u017cywaj\u0105 46 bajt\u00f3w (2%)<\/strong> pami\u0119ci dynamicznej, pozostawiaj\u0105c 2002 bajt\u00f3w dla zmiennych lokalnych.<\/p>\n<p>Zmieniamy LICZBEDIOD z 12 na 59 i&#8230; <span style=\"text-decoration: underline;\">ten sam<\/span> rozmiar zajmowanej pami\u0119ci. Ta uwaga do por\u00f3wnania dla kolejnej (popularnej) biblioteki.<\/p>\n<h2>FastLed<\/h2>\n<p>Kolejna biblioteka do programowania tych uk\u0142ad\u00f3w WS2812B.<\/p>\n<pre class=\"lang:arduino decode:true \">#include &lt;FastLED.h&gt;\r\n#define NUM_LEDS 12\r\n#define DATA_PIN 7\r\n\r\nCRGB leds[NUM_LEDS];\r\n\r\nvoid setup() { \r\n   FastLED.addLeds&lt;NEOPIXEL, DATA_PIN&gt;(leds, NUM_LEDS);\r\n   FastLED.setBrightness(10);\r\n}\r\n\r\nvoid loop() { \r\n      if (nr &gt; NUM_LEDS) nr = 0;\r\n      \/\/leds[nr] = CRGB::Blue; \r\n      leds[nr].r = random(0, 256);  \r\n      leds[nr].g = random(0, 256);  \r\n      leds[nr].b = random(0, 256);       \r\n      FastLED.show();   \/\/wyswietlamy zaprogramowale kolory LEDow\r\n      leds[nr] = CRGB::Black;\r\n      delay(30);\r\n      nr++;\r\n}<\/pre>\n<p>Kompilujemy i widzimy:<\/p>\n<p>Szkic u\u017cywa 4040 bajt\u00f3w (12%) pami\u0119ci programu. Maksimum to 32256 bajt\u00f3w. Zmienne globalne u\u017cywaj\u0105 139 bajt\u00f3w (6%) pami\u0119ci dynamicznej, pozostawiaj\u0105c 1909 bajt\u00f3w dla zmiennych lokalnych.<\/p>\n<p>Widzimy, \u017ce ten sam kod <strong>jest wi\u0119kszy<\/strong> z wykorzystaniem FastLed-a. OK. Idziemy krok dalej i zmieniamy NUM_LEDS na 59 i&#8230;<\/p>\n<p>Szkic u\u017cywa 4040 bajt\u00f3w (12%) pami\u0119ci programu. Maksimum to 32256 bajt\u00f3w. Zmienne globalne <strong>u\u017cywaj\u0105 280 bajt\u00f3w (13%)<\/strong> pami\u0119ci dynamicznej, pozostawiaj\u0105c 1768 bajt\u00f3w dla zmiennych lokalnych.<\/p>\n<p>Kt\u00f3ra biblioteka lepsza &#8211; FastLed czy NeoPixel? hmmm&#8230; Po pierwsze: obie s\u0105 proste w u\u017cyciu &#8211; to zaleta obu. Jednak: FastLed jednak rezerwuje 3 bajty (kolory RGB) dla ka\u017cdego ws2812b &#8211; co jest do\u015b\u0107 pami\u0119cio\u017cerne, tym bardziej, \u017ce takie Arduino UNO ma jedynie (a\u017c?) 2kB pami\u0119ci. Jednak o wadach i zaletach na razie nie b\u0119d\u0119 si\u0119&nbsp; wypowiada\u0107.<\/p>\n<p style=\"text-align: right;\"><em>(c) K.G. 2019<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poznali\u015bmy bardzo ciekawy uk\u0142ad: 3x LED (kolor czerwony, niebieski i zielony) + sterownik ws2811 &#8211; wszystko razem tworzy modu\u0142 o\u015bwietlenia RGB, kt\u00f3ry bardzo \u0142atwo si\u0119 steruje &#8211; a uzyskane efekty s\u0105 bardzo przyjemne ;-)Modu\u0142y mog\u0105 by\u0107 sprzedawane osobno (pojedynczo), ale super prezentuj\u0105 si\u0119 uk\u0142ady po\u0142\u0105czone w &#8222;oczko&#8221; lub listwy. 3x RGB Ka\u017cdy LED \u015bwieci \u015bwiat\u0142em [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":1516,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[52],"tags":[271,99,272,270,220,269],"class_list":{"0":"post-1512","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-fibot","8":"tag-fastled","9":"tag-led","10":"tag-neopixel","11":"tag-oczko","12":"tag-rgb","13":"tag-ws2812","15":"post-with-thumbnail","16":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1512","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=1512"}],"version-history":[{"count":14,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1512\/revisions"}],"predecessor-version":[{"id":1533,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1512\/revisions\/1533"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/1516"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}