En aquesta sessió anem a la interfície d’un joystick amb Raspberry Pi. El joystick s’utilitza principalment per jugar a diversos jocs. Tot i que els joysticks de tipus USB són fàcils de connectar, però avui connectarem Joystick a través dels pins GPIO de Raspberry Pi, això serà molt útil en molts casos.
Mòdul Raspberry Pi i Joystick:
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 hem utilitzat el microcontrolador AVR amb Joystick.

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ó.
Com sabem, Raspberry Pi no té un mecanisme intern ADC (convertidor analògic a digital). Per tant, aquest mòdul no es pot connectar directament al Pi. Utilitzarem comparadors basats en amplificadors operatius per comprovar les sortides de tensió. Aquests amplificadors OP proporcionen senyals a Raspberry Pi i Pi que commuta els LED segons els senyals. Aquí hem utilitzat quatre LED per indicar el moviment del joystick en quatre direccions. Consulteu el vídeo de demostració al final.
Cadascun dels 17 pins GPIO no pot tenir una tensió superior a + 3,3 V, de manera que les sortides d'amplificador operatiu no poden ser superiors a 3,3 V. Per tant, hem triat op-amp LM324, aquest CI té un amplificador operatiu quadruple que pot funcionar a 3V. Amb aquest CI, tenim sortides adequades per a les sortides dels nostres pins GPIO de Raspberry pi. Obteniu més informació sobre els pins GPIO de Raspberry Pi aquí. Consulteu també la nostra sèrie de tutorials Raspberry Pi juntament amb alguns bons projectes IoT.
Components necessaris:
Aquí fem servir Raspberry Pi 2 Model B amb Raspbian Jessie OS. Tots els requisits bàsics de maquinari i programari s’han comentat prèviament. Podeu consultar-los a la Introducció de Raspberry Pi i al LED Raspberry PI Parpellejant per començar, a part del que necessitem:
- Condensador de 1000µF
- Mòdul Joystick
- IC amplificador operatiu LM324
- Resistència 1KΩ (12 peces)
- LED (4 peces)
- Resistència de 2,2 KΩ (4 peces)
Esquema de connexions:
Hi ha quatre comparadors OP-AMP dins del LM324 IC per detectar quatre direccions del joystick. A continuació es mostra el diagrama de LM324 IC del seu full de dades.

Les connexions que es fan per al mòdul Interfacing Joystick amb Raspberry Pi es mostren al diagrama de circuits següent. U1: A, U1: B, U1: C, U1: D indica els quatre comparadors de LM324. Hem mostrat cada comparador al diagrama del circuit amb el corresponent Pin núm. de LM324 IC.

Explicació de treball:
Per detectar el moviment del joystick al llarg de l’eix Y, tenim OP-AMP1 o U1: A i OP-AMP2 o U1: B, i per detectar el moviment del joystick al llarg de l’eix X, tenim OP-AMP3 o U1: C i OP-AMP4 o U1: D.
OP-AMP1 detecta el moviment a la baixa del joystick al llarg de l'eix Y:
Terminal negatiu del comparador U1: A es proporciona amb 2,3 V (mitjançant circuit divisor de tensió per 1 K i 2,2 K) i el terminal positiu està connectat a Ry. En moure el joystick cap avall al llarg del seu eix Y, el voltatge de Ry augmenta. Una vegada que aquest voltatge supera els 2,3 V, OP-AMP proporciona una sortida de + 3,3 V al pin de sortida. Aquesta sortida lògica HIGH d’OP-AMP serà detectada per Raspberry Pi i Pi respon commutant un LED.
OP-AMP2 detecta el moviment cap amunt del joystick al llarg de l’eix Y:
Terminal negatiu del comparador U1: B es proporciona amb 1.0V (mitjançant circuit divisor de tensió per 2.2K i 1K) i el terminal positiu està connectat a Ry. En moure el joystick cap amunt al llarg del seu eix Y, la tensió de Ry disminueix. Un cop aquest voltatge és inferior a 1,0 V, la sortida OP-AMP baixa. Aquesta sortida lògica BAIX d’OP-AMP serà detectada per Raspberry Pi i Pi respon commutant un LED.
OP-AMP3 detecta el moviment de la palanca esquerra al llarg de l’eix X:
Terminal negatiu del comparador U1: C es proporciona amb 2,3 V (mitjançant circuit divisor de tensió per 1 K i 2,2 K) i el terminal positiu està connectat a Rx. En moure el joystick cap a l’esquerra al llarg de l’eix x, augmenta la tensió Rx. Una vegada que aquest voltatge supera els 2,3 V, OP-AMP proporciona una sortida de + 3,3 V al pin de sortida. Aquesta sortida lògica HIGH d’OP-AMP serà detectada per Raspberry Pi i Pi respon commutant un LED.
OP-AMP4 detecta el moviment lateral dret del joystick al llarg de l’eix X:
El terminal negatiu del comparador U1: 4 es subministra amb 1.0V (mitjançant circuit divisor de tensió per 2.2K i 1K) i el terminal positiu està connectat a Rx. En moure el joystick cap a la dreta al llarg de l’eix x, la tensió Rx disminueix. Un cop aquest voltatge és inferior a 1,0 V, la sortida OP-AMP baixa. Aquesta sortida lògica BAIX d’OP-AMP serà detectada per Raspberry Pi i Pi respon commutant un LED.
D’aquesta manera, totes les quatre lògiques, que determinen les quatre direccions del Joystick, es connecten a Raspberry Pi. Raspberry Pi pren les sortides d’aquests comparadors com a entrades i respon en conseqüència alternant els LED. A continuació es mostren els resultats al terminal del Raspberry Pi, ja que també hem imprès la direcció del joystick al terminal mitjançant el nostre codi Python.

A continuació es mostra el codi i el vídeo de Python. El codi és fàcil i es pot entendre pels comentaris que es donen al codi.
