Colleghiamo e programmiamo il Joystick Analogico ad Arduino UNO
Il Joystick Analogico è un componente molto utilizzato in ambito Arduino per il controllo e la gestione di alcuni progetti, tra cui quelli concernenti la robotica, grazie alla buona precisione dei movimenti della leva centrale e al pulsante integrato.
Specifiche
Il Joystick Analogico è formato da una leva centrale che si muove sugli assi X e Y, mentre per l’asse Z è integrato un pulsante. Mentre i primi due assi lavorano su un segnale analogico, l’asse Z è digitale e si attiverà alla pressione dello stesso. Sarà quindi necessario collegare l’asse Z a un pin digitale, mentre gli assi X e Y ai pin analogici, infatti ogni movimento rilevato dallo spostamento direzionale della leva è giostrato da 2 potenziometri da 10K OHM.
In tutto il Joystick Analogico dispone di 5 pin, il Vcc collegabile ai 5V, il GND, il VRx per l’asse X, il VRy per l’asse Y e il pin SW per l’asse Z.
Lista componenti su Amazon:
- Joystick Analogico: https://amzn.to/3kZ8GEg
- Arduino UNO: https://amzn.to/3na1l6h
- Arduino UNO compatibile: https://amzn.to/3pe4bZV
- Jumper: https://amzn.to/2UesloY
Lista componenti su Aliexpress:
- Joystick Analogico: https://s.click.aliexpress.com/e/_A03ni6
- Arduino UNO compatibile: https://s.click.aliexpress.com/e/_9IyGRN
- Jumper: https://s.click.aliexpress.com/e/_dYOtlu6
Collegamenti
Il collegamenti al Joystick Analogico sono piuttosto semplici da eseguire. Al pin Vcc colleghiamo i 5V, il GND va al GND di Arduino, il VRx va al pin analogico A0, il VRy al pin analogico A1, il pin SW al pin digitale 3. Ricordiamo che i nomi dei pin riportati sul PCB del Joystick Analogico possono cambiare da produttore a produttore, ma i collegamenti di base rimangono gli stessi.
Codice
Il codice richiede una spiegazione preliminare: non troviamo librerie, ma dobbiamo necessariamente dare una direzione al pin digitale e impostarlo come HIGH, poiché il tasto quando va premuto va in LOW e ciò ci serve per avere una lettura stabile. Partiamo dal VOID SETUP dove impostiamo la direzione del pin 3 in INPUT e attiviamo il pin 3 impostandolo in HIGH. Attiviamo anche il monitor seriale.
void setup() { pinMode (3, INPUT); digitalWrite(3, HIGH); Serial.begin(9600); }
Nel VOID LOOP creiamo 3 variabili intere, una per ogni asse, facendo leggere agli assi X e Y i valori rilevati, compresi tra 0 e 1023, dai pin analogici A0 e A1 con analogRead(), mentre all’asse Z con digitalRead() la variazione di stato del pin 3 che passerà da 1 (HIGH) a 0 (LOW) quando viene premuto. Stampiamo i risultati sul monitor seriale, rammentando che in stato di riposo l’asse X e l’asse Y segnano un valore di 511 e l’asse Z il valore 1.
void loop() { int x = analogRead(A0); int y = analogRead(A1); int z = digitalRead(3); Serial.print("Asse X = "); Serial.print(x); Serial.print("\t"); Serial.print("Asse Y = "); Serial.print(y); Serial.print("\t"); Serial.print("Asse Z = "); Serial.println(z); delay (10); }
Carichiamo lo sketch (disponibile a questo LINK), apriamo il monitor seriale e muoviamo gli assi del Joystick Analogico per vedere le variazioni.