{"id":401,"date":"2016-10-09T06:46:03","date_gmt":"2016-10-09T06:46:03","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=401"},"modified":"2016-10-09T18:16:41","modified_gmt":"2016-10-09T18:16:41","slug":"zajecia-nr-6-fotorezystor-dzielnik-napiec-map-serwo-silnik-i-znowu-map","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=401","title":{"rendered":"Zaj\u0119cia nr 6 &#8211; pilot IR, fotorezystor, map() i serwa"},"content":{"rendered":"<h2>Pilot na podczerwie\u0144 &#8211; TSOP22xx<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-312 alignleft\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/tsop22xx-300x227.png\" alt=\"tsop22xx\" width=\"300\" height=\"227\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/tsop22xx-300x227.png 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/06\/tsop22xx.png 416w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Czyli wykorzystujemy bibliotek\u0119\u00a0<strong>IRLib<\/strong> wraz z czujk\u0105 TSOP22xx. Przy tej okazji pokaza\u0142em, jak instalowac biblioteki w Arduino IDE na 2 sposoby: z pliku zip, oraz ze \u015brodowiska.<\/p>\n<p>Cujka TSOP22xx po\u017cera bardzo ma\u0142o pr\u0105du (jedynie 5 mA &#8211; patrz nota katalogowa) i dlatego zdecydowa\u0142em si\u0119 pokaza\u0107 Wam pod\u0142\u0105czenie jej bezpo\u015brednio do p\u0142ytki Arduino (czyli bez przewod\u00f3w lub p\u0142ytki stykowej). Jedna n\u00f3\u017cka czujki siedzia\u0142a w GND, druga w pinie numer 13 (zasilanie VCC) a trzecia &#8211; sygna\u0142owa &#8211; w pinie 12 Arduino &#8211; bardzo stabilna konfiguracja. Nale\u017ca\u0142o tylko w\u0142\u0105czy\u0107 zasilanie na 13-tce aby odbiornik podczerwieni pracowa\u0142 &#8211; \u00a0ale to ju\u017c powinni\u015bmy umie\u0107 (ponownie: pami\u0119tacie &#8222;zabawy&#8221; z LED-ami? no w\u0142a\u015bnie po to one wszystkie&#8230;).<\/p>\n<p>Nasz pierwszy projekt polega\u0142 na odczytywaniu kod\u00f3w klawiszy z domowego pilota, a potem sterowanie trzema LEDami. Przy tej okazji poznali\u015bmy te\u017c wygodny zamiennik instrukcji <strong>if\/else<\/strong> w j\u0119zyku C &#8211; a mianowicie <strong>switch\/case<\/strong>.<\/p>\n<h2>Dzielnik napi\u0119\u0107<\/h2>\n<p>Wr\u00f3cili\u015bmy do dzielnika aby pobawi\u0107 si\u0119 miernikami oraz&#8230; aby za chwil\u0119 wykorzysta\u0107 je w projekcie inteligentnego o\u015bwietlenia sterowanego Arduio. Ale to za chwil\u0119. Najpierw fajna (mam nadziej\u0119) zabawa z multimetrem \ud83d\ude09<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\" \/><\/p>\n<p>Dzielnik napi\u0119\u0107 &#8211; 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. Najpierw ka\u017cdy z nas ustali\u0142 wi\u0119c, co ma na swojej p\u0142ytce aby kontrolowa\u0107 sw\u00f3j uk\u0142ad.<\/p>\n<h2>Odczyt zastanego o\u015bwietlenia<\/h2>\n<p>W tym \u0107wiczeniu do zbudowanego uk\u0142adu pod\u0142\u0105czyli\u015bmy Arduino z pinem analogowym i odczytywali\u015bmy napi\u0119cie, niezale\u017cnie od miernika &#8211; to wa\u017cne, aby <strong>kontrolowa\u0107<\/strong> to co wypisuje nam Arduino <strong>niezale\u017cnym miernikiem<\/strong> (u nas multimetrem). Ponownie okaza\u0142o si\u0119, \u017ce aby otrzyma\u0107 wyniki bardzo zbli\u017cone do multimetru nale\u017ca\u0142o najpierw upewni\u0107 si\u0119 jakie mamy faktycznie napi\u0119cie 5V w naszym Arduino (wiadomo &#8211; uczniowie\/studenci pope\u0142niaj\u0105 b\u0142\u0119dy &#8211;\u00a0 a kto nie! &#8211; i p\u0142ytka si\u0119 uszkadza&#8230;. s\u0105 wi\u0119c p\u0142ytki z napi\u0119ciem 4.7V zamiast katalogowych 5V).<\/p>\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 z <strong>przyk\u0142adem<\/strong> <strong>Fade<\/strong>).\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, 255, 0);<\/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 0 (pierwsze r\u00f3wnanie: y=255 gdy x=0), oraz chc\u0119, by mie\u0107 warto\u015b\u0107 y=0 gdy podaj\u0119 x=1023 (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-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<p><em>St<\/em>erowanie jasno\u015bci\u0105 LDEa przez PWM robili\u015bmy poleceniem analogWrite(9, <strong>war2<\/strong>);<\/p>\n<p>Okaza\u0142o si\u0119, \u017ce aby wszystko dzia\u0142a\u0142o do\u015b\u0107 widowiskowo nale\u017ca\u0142o najpierw <strong>wyskalowa\u0107<\/strong> nasze odczyty jasno\u015bci zastanej zmniejszaj\u0105c zakres&#8230;. W wielu przypadkach by\u0142o wi\u0119c potrzebne:<\/p>\n<p><em>war2\u00a0<\/em>= map(<em>war<\/em>, <strong>400, 800<\/strong>, 255, 0);<\/p>\n<p>co sprawdzi\u0142o si\u0119 <em>metod\u0105 pr\u00f3b-i-b\u0142\u0119d\u00f3w<\/em> &#8211; w tym celu mocno <strong>debugowali\u015bmy<\/strong> nasz kod wypisuj\u0105c na ekran monitora odczytywane liczby.<\/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 z klawiatury<\/h2>\n<p>Przypomnieli\u015bmy sobie jak odczytywa\u0107 liczby z klawiatury (funkcja <strong>parseInt()<\/strong> dla obiektu Serial) i stworzyli\u015bmy program ustawiaj\u0105cy silnik w pozycji wczytanej z klawiatury. Proste a przyjemne. No i zawsze warto powtarza\u0107 wiedz\u0119 \ud83d\ude09<\/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>Serwo sterowane pilotem na podczerwie\u0144<\/h2>\n<p>W tym przyk\u0142adzie wr\u00f3cili\u015bmy do pocz\u0105tku zaj\u0119\u0107 i ponownie wykorzystali\u015bmy pilot od telewizora\u00a0 &#8211; tym razem czytywali\u015bmy klawisze i ustawiali\u015bmy serwo na konkretn\u0105 warto\u015b\u0107 k\u0105ta. Dwa przyciski obraca\u0142y serwo w lewo i w prawo, trzeci za\u015b ustawia\u0142 serwo w pozycj\u0119 90 stopni.<\/p>\n<h2>Serwo pracy ci\u0105g\u0142ej (aka 360 stopni)<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"bigpic\" class=\"alignleft\" title=\"Serwo obrotowe360stop. FS90R 1,3kg\/cm Feetech\" src=\"https:\/\/mageek.com.pl\/714-large_default\/serwo-obrotowe360stop-fs90r-13kgcm-feetech.jpg\" alt=\"Serwo obrotowe360stop. FS90R 1,3kg\/cm Feetech\" width=\"164\" height=\"164\" \/>Poznali\u015bmy te\u017c serwa obracaj\u0105ce si\u0119 &#8222;w k\u00f3\u0142ko&#8221;, ale z kontrol\u0105 szybko\u015bci swoich obrot\u00f3w. Sterowanie polega\u0142o na u\u017cywaniu funkcji <strong>writeMicroseconds()<\/strong>, w kt\u00f3rej komenda STOP dla silnika wymaga\u0142a podania wype\u0142nienia 1500 ms, natomiast wype\u0142nienie z zakresu 1501-2000 ms oznacza\u0142o obr\u00f3t w praw\u0105 stron\u0119 z pr\u0119dko\u015bci\u0105 proporcjonaln\u0105 do tego wype\u0142nienia (i analogicznie z obrotami w lew\u0105 stron\u0105 &#8211; wype\u0142nienie z przedzia\u0142u 1000-1499 ms).<\/p>\n<p>Ta sama funkcja <strong>writeMicroseconds()<\/strong> mo\u017ce by\u0107 przydatna w korygowaniu niedoskona\u0142o\u015bci tanich, chi\u0144skich serw, kt\u00f3re nie trzymaj\u0105 katalogowych parametr\u00f3w &#8211; obr\u00f3t od 0 do 180 stopni. Prosz\u0119 tylko obchodzi\u0107 si\u0119 z ni\u0105 ostro\u017cnie, bo z poprzedniego \u0107wiczenia &#8211; gdzie mierzyli\u015bmy pr\u0105d zjadany przez serwo &#8211; wiemy, \u017ce du\u017co si\u0119 dzieje w skrajnych po\u0142o\u017ceniach.<\/p>\n<h2>Koniec? Pocz\u0105tek!<\/h2>\n<p>Z <strong>wielkim niedosytem<\/strong> ko\u0144czymy nasze spotkania w ramach Talent\u00f3w XXI w. Niedosyt bierze si\u0119 z faktu, \u017ce umiemy obs\u0142ugiwa\u0107 kilka fajnych &#8222;klock\u00f3w&#8221; i a\u017c si\u0119 prosi, aby je teraz po\u0142\u0105czy\u0107 w jak\u0105\u015b ca\u0142o\u015b\u0107 (samochodzik sterowany pilotem, albo obrotowa wie\u017cyczka z laserem). Ale czas naszych spotka\u0144 dobieg\u0142 ko\u0144ca. C\u00f3\u017c&#8230; <strong>zach\u0119cam do samodzielnej<\/strong> pracy i koniecznie pochwalcie si\u0119 swoimi osi\u0105gni\u0119ciami &#8211; dlatego dla Was jest to <strong>pocz\u0105tek<\/strong> przygody z Arduino (mam nadziej\u0119!). Prosz\u0119 \u015bmia\u0142o pisa\u0107 do mnie na email! Pozdrawiam i dzi\u0119kuj\u0119 za wsp\u00f3ln\u0105 prac\u0119, <em>K. Gawryluk<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pilot na podczerwie\u0144 &#8211; TSOP22xx Czyli wykorzystujemy bibliotek\u0119\u00a0IRLib wraz z czujk\u0105 TSOP22xx. Przy tej okazji pokaza\u0142em, jak instalowac biblioteki w Arduino IDE na 2 sposoby: z pliku zip, oraz ze \u015brodowiska. Cujka TSOP22xx po\u017cera bardzo ma\u0142o pr\u0105du (jedynie 5 mA &#8211; patrz nota katalogowa) i dlatego zdecydowa\u0142em si\u0119 pokaza\u0107 Wam pod\u0142\u0105czenie jej bezpo\u015brednio do p\u0142ytki [&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":[81],"tags":[67,75,73,74,76,9,72,71],"class_list":{"0":"post-401","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-talentyxxiw_bis","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\/401","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=401"}],"version-history":[{"count":4,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/401\/revisions"}],"predecessor-version":[{"id":406,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/401\/revisions\/406"}],"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=401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}