- Componente necesare
- Arduino Leonardo
- Modulul Joystick cu două axe XY
- Diagrama circuitului
- Cod și explicație de lucru
Am interfațat anterior Joystick-ul cu Arduino UNO pentru a înțelege cum funcționează și am controlat patru LED-uri din stânga, dreapta, sus și jos mișcare. În acest proiect vom folosi același Joystick ca Gamepad sau controler de joc pentru a juca orice jocuri pe computer care necesită mișcări stânga, dreapta, sus și jos. Pentru a juca jocuri care necesită mai multe opțiuni de control, pot fi utilizate două sau mai multe joystick-uri. Aici vom folosi Arduino Leonardo pentru a interfața Joystick ca controler de joc. Arduino Leonardo are avantajul față de Uno că putem instala drivere USB pe acesta și poate fi detectat ca mouse, tastatură sau joystick de computer atunci când este conectat.
Componente necesare
- Arduino Leonardo
- Modulul Joystick cu două axe XY
- IDE Arduino
- Conectarea firelor
Arduino Leonardo
Pentru acest proiect folosim Arduino Leonardo, este o placă de microcontroler bazată pe ATmega32u4. Are 20 de pini de intrare / ieșire digitale (dintre care 7 pot fi folosiți ca ieșiri PWM și 12 ca intrări analogice), un oscilator de cristal de 16 MHz, o conexiune micro USB, o mufă de alimentare, un antet ICSP și un buton de resetare. Conține tot ce este necesar pentru a sprijini microcontrolerul; pur și simplu conectați-l la un computer cu un cablu USB sau alimentați-l cu un adaptor AC-DC sau baterie pentru a începe.
Leonardo este diferit de toate plăcile precedente prin faptul că ATmega32u4 are o comunicație USB încorporată, eliminând necesitatea unui procesor secundar. Acest lucru permite Leonardo să apară la un computer conectat ca mouse și tastatură, pe lângă un port serial / COM virtual (CDC).
Specificatii tehnice
Microcontroler | ATmega32u4 |
Tensiunea de funcționare | 5V |
Tensiunea de intrare (recomandată) | 7-12V |
Tensiunea de intrare (limite) | 6-20V |
Pinuri I / O digitale | 20 |
Canalele PWM | 7 |
Canale de intrare analogică | 12 |
Curent continuu per pin I / O | 40 mA |
Curent continuu pentru 3,3V Pin | 50 mA |
Memorie flash | 32 KB (ATmega32u4) din care 4 KB folosiți de bootloader |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Viteza ceasului | 16 MHz |
Lungime | 68,6 mm |
Lăţime | 53,3 mm |
Greutate | 20 g |
Referință PIN Out
Modulul Joystick cu două axe XY
Joystick-urile sunt disponibile în diferite forme și dimensiuni. Un modul tipic Joystick este prezentat în figura de mai jos. Acest modul Joystick oferă de obicei ieșiri analogice și tensiunile de ieșire furnizate de acest modul continuă să se schimbe în funcție de direcția în care îl deplasăm. Și putem obține direcția de mișcare interpretând aceste modificări de tensiune folosind un microcontroler. Anterior am interfațat joystick-ul cu diferite microcontrolere:
- Interfațarea joystick-ului cu Arduino
- Interfațarea joystick-ului cu Raspberry Pi
- Interfațarea joystick-ului cu microcontrolerul PIC
- Interfață joystick cu microcontroler AVR
Acest modul joystick are două axe, după cum puteți vedea. Acestea sunt axa X și axa Y. Fiecare axă JOY STICK este montată pe un potențiometru sau oală. Punctele de mijloc ale acestor oale sunt alungate ca Rx și Ry. Deci Rx și Ry sunt puncte variabile ale acestor pot-uri. Când joystick-ul este în standby, Rx și Ry acționează ca divizor de tensiune.
Când joystick-ul este deplasat de-a lungul axei orizontale, tensiunea la pinul Rx se schimbă. În mod similar, atunci când este deplasat de-a lungul axei verticale, tensiunea la pinul Ry se schimbă. Deci, avem patru direcții ale Joystick-ului pe două ieșiri ADC. Când butonul este mișcat, tensiunea pe fiecare știft crește sau scade în funcție de direcție.
Diagrama circuitului
Acest controler de joc Arduino Joystick necesită conexiuni între Arduino și Joystick după cum urmează:
Cod și explicație de lucru
Codul complet cu un videoclip demonstrativ este dat la final; aici explicăm câteva părți importante din aceasta.
În primul rând, trebuie să inițializăm biblioteca de tastatură
#include
În continuare, în codul de mai jos, am inițializat axele X și Y ale modulului Joystick pentru pinul analogic A0 și respectiv A1.
const int X_pin și respectiv const int Y_pin
Se citește valoarea analogică a pinului VRX și dacă valoarea este 1023, atunci este dată comanda pentru „sus” și dacă valoarea este 0, atunci este dată comanda pentru „jos”.
În mod similar, se citește valoarea analogică a pinului VRY și dacă valoarea este 1023, atunci este dată comanda pentru „dreapta” și dacă valoarea este 0, atunci este dată comanda pentru „stânga”.
Joystick-ul are și un buton în partea de sus, astfel încât acest buton (SW) este, de asemenea, citit și, dacă butonul este apăsat, valoarea va fi 0, atunci este dată comanda pentru „enter”.
În cele din urmă, ardeți codul în Arduino și conectați Arduino la computer.
Apoi verificați „ Dispozitive și imprimante” din panoul de control, veți putea vedea „ Arduino Leonardo” în secțiunea dispozitive, așa cum se arată în imaginea de mai jos. Acum sunteți gata să vă jucați cu joystick-ul.
Putem controla orice comenzi de joc folosind acest joystick. Joystick-ul are două potențiometre în interior, unul este pentru mișcarea axei X și altul este pentru mișcarea axei Y. Fiecare potențiometru primește 5v de la Arduino. Deci, pe măsură ce deplasăm joystick-ul, valoarea tensiunii se va schimba, iar valoarea analogică la pinii analogici A0 și A1 se va schimba, de asemenea. Deci, joystick-ul va acționa ca un gamepad.
Deci, așa se poate converti un Joystick normal într-un controler de joc folosind Arduino Leonardo și poate fi folosit pentru a juca jocuri având toate comenzile pentru a vă deplasa la stânga, la dreapta, în sus și în jos. După cum sa spus, mai mult de un joystick poate fi interfațat pentru a obține mai multe controale, în afară de aceste patru funcții de bază.