{"id":272,"date":"2016-06-03T10:45:09","date_gmt":"2016-06-03T10:45:09","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=272"},"modified":"2016-06-03T12:36:23","modified_gmt":"2016-06-03T12:36:23","slug":"zajecia-nr-6-fotorezystor-dzielnik-napiec-i-serwo-silnik","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=272","title":{"rendered":"Zaj\u0119cia nr 6 &#8211; fotorezystor, dzielnik napi\u0119\u0107, map(), serwo silnik i znowu map()"},"content":{"rendered":"<h2>Dzielnik napi\u0119\u0107<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-273 alignleft\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik_napiec.png\" alt=\"dzielnik_napiec\" width=\"250\" height=\"176\" \/><\/h2>\n<h2><\/h2>\n<p>Bardzo podstawowa wiedza, ale\u00a0<strong>niezb\u0119dna<\/strong> podczas zabawy z Arduino i podobnymi. Dlatego zaj\u0119cia rozpocz\u0119li\u015bmy od dw\u00f3ch rezystor\u00f3w o tej samej warto\u015bci, w\u00f3wczas ze wzoru na dzielnik Uwy= Uwe*R\/(R+R1)= 0.5*Uwe i przy pomocy miernika uniwersalnego mierzyli\u015bmy napi\u0119cie Uwy. Jako \u017ar\u00f3d\u0142o mieli\u015bmy do dyspozycji baterie AAA (r\u00f3\u017cnie &#8211; jedni 2 sztuki, inni 4) o r\u00f3\u017cnych napi\u0119ciu. Dlatego aby prawid\u0142owo wykona\u0107 to \u0107wiczenie trzeba by\u0142o najpierw zmierzy\u0107 napi\u0119cie \u017ar\u00f3d\u0142a. Dzielnik napi\u0119\u0107 zbudowali\u015bmy na p\u0142ytce stykowej, o tak:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-274\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik1-300x272.png\" alt=\"dzielnik1\" width=\"300\" height=\"272\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik1-300x272.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik1.png 594w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Gdy ju\u017c prawid\u0142owo zbudowali\u015bmy dzielnik napi\u0119\u0107 i rozumieli\u015bmy co si\u0119 dzieje z mierzonym napi\u0119ciem, zast\u0105pili\u015bmy fotorezystorem.<\/p>\n<h2>Fotorezystor<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-275 alignleft\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/fotorezystor-300x248.jpg\" alt=\"fotorezystor\" width=\"300\" height=\"248\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/fotorezystor-300x248.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/fotorezystor.jpg 420w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><strong>O\u015bwietlenie<\/strong> fotorezystora powoduje <strong>zmniejszenie jego rezystancji<\/strong> (a tym samym zwi\u0119kszenie p\u0142yn\u0105cego przez niego pr\u0105du, je\u015bli mamy sta\u0142e napi\u0119cie zasilania). O\u015bwietlenie zmieniali\u015bmy albo zas\u0142aniaj\u0105c r\u0119k\u0105 fotorezystor, albo o\u015bwietlaj\u0105c go latark\u0105 z telefonu kom\u00f3rkowego. Dalej zamienili\u015bmy jeden z rezystor\u00f3w z naszego dzielnika napi\u0119\u0107 na fotoopornik i przeprowadzili\u015bmy pomiary napi\u0119cia. Uk\u0142ady do\u015bwiadczalne prezentowa\u0142y si\u0119 w ten oto spos\u00f3b:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-277 alignleft\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik3-300x188.png\" alt=\"dzielnik3\" width=\"300\" height=\"188\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik3-300x188.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik3-768x482.png 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik3.png 894w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-278\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik2-300x188.png\" alt=\"dzielnik2\" width=\"300\" height=\"188\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik2-300x188.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik2-768x481.png 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik2.png 924w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Warto podkre\u015bli\u0107, \u017ce istotne jest <strong>kt\u00f3ry rezystor<\/strong> zast\u0119pujemy fotoopornikiem. Rysunki poni\u017cej przedstawiaj\u0105 dwa podobne uk\u0142ady dzielnika napi\u0119\u0107 &#8211; zwr\u00f3\u0107 uwag\u0119 na wskazania napi\u0119cia przy zmianie o\u015bwietlenia:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-279\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik52-300x273.png\" alt=\"dzielnik52\" width=\"300\" height=\"273\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik52-300x273.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik52.png 594w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-280\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik51-300x270.png\" alt=\"dzielnik51\" width=\"300\" height=\"270\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik51-300x270.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik51.png 575w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"wp-image-282 size-medium alignleft\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik53-300x280.png\" alt=\"\" width=\"300\" height=\"280\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik53-300x280.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/dzielnik53.png 562w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>\u00a0Czyli w jednej konfiguracji napi\u0119cie ros\u0142o o\u015bwietlaj\u0105c dzielnik, w drugiej &#8211; napi\u0119cie mala\u0142o. By\u0142o to przyczyn\u0105 kilku w\u0105tpliwo\u015bci na naszych zaj\u0119ciach&#8230; Proponuj\u0119 pobawi\u0107 si\u0119 tym w domu (na wirtualnym Arduino, je\u015bli nie posiadamy p\u0142ytki).<\/p>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2>Inteligentne o\u015bwietlenie<\/h2>\n<p>Do uk\u0142adu pod\u0142\u0105czyli\u015bmy LEDa, kt\u00f3rego jasno\u015bci\u0105 sterowali\u015bmy poprzez Arduino z <strong>pinem PWM <\/strong>(poprzednie zaj\u0119cia + poprzednia praca domowa).\u00a0Zabawa mia\u0142a polega\u0107 na oprogramowaniu uk\u0142adu tak, aby LED gas\u0142 gdy jest du\u017co \u015bwiat\u0142a zastanego (mierzonego przez fotorezystor i wej\u015bcie analogowe Arduino), oraz aby LED \u015bwieci\u0142 mocniej i mocniej gdy \u015bwiat\u0142a zastanego braknie. Takie proste, ale inteligentne o\u015bwietlenie\u00a0\ud83d\ude09<\/p>\n<p>Tutaj poznali\u015bmy now\u0105 funkcj\u0119 z biblioteki Arduino:\u00a0<strong>map()<\/strong>. Funkcja ta\u00a0<strong>przeskalowywa\u0142a<\/strong>\u00a0(liniowo) podan\u0105 warto\u015b\u0107 z pewnego zakresu (dziedziny, poni\u017cej oznaczonej jako warto\u015bci od min_x do max_x), na inna warto\u015b\u0107 z innego zakresu (przeciwdziedzina, od min_y do max_y). Formalnie wygl\u0105da to nast\u0119puj\u0105co:<\/p>\n<p>map(<em>war<\/em>, \u00a0min_x, max_x, \u00a0min_y, max_y)<\/p>\n<p>co oznacza, \u017ce chcemy przeskalowa\u0107 warto\u015b\u0107 <em>war<\/em> z zakresu min_x do max_x, na warto\u015b\u0107 z przedzia\u0142u min_y do max_y. W naszym przyk\u0142adzie chodzi\u0142o o przeskalowanie warto\u015bci odczytywanych przez analogRead (czyli warto\u015bci od 0 do 1023) do warto\u015bci podawanych do sterowania jasno\u015bci\u0105 LEDa (przez PWM, czyli z zakresu 0..255). Dlatego skalowali\u015bmy<\/p>\n<p><em>war2<\/em>= map(<em>war<\/em>, 0, 1023, 0, 255);<\/p>\n<p>To liniowe skalowanie przez funkcj\u0119\u00a0<strong>map()<\/strong> nie ma &#8222;magii&#8221; w sobie, to proste wykorzystanie funkcji liniowej y=ax+b, znanej Wam z lekcji matematyki plus umiej\u0119tno\u015b\u0107 rozwi\u0105zania uk\u0142adu r\u00f3wna\u0144. Dopowiadaj\u0105c: w liniowym skalowaniu mamy 2 nieznane parametry &#8211; wsp\u00f3\u0142czynniki a i b prostej. Musimy wi\u0119c poda\u0107 dwa r\u00f3wnania aby je wyznaczy\u0107 (chyba ka\u017cdy pami\u0119ta, \u017ce do narysowania prostej potrzebne s\u0105 <strong>tylko dwa punkty<\/strong>? wi\u0119c st\u0105d dwa r\u00f3wnania&#8230;). Pos\u0142uguj\u0119 si\u0119 warto\u015bciami kra\u0144cowymi, oczywistymi przy naszym zagadnieniu: chc\u0119 bowiem, by do PWMa trafi\u0142o 255 gdy na wej\u015bciu z analogRead-a by\u0142o 1023 (pierwsze r\u00f3wnanie: y=255 gdy x=1023), oraz chc\u0119, by mie\u0107 warto\u015b\u0107 y=0 gdy podaj\u0119 x=0 (drugie r\u00f3wnanie). Oba punkty podstawiam do niewiadomego y=a*x+b i otrzymuj\u0119 uk\u0142ad r\u00f3wna\u0144. Funkcja map() znajduje a i b za nas i wyznacza ka\u017cd\u0105 inn\u0105 warto\u015b\u0107 le\u017c\u0105c\u0105 na tej prostej.<\/p>\n<p><strong>UWAGA:\u00a0<\/strong>map() dzia\u0142a <strong>tylko na liczbach ca\u0142kowitych<\/strong>!<\/p>\n<p>Przyjrzyjcie si\u0119 ponownie mojemu rysunkowi &#8211; to prosta matematyka w zastosowaniu \ud83d\ude09<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-286 size-large\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map1-1024x638.png\" alt=\"map1\" width=\"640\" height=\"399\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map1-1024x638.png 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map1-300x187.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map1-768x479.png 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map1.png 1247w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Okaza\u0142o si\u0119, \u017ce \u00a0w wyniku <strong>r\u00f3\u017cnego \u0142\u0105czenia fotoopornika<\/strong> w uk\u0142ad niekt\u00f3rzy uczniowie musieli stosowa\u0107:<\/p>\n<p><em>war2\u00a0<\/em>= map(<em>war<\/em>, 0, 1023, 255, 0);<\/p>\n<p>co oznacza\u0142o tak\u0105 sytuacj\u0119:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-287 size-large\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map2-1024x685.png\" alt=\"map2\" width=\"640\" height=\"428\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map2-1024x685.png 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map2-300x201.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map2-768x513.png 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map2-600x400.png 600w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map2-272x182.png 272w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/map2.png 1095w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<h2>Serwo silnik (a w\u0142a\u015bciwie mikro-serwo)<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-290 alignleft\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1-300x300.jpg\" alt=\"serwo1\" width=\"300\" height=\"300\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1-300x300.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1-150x150.jpg 150w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1.jpg 500w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>Czyli silnik, kt\u00f3ry obraca si\u0119 od 0 do 180 stopni (ma blokad\u0119 na inne wychylenia). Potem utrzymuje swoj\u0105 pozycj\u0119. S\u0142u\u017cy do tworzenia obrotowych ramion itd&#8230;<\/p>\n<p>Trzy przewody &#8211; zasilanie (czerowny +5V, czarny\/br\u0105zowy GND) oraz jeden steruj\u0105cy &#8211; <strong>musi by\u0107 PWM<\/strong>. Za du\u017co nie wnika\u0142em o co chodzi w sterowaniu tym silnikiem, tylko wspomnia\u0142em o potencjometrze wewn\u0105trz i o wype\u0142nieniu sygna\u0142u steruj\u0105cego&#8230; wi\u0119cej mo\u017ce p\u00f3\u017aniej? Zobaczymy.<\/p>\n<p>&nbsp;<\/p>\n<p>Do sterowania tym silnikiem u\u017cyli\u015bmy <span style=\"text-decoration: underline;\">2 nowych<\/span> funkcji z <span style=\"text-decoration: underline;\">nowej<\/span> biblioteki:<\/p>\n<ul style=\"list-style-type: circle;\">\n<li><strong>#include &lt;Servo.h&gt;<\/strong> &#8211; na pocz\u0105tku programu informujemy, \u017ce chcemy funkcje z tej nowej biblioteki<\/li>\n<li><strong>Servo <em>silniczek<\/em>;<\/strong> tworzymy zmienn\u0105 typu silnik-serwo, czyli w\u0142a\u015bnie o to nam chodzi!<\/li>\n<li><em><strong>silniczek.<\/strong><\/em><strong>attach(3);<\/strong> powoduje przekazanie informacji do Arduino, \u017ce sterujemy silnikiem przez pin numer 3 (przypominam: musi by\u0107 to pin PWM, czyli jak nie 3, to 5,9&#8230;)<\/li>\n<li><em><strong>silniczek.<\/strong><\/em><strong>write(133); <\/strong>ustawia nasz silnik w pozycji 133 stopni. Albo na dowolny inny z zakresu 0..180 stopni. Dziecinie proste \ud83d\ude09<\/li>\n<\/ul>\n<h2>Serwo sterowane potencjometrem<\/h2>\n<p>W tym przyk\u0142adzie wr\u00f3cili\u015bmy do poprzednich zaj\u0119\u0107 i ponownie wykorzystali\u015bmy potencjometr &#8211; tym razem czytywali\u015bmy warto\u015bci napi\u0119cia na potencjometrze przez Arduino (i wej\u015bcie analogowe, np. A0) a nast\u0119pnie ustawiali\u015bmy serwo na konkretn\u0105 warto\u015b\u0107 k\u0105ta. Ponownie u\u017cyli\u015bmy funkcj\u0119 <strong>map()<\/strong> w taki oto spos\u00f3b:<\/p>\n<p>k\u0105t = map( potencjometr, 0, 1023, 0, 180);<\/p>\n<p>gdzie <em>k\u0105t<\/em> to w\u0142a\u015bnie warto\u015b\u0107 k\u0105ta, na jak\u0105 ma si\u0119 ustawi\u0107 serwo (z zakresu 0..180 stopni), a\u00a0<em>potencjometr<\/em> to warto\u015b\u0107 napi\u0119cia na wyj\u015bciu z potencjometra (z zakresu 0..1023). Upewnij si\u0119, \u017ce rozumiesz kolejno\u015b\u0107 przekazywania parametr\u00f3w do funkcji map().<\/p>\n<p>Program dzia\u0142a\u0142 na prostej zasadzie:<\/p>\n<ul>\n<li>potencjometr = analogRead(A0);<\/li>\n<li>k\u0105t = map( potencjometr, 0, 1023, 0, 180);<\/li>\n<li>silniczek.write(k\u0105t);<\/li>\n<\/ul>\n<p>i ponownie od pocz\u0105tku. Taki program mia\u0142 jednak <strong>pewien problem<\/strong>, gdy\u017c gdy nic nie zmieniali\u015bmy na potencjometrze, to nasz program ci\u0105gle przelicza\u0142 warto\u015b\u0107 napi\u0119cia na k\u0105t i ci\u0105gle ustawia\u0142 serwo w pozycji, w kt\u00f3rej ju\u017c by\u0142! To g\u0142upie, prawda? Jak na pierwsze rozwi\u0105zanie OK, ale po d\u0142u\u017cszym przyjrzeniu si\u0119 wida\u0107, \u017ce nie jest dobrze. Dlatego zaproponowa\u0142em ulepszy\u0107 program tak, by serwo nie by\u0142o ustawiane gdy pozycja potencjometru si\u0119 nie zmieni\u0142a. W tym celu nale\u017ca\u0142o pami\u0119ta\u0107 poprzednie ustawienia potencjometru (lub poprzedni k\u0105t) i por\u00f3wnywa\u0107 t\u0105 warto\u015b\u0107 z nowymi ustawieniami. Zaproponowa\u0142em taki oto kod:<\/p>\n<pre class=\"lang:arduino decode:true\">#include &lt;Servo.h&gt;\r\n#define potencjometr A0\r\n\r\nServo silniczek;  \r\nvoid setup() {\r\n  Serial.begin(9600);\r\n  silniczek.attach(3);\r\n  pinMode(potencometr, INPUT);\r\n}\r\n\r\nint pot, kat, ost_kat;\r\nvoid loop() {\r\n  pot = analogRead(potencjometr);\r\n  kat = map(pot, 0, 1023, 0, 180);\r\n  if (kat != ost_kat){\r\n    Serial.print(pot);\r\n    Serial.print(\" czyli  \");\r\n    Serial.println(kat);\r\n    silniczek.write(kat);           \r\n    ost_kat=kat;\r\n  }\r\n  delay(100);                 \r\n}<\/pre>\n<p>Gratuluj\u0119 tym, kt\u00f3rym uda\u0142o si\u0119 <strong>samodzielnie<\/strong> na to wpa\u015b\u0107! Przy okazji: w powy\u017cszym programie jest o jedn\u0105 zmienn\u0105 za du\u017co&#8230; nie ma bowiem potrzeby tworzy\u0107 zmiennej\u00a0<em>pot<\/em>. Mo\u017cna si\u0119 jej pozby\u0107 i zast\u0105pi\u0107 dwie linijki tak:<\/p>\n<pre class=\"lang:arduino decode:true\">int kat, ost_kat;\r\nvoid loop() {\r\n  kat = analogRead(potencjometr);\r\n  kat = map(kat, 0, 1023, 0, 180);\r\n...\r\n}<\/pre>\n<p>Kluczowa tutaj linijka to\u00a0 <strong>kat = map(kat, 0, 1023, 0, 180);<\/strong> kt\u00f3r\u0105 nale\u017cy rozumie\u0107 tak, \u017ce\u00a0<strong>nowa<\/strong> warto\u015b\u0107 zmiennej <em>kat<\/em> zostaje ustawioina na postawie funkcji map() ze\u00a0<strong>starej<\/strong> warto\u015bci zmiennej\u00a0<em>kat<\/em>. Symbol = (&#8222;r\u00f3wna si\u0119&#8221;) jest tak zwanym w informatyce operatorem left-assign operator (czyli operator przypisania lewostronnego, tj. najpierw obliczamy wszystko z lewej strony, a dopiero potem obliczona warto\u015b\u0107 przekazana jest to prawej strony &#8211; zmiennej). Z matematycznego punktu widzenia jest to skomplikowana funkcja rekurencyjna&#8230;. ale tutaj symbol <strong>=<\/strong> trzeba rozumie\u0107 w spos\u00f3b informatyczny.<\/p>\n<h2>Pr\u0105d &#8222;zjadany&#8221; przez serwo &#8211; mierzymy!<\/h2>\n<p>W skrajnych ustawieniach serwa (tj. w okolicy 0 stopni, oraz w okolicach 180 stopni) s\u0142yszymy buczenie\/piszczenie serwo-silnika. Co\u015b si\u0119 dzieje. Amperomierz w gar\u015b\u0107 i <strong>mierzymy pr\u0105d<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-294 size-large\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1-1024x654.png\" alt=\"serwo1\" width=\"640\" height=\"409\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1-1024x654.png 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1-300x192.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1-768x491.png 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/serwo1.png 1276w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Przyjrzyj si\u0119 uwa\u017cnie obrazkowi i zwr\u00f3\u0107 uwag\u0119, jak pod\u0142\u0105czony jest amperomierz.<\/p>\n<p>Oczywi\u015bcie w wirtualnym Arduino silniczek serwo jest idealny i nie widzimy tego, co by\u0142o u nas na zaj\u0119ciach&#8230;.<\/p>\n<p>Dodatkowo: w przypadku miernik\u00f3w uniwersalnych ustaw <strong>najwi\u0119ksz\u0105 warto\u015b\u0107 pr\u0105du<\/strong>, jak\u0105 si\u0119 spodziewasz dosta\u0107 &#8211; nie odwrotnie! W przeciwnym przypadku zwi\u0119kszaj\u0105c zakres <strong>przepalisz bezpiecznik<\/strong> w multimetrze&#8230;<\/p>\n<h2>Gratulacje<\/h2>\n<p>Wypada pogratulowa\u0107 jednemu z uczestnik\u00f3w BTXXIw, kt\u00f3ry w mi\u0119dzyczasie zbudowa\u0142 uk\u0142ad steruj\u0105cy serwem za pomoc\u0105&#8230; fotorezystora! To \u015bwietny przyk\u0142ad na to, \u017ce nie ma co si\u0119 nudzi\u0107 na moich zaj\u0119ciach &#8211; je\u015bli wyprzedzasz grup\u0119, wykombinuj co\u015b samemu! A ten projekt nie jest bynajmniej g\u0142upi &#8211; mo\u017ce to by\u0107 sterowanie jakim\u015b silnikiem w kierunku \u015bwiat\u0142a&#8230; Gratuluj\u0119 pomys\u0142owo\u015bci\u00a0<strong>Mariuszowi<\/strong> <strong>Karpowiczowi<\/strong> z II LO. Kto zab\u0142y\u015bnie nast\u0119pnym razem? Nagrody czekaj\u0105 &#8230;<\/p>\n<h2>Praca domowa<\/h2>\n<p>Zbudowa\u0107 uk\u0142ad w wirtualnym Arduino z serwem i zrobi\u0107 tak, aby czyta\u0107 z klawiatury k\u0105t, na jaki nale\u017cy ustawi\u0107 silniczek. Zajrzyj do poprzednich notatek z naszych spotka\u0144 aby przypomnie\u0107 sobie o prawid\u0142owym\u00a0<strong>czytaniu liczb<\/strong> z portu szeregowego Arduino.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzielnik napi\u0119\u0107 Bardzo podstawowa wiedza, ale\u00a0niezb\u0119dna podczas zabawy z Arduino i podobnymi. Dlatego zaj\u0119cia rozpocz\u0119li\u015bmy od dw\u00f3ch rezystor\u00f3w o tej samej warto\u015bci, w\u00f3wczas ze wzoru na dzielnik Uwy= Uwe*R\/(R+R1)= 0.5*Uwe i przy pomocy miernika uniwersalnego mierzyli\u015bmy napi\u0119cie Uwy. Jako \u017ar\u00f3d\u0142o mieli\u015bmy do dyspozycji baterie AAA (r\u00f3\u017cnie &#8211; jedni 2 sztuki, inni 4) o r\u00f3\u017cnych napi\u0119ciu. [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":293,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[51],"tags":[67,75,73,74,76,9,72,71],"class_list":{"0":"post-272","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-talentyxxiw","8":"tag-analogread","9":"tag-dzielnik-napiec","10":"tag-fotoopornik","11":"tag-fotorezystor","12":"tag-map","13":"tag-pwm","14":"tag-servo","15":"tag-serwo","17":"post-with-thumbnail","18":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/272","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=272"}],"version-history":[{"count":11,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/272\/revisions"}],"predecessor-version":[{"id":298,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/272\/revisions\/298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/293"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}