- Components necessaris
- Arduino Leonardo
- Mòdul de joystick de doble eix XY
- Esquema de connexions
- Codi i explicació de treball
Prèviament, hem relacionat Joystick amb Arduino UNO per entendre el seu funcionament i hem controlat quatre LED al moviment esquerre, dret, amunt i avall. En aquest projecte utilitzarem el mateix Joystick que el Gamepad o el controlador de jocs per jugar a qualsevol joc d’ordinador que requereixi moviments esquerre, dret, amunt i avall. Per jugar a jocs que requereixen més opcions de control, es poden utilitzar dos o més joysticks. Aquí utilitzarem Arduino Leonardo per connectar Joystick com a controlador de jocs. Arduino Leonardo té avantatge respecte a Uno que podem instal·lar-hi controladors USB i que es pot detectar com a ratolí, teclat o joystick per ordinador quan estem connectats.
Components necessaris
- Arduino Leonardo
- Mòdul de joystick de doble eix XY
- IDE Arduino
- Connexió de cables
Arduino Leonardo
Per a aquest projecte estem utilitzant l’Arduino Leonardo, és una placa de microcontrolador basada en l’ATmega32u4. Disposa de 20 pins d'entrada / sortida digitals (dels quals 7 es poden utilitzar com a sortides PWM i 12 com a entrades analògiques), un oscil·lador de cristall de 16 MHz, una connexió micro USB, una presa d'alimentació, una capçalera ICSP i un botó de reinici. Conté tot el necessari per donar suport al microcontrolador; simplement, connecteu-lo a un ordinador amb un cable USB o alimenteu-lo amb un adaptador de CA a CC o una bateria per començar.

El Leonardo és diferent de totes les plaques anteriors, ja que l’ATmega32u4 té una comunicació USB integrada, eliminant la necessitat d’un processador secundari. Això permet que el Leonardo aparegui a un ordinador connectat com a ratolí i teclat, a més d’un port serial / COM virtual (CDC).
Especificacions tècniques
| Microcontrolador | ATmega32u4 |
| Voltatge de funcionament | 5V |
| Voltatge d'entrada (recomanat) | 7-12V |
| Voltatge d'entrada (límits) | 6-20V |
| Pins d'E / S digitals | 20 |
| Canals PWM | 7 |
| Canals d’entrada analògica | 12 |
| Corrent continu per pin d'E / S | 40 mA |
| Corrent continu per a pin de 3,3 V. | 50 mA |
| Memòria flash | 32 KB (ATmega32u4) dels quals 4 KB utilitzats pel gestor d'arrencada |
| SRAM | 2,5 KB (ATmega32u4) |
| EEPROM | 1 KB (ATmega32u4) |
| Velocitat del rellotge | 16 MHz |
| Llargada | 68,6 mm |
| Amplada | 53,3 mm |
| Pes | 20 g |
Referència de sortida PIN

Mòdul de joystick de doble eix XY
Els joysticks estan disponibles en diferents formes i mides. A la figura següent es mostra un mòdul Joystick típic. Aquest mòdul Joystick normalment proporciona sortides analògiques i les tensions de sortida proporcionades per aquest mòdul continuen canviant segons la direcció en què el movem. I podem obtenir la direcció del moviment interpretant aquests canvis de voltatge mitjançant algun microcontrolador. Anteriorment interfacàvem joystick amb diferents microcontroladors:
- Interfície del joystick amb Arduino
- Interfície del joystick amb Raspberry Pi
- Interfície del joystick amb microcontrolador PIC
- Interfície de joystick amb microcontrolador AVR

Aquest mòdul joystick té dos eixos com podeu veure. Són eixos X i eix Y. Cada eix de JOY STICK està muntat a un potenciòmetre o pot. Els punts mitjans d’aquests testos són expulsats com Rx i Ry. Per tant, Rx i Ry són punts variables d’aquests pots. Quan el joystick està en espera, Rx i Ry actuen com a divisors de tensió.
Quan el joystick es mou al llarg de l’eix horitzontal, el voltatge del pin Rx canvia. De la mateixa manera, quan es mou al llarg de l'eix vertical, la tensió al pin Ry canvia. Per tant , tenim quatre direccions del joystick en dues sortides ADC. Quan es mou el pal, el voltatge de cada passador augmenta o baixa segons la direcció.
Esquema de connexions
Aquest controlador de jocs Arduino Joystick requereix connexions entre l’Arduino i el Joystick de la següent manera:



Codi i explicació de treball
Al final es dóna un codi complet amb un vídeo de demostració; aquí n’expliquem una part important.
En primer lloc, hem d’inicialitzar la biblioteca de teclats
#incloure
A continuació, al codi següent, hem inicialitzat els eixos X i Y del mòdul Joystick per al pin analògic A0 i A1 respectivament.
const int X_pin i const int Y_pin respectivament
Es llegeix el valor analògic del pin VRX i, si el valor és 1023, es dóna l'ordre per a "pujar" i, si el valor és 0, es dóna l'ordre per a "baix".
De la mateixa manera, es llegeix el valor analògic del pin VRY i, si el valor és 1023, es dóna l'ordre per a "dreta" i, si el valor és 0, es dóna l'ordre per a "esquerra".
El joystick també té un polsador a la part superior, de manera que també es llegeix aquest botó (SW) i, si es prem el botó, el valor serà 0, es dóna l'ordre "enter".
Finalment, graveu el codi a Arduino i connecteu-lo a l'ordinador.
A continuació, comproveu els " Dispositius i impressores" al tauler de control, podreu veure " Arduino Leonardo" a la secció de dispositius, tal com es mostra a la imatge següent. Ara ja podeu jugar amb el joystick.

Podem controlar els controls de qualsevol joc mitjançant aquest joystick. El joystick té dos potenciòmetres a l’interior, un és per al moviment de l’eix X i un altre per al moviment de l’eix Y. Cada potenciòmetre obté 5v de l’Arduino. Així, a mesura que movem el joystick, el valor de la tensió canviarà i el valor analògic als pins analògics A0 i A1 també canviarà. De manera que el joystick actuarà com un gamepad.

Així doncs, així es pot convertir un Joystick normal en un controlador de jocs mitjançant Arduino Leonardo i es pot utilitzar per jugar a jocs que tinguin tots els controls per moure’s cap a l’esquerra, la dreta, cap amunt i cap avall. Com es va dir a Earliar, es pot connectar més d'un Joystick per obtenir més controls que no siguin aquestes quatre funcions bàsiques.
