Joystick con ESP32
Un joystick è un dispositivo di input utilizzato per controllare la posizione di un cursore o di un oggetto su uno schermo, soprattutto nei contesti di videogiochi, simulatori di volo o altre applicazioni interattive. Si tratta di una leva o di un dispositivo simile che può essere spostato in diverse direzioni per controllare il movimento di un cursore o di un'entità virtuale.
I joystick possono avere varie forme e dimensioni, ma in genere consistono in una leva che può essere inclinata o spostata in diverse direzioni.
Esso fornisce al processore i segnali elettrici relativi alla posizione di due, l'asse X e l'asse Y. Inoltre il joystick ha a disposizione anche l'asse Z che ci servirà per indicare la pressione o meno del joystick stesso.
In figura vediamo i collegamenti elettrici che il nostro joystick richiede:
- Il collegamento al GND
- L'alimentazione a 5V (3.3V per il nostro joystick)
- L'asse X (valori da 0 a 4095)
- L'asse Y (valori da 0 a 4095)
- L'asse Z (valori da 0 a 1)
I due segnali VRX e VRY (per gli assi X e Y) sono due segnali analogici che andranno collegati direttamenti a due pin GPIO del componente ESP32 con funzione ADC di convertitore Analogico-Digitale.
Codice
I segnali elettrici collegati ai pin 13 e 14 vengono trasformati in segnali digitali (numeri) In pratica il valore di tensione in ingresso andrà da un valore di 0V a un valore di 3.3V a seconda della posizione del joystick. I corrispondenti valori digitali saranno 0 (per 0V) e 4095 (per 3.3V).
Al pin 12 arriverà in input o un valore basso (0 o LOW) o valore alto (1 o HIGH) a seconda se il pin verrà premuto o meno.
Il codice è sotto riportato.
from machine import ADC,Pin
import time
xVal=ADC(Pin(14)) #ADC sta per Analog-Conversion Converter
yVal=ADC(Pin(13))
zVal=Pin(12,Pin.IN,Pin.PULL_UP) #
xVal.atten(ADC.ATTN_11DB)
yVal.atten(ADC.ATTN_11DB)
xVal.width(ADC.WIDTH_12BIT)
yVal.width(ADC.WIDTH_12BIT)
while True:
print("X,Y,Z:",xVal.read(),",",yVal.read(),",",zVal.value())
time.sleep(1)
Quello che dovreste vedere sarà qualcosa del genere: