Pred tem smo Joystick povezovali z Arduino UNO, da bi razumeli, kako deluje, in nadzorovali štiri LED na levem, desnem, gornjem in spodnjem premiku. V tem projektu bomo za igranje računalniških iger, ki zahtevajo premike levo, desno, gor in dol, uporabljali enako igralno palico kot Gamepad ali igralni krmilnik. Za igranje iger, ki zahtevajo več možnosti nadzora, lahko uporabite dva ali več igralnih palic. Tu bomo uporabili Arduino Leonardo za povezavo igralne palice kot igralnega krmilnika. Arduino Leonardo ima prednost pred Uno, da lahko nanj namestimo gonilnike USB in ga računalnik ob povezavi zazna kot miško, tipkovnico ali krmilno palčko.
Potrebne komponente
- Arduino Leonardo
- Dvoosni modul Joystick XY
- Arduino IDE
- Priključne žice
Arduino Leonardo
Za ta projekt uporabljamo Arduino Leonardo, to je mikrokrmilna plošča, ki temelji na ATmega32u4. Ima 20 digitalnih vhodno / izhodnih zatičev (od tega jih je 7 mogoče uporabiti kot PWM izhode in 12 kot analogne vhode), 16 MHz kristalni oscilator, priključek micro USB, vtičnico, glavo ICSP in gumb za ponastavitev. Vsebuje vse potrebno za podporo mikrokrmilnika; za začetek ga preprosto priključite na računalnik s kablom USB ali ga napajajte z adapterjem AC-DC ali baterijo.
Leonardo se razlikuje od vseh prejšnjih plošč po tem, da ima ATmega32u4 vgrajeno komunikacijo USB, kar odpravlja potrebo po sekundarnem procesorju. To omogoča Leonardo, da je povezanemu računalniku prikazan kot miška in tipkovnica, poleg navideznih (CDC) serijskih / COM vrat.
Tehnične specifikacije
Mikrokrmilnik | ATmega32u4 |
Delovna napetost | 5V |
Vhodna napetost (priporočeno) | 7-12V |
Vhodna napetost (meje) | 6-20V |
Digitalni I / O zatiči | 20. |
Kanali PWM | 7. |
Analogni vhodni kanali | 12. |
Enosmerni tok na I / O pin | 40 mA |
Enosmerni tok za 3,3V pin | 50 mA |
Flash pomnilnik | 32 KB (ATmega32u4), od tega 4 KB v zagonskem nalagalniku |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Hitrost ure | 16 MHz |
Dolžina | 68,6 mm |
Premer | 53,3 mm |
Utež | 20 g |
Sklic PIN Out
Dvoosni modul Joystick XY
Joysticks so na voljo v različnih oblikah in velikostih. Tipičen modul Joystick je prikazan na spodnji sliki. Ta modul Joystick običajno zagotavlja analogne izhode in izhodne napetosti, ki jih zagotavlja ta modul, se spreminjajo glede na smer, v katero ga premikamo. In smer gibanja lahko dobimo z interpretacijo teh sprememb napetosti z uporabo nekaterih mikrokrmilnikov. Prej smo igralno palico povezali z različnimi mikrokrmilniki:
- Povezava igralne palice z Arduinom
- Povezava igralne palice z Raspberry Pi
- Povezava igralne palice z mikrokrmilnikom PIC
- Joystick povezovanje z AVR mikrokrmilnikom
Ta modul krmilne palice ima dve osi, kot vidite. So osi X in Y. Vsaka os JOY STICK je nameščena na potenciometer ali lonec. Srednji točki teh loncev sta izločeni kot Rx in Ry. Torej sta Rx in Ry spremenljivi točki teh loncev. Ko je igralna palica v pripravljenosti, Rx in Ry delujeta kot delilnik napetosti.
Ko krmilno palčko premikate vzdolž vodoravne osi, se napetost na zatiču Rx spremeni. Podobno se pri premikanju vzdolž navpične osi napetost na zatiču Ry spremeni. Tako imamo štiri smeri igralne palice na dveh izhodih ADC. Ko se palica premakne, napetost na vsakem zatiču postane visoka ali nizka, odvisno od smeri.
Shema vezja
Ta krmilnik igralne palice Arduino zahteva povezave med Arduino in igralno palico, kot sledi:
Koda in delovna razlaga
Na koncu je podana celotna koda z predstavitvenim videoposnetkom; tukaj razlagamo nekaj njegovih pomembnih delov.
Najprej moramo inicializirati knjižnico tipkovnice
#include
Nato v spodnji kodi smo inicializirali osi X in Y modula Joystick za analogni pin A0 oziroma A1.
const int X_pin oziroma const int Y_pin
Prebere se analogna vrednost zatiča VRX in če je vrednost 1023, je podan ukaz za "gor", če je vrednost 0, pa ukaz za "dol".
Podobno se prebere analogna vrednost zatiča VRY in če je vrednost 1023, je podan ukaz za "desno", če je vrednost 0, pa ukaz za "levo".
Joystick ima na vrhu tudi potisni gumb, tako da se prebere tudi ta gumb (SW) in če pritisnete gumb, bo vrednost 0, potem bo dan ukaz za "enter".
Končno zažgite kodo v Arduino in jo povežite z računalnikom.
Nato na nadzorni plošči preverite ' Naprave in tiskalniki', v razdelku za naprave boste lahko videli " Arduino Leonardo", kot je prikazano na spodnji sliki. Zdaj ste pripravljeni igrati z igralno palico.
S to igralno palico lahko nadzorujemo vse kontrolnike iger. Joystick ima v sebi dva potenciometra, enega za premikanje osi X in drugega za premikanje osi Y. Vsak potenciometer dobi 5v od Arduina. Ko premikamo krmilno palčko, se bo vrednost napetosti spreminjala in spreminjala se bo tudi analogna vrednost na analognih nožicah A0 in A1. Krmilna palica bo torej delovala kot igralna ploščica.
Tako lahko običajni igralni palico pretvorite v krmilnik iger z uporabo Arduino Leonardo in ga lahko uporabljate za igranje iger z vsemi kontrolami za premikanje levo, desno, gor in dol. Kot je že dejal Earliar, je mogoče povezati več kot eno igralno palico, da dobite več kontrol, razen teh štirih osnovnih funkcij.