Joystick per Arduino: Input Shield

Nell’ultimo ordine di materiale per i tutorial del sito ho anche ordinato un joystick per arduino: la Input Shield

Input Shield joystick

Questa scheda di espansione integra un joystick per arduino e 3 pulsanti, è concepita per essere l’ultima schiedl da inserire nel tuo progetto infatti i connettori sono presenti solo nella parte bassa della shield.

Ti offre la possibilità di saldare un connettore din femmina o dei cavi diretti in corrispondenza delle uscite digitali (visibili in foto) e di collegare gli input analogici A2-A5 a sensori esterni utilizzando il connettore, din maschio, posto sul retro della shield in cui sono presenti altri 2 pin: +5v e Gnd.

Un’altro connettore, questa volta composto da din femmina, posto a ridosso del pulsante bleu che presenta le connesioni Tx ed RX oltre ad un +5v e Gnd.

Lo schema del Joystick

Sul sito della DFROBOT è possibile trovare oltre alla presentazione della shield anche lo schema, in perfetta ottica Arduino e open-source:

Input Shield joystick

Nello schema puoi facilmente intuire i collegamenti in quanto molto semplici, il joystick è composto da 2 potenziometri da 10K ciascuno collegati alla leva del joystick stessa e a loro volta connessi sia ai terminali +5v e Gnd sia ad uno dei pin analogici A0 ed A1.

Il pulsante connesso alla leva del joystick è collegato al pin 5 di arduino mediante una resistenza di pull-up di 10Kohm proveniente dai +5v.

Il pulsante rosso (B) è collegato al pin 3 ed il pulsante Bleu (C) è collegato al pin 4 entrambi mediante la propria resistenza di pull-up da 10Kohm

Funzionamento del Joystick

Ora che conosci come è collegato ad arduino puoi comprendere che la lettura dei valori relativi ai due assi è di tipo analogico ed avviene attraverso i pin A0 ed A1 con il comando analogRead( pin ) e per catturare il segnale proveniente dai pulsanti, sia quello connesso alla leva del joystick, sia i pulsanti B e C dovrai utilizzare il comando digitalRead( pin ).

Spostando il joystick dal punto centrale dell’asse X verso destra il suo valore varia da circa 512 a 0, spostandolo verso sinistra varia da 512 a 1023. Questo è il campo si escursione che hai già incontrato parlando dei potenziometri in generale e dell’ADC ( convertitore analogico digitale ) di arduino a 10bit.

Gli stessi valori li leggi sul pin A1 spostando il joystick verso il basso o verso l’alto.

I pulsanti invece danno sempre valore 1 in quanto la loro connessione attraversa la resistenza da 10Kohm e va al polo +5v di arduino e alla pressione ti restituiscono il valore 0 perché cortocircuitati a massa (gnd).

Lo sketch del joystick

ho realizzato uno schetch molto semplice che ha lo scopo di renderti più chiaro il funzionamento del joystick e dei valori rilevati e non di perdersi in tecnicismi di programmazione complessi, sarai tu poi a destinare questo joystick al tuo progetto adattando lo sketch alle tue esigenze.

Ecco lo sketch:

#define asseX A0
#define asseY A1
#define buttB 3
#define buttC 4
#define buttA 5

void setup() {
  pinMode( asseX,INPUT );
  pinMode( asseY,INPUT );
  pinMode( buttA,INPUT );
  pinMode( buttB,INPUT );
  pinMode( buttC,INPUT );

  Serial.begin( 9600 );
}

void loop() {

  Serial.print( "Asse X: " );
  Serial.print( analogRead( asseX ) );
  Serial.print( " Asse Y: " );
  Serial.print( analogRead( asseY ) );
  Serial.print( " Butt A: " );
  Serial.print( digitalRead( buttA ) );
  Serial.print( " Butt B: " );
  Serial.print( digitalRead( buttB ) );
  Serial.print( " Butt C:" );
  Serial.print( digitalRead( buttC ) );
  Serial.print( "\n" );

  delay( 300 );
}

I comandi utilizzati sono davvero pochi e semplici, le linee 01-05 ti servono a definire i pin attraverso cui la input shield comunica con arduino, come hai visto nel paragrafo dedicato allo schema i pin A0 e A1 sono connessi agli assi X ed Y e i bottoni B,C ed A sono rispettivamente connessi ai pin 3,4 e 5;

linee 08-12: imposti la modalità di comunicazione tra Arduino e i singoli pin della input shield, tale modalità è sempre INPUT in quanto sono tutti segnali che ricevi;

linea 14: imposta una comunicazione seriale in cui vedrai i valori mentre lo sketch è in eseguzione e muovi il joystick o premi i pulsanti;

linee 19-20: scrivi nel monitor seriale i valori letti sui canali analogici analogRaed() e sui canali digitali digitalRead();

linea 21: attendi un tempo di 300 millisecondi tra un ciclo di loop ed il successivo, questo ti permette di vedere a video in modo chiaro i valori letti da arduino.

Ho raccolto alcune schermate relative al funzionamenti dello sketch:

input shield

in questa prima i valori dei pulsanti A,B e C variano da 1 a 0, quando vedi 0 è perché io ho premuto il pulsante corrispondente;

input shield

in questa seconda immagine vedi il valore dell’asse X passare da 0 a circa 500 e poi andar su fino a 1023;

input shield

nell’ultima immagine ho ripreso i valori letti sull’asse Y mentre il joystick era a sinistra e poi a destra.

Questo semplice tutorial sulla input shield ed il jystick per arduino è di esempio e vuole stimolare la tua creatività ad utilizzarlo nei tuoi progetti, sai che se ti occorre aiuto su questa shield puoi commentare questo articolo ed io cercherò di darti le giuste dritte per risolvere il tuo problema.

Buon divertimento !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/joystick-per-arduino-input-shield.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.