{"id":1184,"date":"2018-04-10T20:27:59","date_gmt":"2018-04-10T20:27:59","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=1184"},"modified":"2018-04-12T21:39:44","modified_gmt":"2018-04-12T21:39:44","slug":"sterowanie-serwem-za-pomoca-joysticka-2-2-2-2-2-2-2-2","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=1184","title":{"rendered":"RGB LED &#8211; PWM (podstawy)"},"content":{"rendered":"<p>Niby podstawy &#8211; ale jakie kolorowe \ud83d\ude09 No i bardzo przysz\u0142o\u015bciowe &#8211; niebawem si\u0119 oka\u017ce, jak barwne mog\u0105 by\u0107 nasze elektroniczne gry zr\u0119czno\u015bciowe!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1185\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/dioda-led-5mm-rgb-wsp-katoda-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/dioda-led-5mm-rgb-wsp-katoda-300x300.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/dioda-led-5mm-rgb-wsp-katoda-150x150.jpg 150w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/dioda-led-5mm-rgb-wsp-katoda.jpg 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Sprawa jest prosta &#8211; w tej diodzie RGB s\u0105 w\u0142a\u015bciwie TRZY diody &#8211; czerwona, niebieska i zielona. Dzi\u0119ki mieszaniu trzech kolor\u00f3w otrzymujemy ka\u017cdy inny, dowolny kolor &#8211; w tym tak\u017ce bia\u0142y. W\u0142a\u015bnie bia\u0142y to bardzo wa\u017cny kolor &#8211; potrzbny nam do codziennego \u017cycia &#8211; dlatego te\u017c w\u0142a\u015bnie w 2014 r. uchonorowano Japo\u0144czyk\u00f3w <a href=\"http:\/\/www.rmf24.pl\/raporty\/raport-noblowski\/fakty\/news-nobel-z-fizyki-niebieskie-diody-led-sa-wokol-nas,nId,1532007\">nagrod\u0105 Nobla<\/a> za zrobienie niebieskiego lasera.<\/p>\n<p>RGB LEDy wyst\u0119puj\u0105 z dwoma typami obudowy &#8211; matow\u0105 (polecam) oraz przezroczyst\u0105. Ta pierwsza daje \u015bwiat\u0142o bardziej rozproszone, trudno nawet zobaczy\u0107 te trzy oddzielne LEDy.<\/p>\n<h2>Wsp\u00f3lna anoda, wsp\u00f3lna katoda.<\/h2>\n<p>RGB LED ma <strong>cztery &#8222;n\u00f3\u017cki&#8221; <\/strong>(wyprowadzenia): skoro sa tam trzy LEDy (czerwony, zielony i niebieski) to niepotrzebn\u0105 rozrzutno\u015bci\u0105 by\u0142o by mocowanie sze\u015bciu n\u00f3\u017cek &#8211; po dwie dla ka\u017cdej diody. Oczywi\u015bcie dioda ma mie\u0107 mo\u017cliwo\u015b\u0107 oddzielnego sterowania (w\u0142\u0105cznaia), dlatego te trzy n\u00f3\u017cki musz\u0105 by\u0107 &#8211; natomiast reszt\u0119 (te\u017c 3) mo\u017cna ze sob\u0105 uwsp\u00f3lni\u0107 &#8211; czyli po\u0142\u0105czy\u0107. Tym oto sposobem zredukowali\u015bmy nadmiar wyprowadze\u0144 i mamy dwie odmiany RGB LEDa: wsp\u00f3lna katoda (czyli wsp\u00f3lny minus), oraz wsp\u00f3lna anoda (czyli wsp\u00f3lny plus). Wiele m\u00f3wi\u0105cy rysunek:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1186 size-full\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_anoda-katoda.jpg\" alt=\"\" width=\"480\" height=\"226\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_anoda-katoda.jpg 480w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_anoda-katoda-300x141.jpg 300w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/p>\n<h2>Pod\u0142\u0105czenie &#8211; pami\u0119taj o oporniku dla KA\u017bDEGO LEDa!<\/h2>\n<p>Niby oczywiste, ale warto o tym przypomina\u0107&#8230; Wybieramy rezystory 220 Ohma (bo takie mamy pod r\u0119k\u0105) &#8211; co nie jest idealne, gdy\u017c ka\u017cdy LED ma inne napi\u0119cie przewodzenia&#8230; My to \u015bwiadomie ignorujemy i&nbsp;<strong>dla prostoty<\/strong> (czytaj: wygodny) u\u017cywamy tych samych opornik\u00f3w. Ale co\u015b za co\u015b &#8211; nie b\u0119dziemy mie\u0107 tej samej jasno\u015bci ka\u017cdego LEDa (p\u0142ynie przez nie inny pr\u0105d!) a wi\u0119c bia\u0142y nie b\u0119dzie taki bia\u0142y&#8230;<\/p>\n<p><em>(Mo\u017ce znajd\u0119 czas i dopisz\u0119 tu kiedy\u015b konkretne warto\u015bci opornik\u00f3w dla ka\u017cdego LEDa)<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1195 size-large\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_led_anode-1024x739.png\" alt=\"\" width=\"640\" height=\"462\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_led_anode-1024x739.png 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_led_anode-300x216.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_led_anode-768x554.png 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/rgb_led_anode.png 1455w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<h2>Pierwszy program<\/h2>\n<p>Proponuj\u0119 zdefiniowa\u0107 trzy zmienne (byte, int &#8211; jakkolwiek, oczywi\u015bcie #define b\u0119dzie te\u017c OK) dla ka\u017cdej n\u00f3\u017cki diody RGB (ja swoje pod\u0142\u0105czy\u0142em do pin\u00f3w 11,10 i 9). Dzi\u0119ki temu b\u0119dziemy wiedzieli, co w\u0142a\u015bciwie robimy.<\/p>\n<pre class=\"lang:arduino decode:true\" title=\"RGB LED - wsp\u00f3lna ANODA.\">byte ledR=11;\r\nbyte ledG=10;\r\nbyte ledB=9;\r\n\r\nvoid setup(){\r\n  pinMode(ledR, OUTPUT);\r\n  pinMode(ledG OUTPUT);\r\n  pinMode(ledB, OUTPUT);\r\n}\r\n\r\nvoid loop(){\r\n  digitalWrite(ledR, LOW); \/\/w\u0142\u0105czamy czerowny kolor\r\n  delay(1000);\r\n  digitalWrite(ledR, HIGH); \/\/wy\u0142\u0105czamy czerowny kolor\r\n  delay(1000);\r\n  digitalWrite(ledG, LOW); \/\/w\u0142\u0105czamy zielony kolor\r\n  delay(1000);\r\n  digitalWrite(ledR, HIGH); \/\/wy\u0142\u0105czamy zielony kolor\r\n  delay(1000);\r\n  digitalWrite(leB, LOW); \/\/w\u0142\u0105czamy niebieski kolor\r\n  delay(1000);\r\n  digitalWrite(ledB, HIGH); \/\/wy\u0142\u0105czamy neiebieski kolor\r\n  delay(1000);\r\n\r\n  \/\/a teraz mieszamy kolory\r\n  digitalWrite(ledB, LOW); \/\/w\u0142\u0105czamy niebieski kolor\r\n  digitalWrite(ledR, LOW); \/\/w\u0142\u0105czamy niebieski kolor... mamy FIOLET!\r\n  delay(1000);\r\n  digitalWrite(ledB, HIGH); \r\n  digitalWrite(ledR, HIGH); \r\n  delay(1000);\r\n}<\/pre>\n<p><strong>Nie pomyslilem si\u0119<\/strong> &#8211; w\u0142\u0105czamy LEDy wy\u0142\u0105czaj\u0105c napi\u0119cie &#8211; komendy digitalWrite(ledX, <strong>LOW<\/strong>) &#8211; bo program dotyczy RGB LEDa ze <strong>wsp\u00f3ln\u0105 anaod\u0105<\/strong>. Napi\u0119cie na wsp\u00f3lnej n\u00f3\u017cce wynosi 5V dlatego musz\u0119 poda\u0107 napi\u0119cie mniejsze (LOW) na dr\u00f3g\u0105 n\u00f3\u017ck\u0119, aby pr\u0105d p\u0142yn\u0105\u0142 (nie p\u0142ynie, je\u015bli nie ma r\u00f3\u017cnicy napi\u0119\u0107! jak woda, kt\u00f3ra si\u0119 nie przelewa gdy tern jest p\u0142aski).<\/p>\n<p>Mieszanie kolor\u00f3w u\u0142atwia poni\u017csza grafika:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1189\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/kolor-mix-rgb-ok-300x289.gif\" alt=\"\" width=\"300\" height=\"289\"><\/p>\n<p>Warto troch\u0119 pobawi\u0107 si\u0119 w rozbudow\u0119 programu i uzyska\u0107 ciekawe kolorki&#8230; to na prawd\u0119 fajne!<\/p>\n<h2>Drugi program &#8211; mieszanie z &#8222;czu\u0142o\u015bci\u0105&#8221; \ud83d\ude09<\/h2>\n<p>Pami\u0119tamy dzia\u0142anie cyfrowych pin\u00f3w PWM? S\u0105 one oznaczone tyld\u0105 (~, &#8222;falk\u0105&#8221;) i w przypadku LED-a umo\u017cliwiaj\u0105 p\u0142ynn\u0105 zmien\u0119 jasno\u015bci \u015bwiecenia. Ja od razu do pod\u0142\u0105czenia wybra\u0142em w\u0142a\u015bnie piny PWM wi\u0119c mog\u0119 przyst\u0105pi\u0107 do zabawy w zmien\u0119 jasno\u015bci<\/p>\n<pre class=\"lang:arduino decode:true\" title=\"RGB LED - wsp\u00f3lna ANODA.\">byte ledR=11;\r\nbyte ledG=10;\r\nbyte ledB=9;\r\n\r\nvoid setup(){\r\n  pinMode(ledR, OUTPUT);\r\n  pinMode(ledG OUTPUT);\r\n  pinMode(ledB, OUTPUT);\r\n}\r\n\r\nvoid loop(){\r\n  for (i=255; i&gt;0; i--){\r\n     analogWrite(ledR, i); \/\/powoli w\u0142\u0105czamy czerowny kolor\r\n     delay(10);\r\n  }\r\n  for (i=255; i&gt;0; i--){ \r\n     analogWrite(ledB, i); \/\/powoli w\u0142\u0105czamy niebieski kolor \r\n     delay(10); \r\n  }   \r\n  delay(1000);\r\n}<\/pre>\n<p>Fajna i prosta sprawa, nieprawda\u017c? Ci, kt\u00f3rzy nie pami\u0119taj\u0105 o co chodzi &#8211; zach\u0119cam do uruchomienia&nbsp;<strong>Przyk\u0142ady -&gt; 01 Basics -&gt; Fade&nbsp;<\/strong>z Arduino IDE.<\/p>\n<h2>Pr\u0105d pobierany z Arduino<\/h2>\n<p>Ka\u017cdy kolor to oko\u0142o 20mA, wi\u0119c ustawiaj\u0105c \u015bwiat\u0142o bia\u0142e mamy oko\u0142o 60mA pr\u0105du. Oznacza to, \u017ce nasze Arduino UNO nie poci\u0105gnie za du\u017co takich LED\u00f3w (bez kombinowania, ale o tym p\u00f3\u017aniej).<\/p>\n<h2>1 RGB LED = 3 piny PWM !!!<\/h2>\n<p>Oczywi\u015bcie, je\u015bli chcemy mie\u0107 mo\u017cliwo\u015b\u0107 kontrolowania jansno\u015bci. To du\u017co &#8211; Arduino UNO ma tylko (a\u017c?) 6 takich pin\u00f3w. Co wi\u0119c zrobi\u0107, aby \u015bwieci\u0107 5 RGB LEDami? albo 10? Nie da si\u0119? Da si\u0119, da. <strong>Na kolejnych zaj\u0119ciach w\u0142a\u015bnie si\u0119 tym zajmiemy. Zapraszam!&nbsp;<\/strong><\/p>\n<h2>Praca domowa<\/h2>\n<p>Proponuj\u0119 po\u0107wiczy\u0107 programowanie struktularne &#8211; stworzy\u0107 funkcj\u0119<\/p>\n<p>void rgb(byte red, byte green, byte blue),<\/p>\n<p>kt\u00f3ra ustawi trzy LEDy na zadane warto\u015bci &#8211; niech dodatkowo podawane warto\u015bci b\u0119d\u0105 z przedzia\u0142u 0..100, a wi\u0119c nale\u017cy dokona\u0107 odpowieniej konwersji na liczby z przedzia\u0142u 0..255. Je\u015bli tak zrobomy, to w\u00f3wczas rgb(30,0,0) oznacza lekki kolor czerwony, rgb(0,100,0) to jansy kolor zielony a rgb(77,0,77) jasno-fioletowy. Prosz\u0119 pobawi\u0107 si\u0119 w wirtualnym Arduino!<\/p>\n<p style=\"text-align: right;\"><em>(c) KG 2018<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Niby podstawy &#8211; ale jakie kolorowe \ud83d\ude09 No i bardzo przysz\u0142o\u015bciowe &#8211; niebawem si\u0119 oka\u017ce, jak barwne mog\u0105 by\u0107 nasze elektroniczne gry zr\u0119czno\u015bciowe! Sprawa jest prosta &#8211; w tej diodzie RGB s\u0105 w\u0142a\u015bciwie TRZY diody &#8211; czerwona, niebieska i zielona. Dzi\u0119ki mieszaniu trzech kolor\u00f3w otrzymujemy ka\u017cdy inny, dowolny kolor &#8211; w tym tak\u017ce bia\u0142y. W\u0142a\u015bnie [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":1185,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[52],"tags":[221,99,222,220],"class_list":{"0":"post-1184","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-fibot","8":"tag-kolor","9":"tag-led","10":"tag-prm","11":"tag-rgb","13":"post-with-thumbnail","14":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1184","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=1184"}],"version-history":[{"count":9,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1184\/revisions"}],"predecessor-version":[{"id":1197,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1184\/revisions\/1197"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/1185"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}