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.

joystick

Lista componenti su Amazon:

Lista componenti su Aliexpress:



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.

Joystick