- Būtini komponentai
- Arduino Leonardo
- Dvigubos ašies XY vairasvirtės modulis
- Grandinės schema
- Kodas ir darbo paaiškinimas
Anksčiau mes susiejome „Joystick“ su „Arduino UNO“, kad suprastume, kaip jis veikia, ir valdėme keturis šviesos diodus kairiajame, dešiniajame, aukštyn ir žemyn judesyje. Šiame projekte naudosime tą pačią vairasvirtę kaip „Gamepad“ ar žaidimų valdiklį, kad žaisime bet kokius kompiuterinius žaidimus, kuriems reikia judėti kairėn, dešinėn, aukštyn ir žemyn. Norėdami žaisti žaidimus, kuriems reikalingos daugiau valdymo parinkčių, galima naudoti dvi ar daugiau vairasvirtių. Čia naudosime „Arduino Leonardo“ sąsajai su „Joystick“ kaip žaidimo valdikliu. „Arduino Leonardo“ turi pranašumą prieš „Uno“, kad mes galime jame įdiegti USB tvarkykles ir prijungus kompiuterį jį galima aptikti kaip pelę, klaviatūrą ar vairasvirtę.
Būtini komponentai
- Arduino Leonardo
- Dvigubos ašies XY vairasvirtės modulis
- „Arduino IDE“
- Jungiamieji laidai
Arduino Leonardo
Šiam projektui naudojame „Arduino Leonardo“, tai yra mikrovaldiklio plokštė, pagrįsta „ATmega32u4“. Jame yra 20 skaitmeninių įvesties / išvesties kaiščių (iš kurių 7 gali būti naudojami kaip PWM išėjimai ir 12 kaip analoginiai įėjimai), 16 MHz kristalinis osciliatorius, „micro USB“ jungtis, maitinimo lizdas, ICSP antraštė ir atstatymo mygtukas. Jame yra viskas, ko reikia mikrovaldikliui palaikyti; paprasčiausiai prijunkite jį prie kompiuterio USB kabeliu arba maitinkite naudodami kintamosios srovės ir nuolatinės srovės adapterį arba akumuliatorių, kad pradėtumėte.
„Leonardo“ skiriasi nuo visų ankstesnių plokščių tuo, kad „ATmega32u4“ turi įmontuotą USB ryšį, todėl nebereikia antrinio procesoriaus. Tai leidžia „Leonardo“ prisijungusiam kompiuteriui pasirodyti kaip pele ir klaviatūra, be virtualaus (CDC) nuoseklaus / COM prievado.
Techninės specifikacijos
Mikrovaldiklis | ATmega32u4 |
Darbinė įtampa | 5V |
Įvesties įtampa (rekomenduojama) | 7-12V |
Įvesties įtampa (ribos) | 6-20V |
Skaitmeniniai įvesties / išvesties kaiščiai | 20 |
PWM kanalai | 7 |
Analoginiai įvesties kanalai | 12 |
DC srovė vienam įvesties / išvesties kaiščiui | 40 mA |
DC srovė 3,3 V kaiščiui | 50 mA |
„Flash“ atmintis | 32 KB (ATmega32u4), iš kurių 4 KB naudoja bootloader |
SRAM | 2,5 KB („ATmega32u4“) |
EEPROM | 1 KB (ATmega32u4) |
Laikrodžio greitis | 16 MHz |
Ilgis | 68,6 mm |
Plotis | 53,3 mm |
Svoris | 20 g |
PIN kodo nuoroda
Dvigubos ašies XY vairasvirtės modulis
Vairas yra įvairių formų ir dydžių. Tipinis „ Joystick“ modulis parodytas paveikslėlyje žemiau. Šis vairasvirtės modulis paprastai teikia analoginius išėjimus, o šio modulio teikiamos išėjimo įtampos nuolat keičiasi atsižvelgiant į kryptį, kuria mes jį judame. Ir mes galime gauti judėjimo kryptį interpretuodami šiuos įtampos pokyčius naudodami kokį nors mikrovaldiklį. Anksčiau mes sujungėme džiaugsmo lazdą su skirtingais mikrovaldikliais:
- „Joystick“ sąsaja su „Arduino“
- „Joystick“ sąsaja su „Raspberry Pi“
- Sąsajos vairasvirtė su PIC mikrovaldikliu
- Vairasvirtės sąsaja su AVR mikrovaldikliu
Šis vairasvirtės modulis turi dvi ašis, kaip matote. Jie yra X ir Y ašys. Kiekviena JOY STICK ašis pritvirtinta prie potenciometro ar puodo. Šių puodų vidurio taškai išstumiami kaip Rx ir Ry. Taigi Rx ir Ry yra kintantys šių puodų taškai. Kai vairasvirtė yra budėjimo režime, Rx ir Ry veikia kaip įtampos daliklis.
Kai vairasvirtė perkeliama išilgai horizontalios ašies, Rx kaiščio įtampa pasikeičia. Panašiai, kai ji juda išilgai vertikalios ašies, Ry kaičio įtampa keičiasi. Taigi mes turime keturias vairasvirtės kryptis dviem ADC išėjimais. Judinant lazdą, kiekvieno kaiščio įtampa padidėja arba sumažėja, priklausomai nuo krypties.
Grandinės schema
Šiam „ Arduino“ vairasvirtės žaidimų valdikliui reikalingi ryšiai tarp „Arduino“ ir vairasvirtės taip:
Kodas ir darbo paaiškinimas
Pabaigoje pateikiamas visas kodas su demonstraciniu vaizdo įrašu; čia mes paaiškiname keletą svarbių jo dalių.
Pirma, turime inicijuoti klaviatūros biblioteką
# įtraukti
Toliau žemiau esančiame kode mes inicijavome „Joystick“ modulio X ir Y ašis atitinkamai analoginiam kaiščiui A0 ir A1.
const int X_pin ir const int Y_pin
Nuskaitoma analogiška VRX kaiščio reikšmė ir, jei vertė lygi 1023, pateikiama komanda „aukštyn“, o jei vertė yra 0, pateikiama komanda „žemyn“.
Panašiai nuskaitoma analoginė VRY kaiščio reikšmė ir, jei vertė lygi 1023, pateikiama komanda „dešinėn“, o jei reikšmė yra 0, pateikiama komanda „kairėn“.
Vairasvirtėje taip pat yra mygtukas viršuje, todėl šis mygtukas (SW) taip pat yra nuskaitomas, o paspaudus mygtuką vertė bus 0, tada bus suteikta komanda „Enter“.
Galiausiai įrašykite kodą į „Arduino“ ir prijunkite „Arduino“ su kompiuteriu.
Tada valdymo skydelyje patikrinkite „ Įrenginiai ir spausdintuvai“ , įrenginių skyriuje galėsite pamatyti „ Arduino Leonardo“, kaip parodyta žemiau esančiame paveikslėlyje. Dabar esate pasirengęs žaisti vairasvirte.
Bet kurią žaidimo kontrolę galime valdyti naudodami šią vairasvirtę. Vairasvirtėje yra du potenciometrai, vienas skirtas X ašiai, kitas - Y ašiai. Kiekvienas potenciometras gauna 5 V iš „Arduino“. Taigi, kai mes judame vairasvirtę, įtampos vertė pasikeis, o analoginė vertė analoginiuose kaiščiuose A0 ir A1 taip pat pasikeis. Taigi vairasvirtė veiks kaip žaidimų pultas.
Taigi įprasta vairasvirtė gali būti paversta žaidimų valdikliu naudojant „Arduino Leonardo“ ir gali būti naudojama žaidimams žaisti, turint visus valdiklius judėti kairėn, dešinėn, aukštyn ir žemyn. Kaip pasakojo ausininkui, galima susieti daugiau nei vieną vairasvirtę, kad gautumėte daugiau valdiklių, išskyrus šias keturias pagrindines funkcijas.