Mayroong iba't ibang mga paraan upang ilipat ang impormasyon mula sa isang tao sa isang microcontroller o computer, at ang isa sa mga ito ay gumagamit ng isang joystick. Tingnan natin kung paano ikonekta ang isang analog na joystick na may dalawang palakol at isang pindutan sa Arduino.
Kailangan iyon
- - Arduino;
- - two-axis joystick;
- - 3 resistors na may nominal na halaga na 220 Ohm;
- - 1 RGB o 3 maginoo LED.
Panuto
Hakbang 1
Ang joystick ay isang maginhawa at madaling gamiting aparato para sa paglilipat ng impormasyon. Mayroong isang malaking bilang ng mga uri ng mga joystick sa mga tuntunin ng bilang ng mga degree ng kalayaan, ang prinsipyo ng pagbabasa ng mga indikasyon at mga teknolohiyang ginamit. Ang mga Joystick ay madalas na ginagamit upang makontrol ang paggalaw ng anumang mga mekanismo, mga kontroladong modelo, robot. Ang analog joystick, na titingnan natin ngayon, ay isang hawakan na nakakabit sa isang ball joint na may dalawang magkatapat na axes. Kapag ang knob ay nakakiling, paikutin ng axis ang palipat-lipat na contact ng potentiometer, dahil sa kung saan ang boltahe sa output nito ay nagbabago. Gayundin, ang analog joystick ay may isang pindutan ng taktika, na kung saan ay na-trigger kapag pinindot mo ang hawakan nang patayo.
Hakbang 2
Ikonekta ang joystick ayon sa diagram sa ibaba. Ikonekta ang mga analog na output X at Y ng joystick sa mga analog input na A1 at A2 ng Arduino, ang output ng SW button sa digital input 8. Ang joystick ay pinalakas ng boltahe na +5 V.
Hakbang 3
Upang malinaw na makita kung paano gumagana ang joystick, magsulat tayo ng gayong sketch. Ipahayag natin ang mga pin, itakda ang mga operating mode para sa kanila. Pansinin na sa pag-setup () na pamamaraan, itinakda namin ang input ng switchPin sa isang mataas na antas. Pinapayagan nito ang built-in na pull-up risistor sa port na ito. Kung hindi mo ito i-on, pagkatapos kapag ang pindutan ng joystick ay hindi pinindot, ang ika-8 Arduino port ay mag-hang sa hangin at mahuli ang mga pickup. Ito ay hahantong sa mga hindi ginustong, magulong maling mga positibo.
Sa pamamaraang loop (), patuloy naming binobola ang estado ng pindutan at ipinapakita ito gamit ang LED sa output 13. Dahil sa pag-input ng switchPin na hinila, ang LED ay patuloy na nakabukas, at kapag pinindot ang pindutan, lumalabas ito, at hindi kabaligtaran.
Susunod, binasa namin ang mga pagbasa ng dalawang potentiometers ng joystick - ang output ng X at axe. Ang Arduino ay mayroong 10-bit ADC, kaya't ang mga halagang binasa mula sa joystick ay namamalagi sa saklaw mula 0 hanggang 1023. Sa gitnang posisyon ng joystick, tulad ng nakikita mo sa ilustrasyon, ang mga halagang nasa rehiyon 500 ay tungkol sa gitna ng saklaw.
Hakbang 4
Karaniwan ang isang joystick ay ginagamit upang makontrol ang mga de-kuryenteng motor. Ngunit bakit hindi ito gamitin upang makontrol ang ningning ng isang LED, halimbawa? Ikonekta natin ang isang RGB LED (o tatlong ordinaryong LEDs) sa mga digital port 9, 10 at 11 ng Arduino ayon sa diagram sa itaas, hindi nalilimutan, siyempre, tungkol sa mga resistors.
Hakbang 5
Babaguhin namin ang ningning ng mga kaukulang kulay kapag binabago ang posisyon ng joystick kasama ang mga palakol, tulad ng ipinakita sa pigura. Dahil sa ang katunayan na ang joystick ay maaaring hindi tumpak na nakasentro ng tagagawa at may gitnang sukatan na hindi humigit-kumulang 512, ngunit mula 490 hanggang 525, ang LED ay maaaring ilaw nang bahagya kahit na ang joystick ay nasa neutral na posisyon. Kung nais mong ganap itong i-off, gawin ang naaangkop na mga susog sa programa.
Hakbang 6
Batay sa diagram sa itaas, magsusulat kami ng isang sketch ng Arduino na kontrolin ang liwanag ng RGB LED gamit ang isang joystick.
Una, idedeklara namin ang pagsusulat ng mga pin at dalawang variable - ledOn at prevSw - para sa pagtatrabaho gamit ang pindutan. Sa pamamaraan ng pag-set up (), italaga ang mga pagpapaandar sa mga pin at ikonekta ang pull-up risistor sa pindutan ng pindutan gamit ang digitalWrite (swPin, HIGH) na utos.
Sa loop () tinutukoy namin ang pagpindot ng pindutan ng joystick. Kapag pinindot mo ang pindutan, lilipat namin ang mga operating mode sa pagitan ng "flashlight" mode at ang "color music" mode.
Sa freeMode () mode, ang ningning ng mga LED ay kinokontrol ng pag-igting ng joystick sa iba't ibang direksyon: mas malakas ang pagkiling sa kahabaan ng axis, mas maliwanag ang kaukulang kulay na kumikinang. Bukod dito, ang pagbabago ng mga halaga ay kinuha ng pagpapaandar ng mapa (halaga, mula saLower, mula saUpper, toLower, toUpper). Ang pagpapaandar ng mapa () ay naglilipat ng mga sinusukat na halaga (mula Mababa, patungo sa Mataas) kasama ang mga axic ng joystick sa nais na saklaw ng ningning (hanggang Mababa, hanggang Mataas). Maaari mong gawin ang pareho sa ordinaryong mga pagpapatakbo ng arithmetic, ngunit ang notasyong ito ay mas maikli.
Sa discoMode () mode, tatlong kulay na halili ang nakakakuha ng ningning at lumabas. Upang makalabas sa loop kapag pinindot ang pindutan, sinusuri namin ang bawat pag-ulit upang makita kung ang pindutan ay pinindot.
Hakbang 7
Ang resulta ay isang flashlight na gawa sa isang tatlong-kulay na RGB LED, ang ningning ng bawat kulay nito ay nakatakda gamit ang isang joystick. At kapag pinindot mo ang pindutan, ang "kulay ng musika" na mode ay naaktibo. Kahit na ginagamit ko ito, sa kabaligtaran, bilang isang night light.
Sa gayon, natutunan namin kung paano ikonekta ang isang analog na two-axis joystick na may isang pindutan sa Arduino at basahin ang mga pagbabasa mula rito. Maaari mong isipin at ipatupad ang isang mas kawili-wiling paggamit ng joystick kaysa sa aming halimbawa.