Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto Tecnico Esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!
2.1.9 Joystick
Nota
A seconda della versione del tuo kit, identifica se hai ADC0834 o MCP3008 e procedi con la sezione corrispondente.
Introduzione
In questo progetto, impareremo come funziona un joystick. Manipoliamo il Joystick e visualizziamo i risultati sullo schermo.
Componenti Necessari
Per questo progetto, avremo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK D’ACQUISTO |
|---|---|
- |
|
- |
Schema Elettrico
Quando vengono letti i dati del joystick, ci sono alcune differenze tra gli assi: i dati degli assi X e Y sono analogici, quindi è necessario utilizzare l’ADC0834 per convertire il valore analogico in valore digitale. I dati dell’asse Z sono digitali, quindi puoi leggerli direttamente tramite GPIO o anche tramite ADC.
Procedure Sperimentali
Passo 1: Costruisci il circuito.
Passo 2: Vai alla cartella del codice.
cd ~/raphael-kit/python-pi5
Passo 3: Esegui.
sudo python3 2.1.9_Joystick_zero.py
Dopo l’esecuzione del codice, muovi il Joystick e i valori corrispondenti di x, y, Btn verranno visualizzati sullo schermo.
Avvertimento
Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..
Code
Nota
Puoi Modificare/Resettare/Copiare/Eseguire/Fermare il codice qui sotto. Ma prima, devi accedere alla directory del codice come raphael-kit/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.
#!/usr/bin/env python3
from gpiozero import Button
import ADC0834
import time
# Inizializza il pulsante collegato al pin GPIO 22
BtnPin = Button(22)
# Configura l'ADC0834
ADC0834.setup()
try:
# Loop principale per leggere e stampare i valori ADC e lo stato del pulsante
while True:
# Leggi i valori di X e Y dai canali ADC 0 e 1
x_val = ADC0834.getResult(0)
y_val = ADC0834.getResult(1)
# Leggi lo stato del pulsante (premuto o no)
Btn_val = BtnPin.value
# Stampa i valori di X, Y e del pulsante
print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val))
# Ritardo di 0,2 secondi prima della prossima lettura
time.sleep(0.2)
# Gestione dell'interruzione del programma (ad es. tramite KeyboardInterrupt)
except KeyboardInterrupt:
pass
Spiegazione del Codice
Questa sezione importa la classe Button dalla libreria
gpiozeroper gestire un pulsante collegato a un pin GPIO. Importa anche la libreriaADC0834per l’interfacciamento con il modulo ADC0834 (Convertitore Analogico-Digitale).#!/usr/bin/env python3 from gpiozero import Button import ADC0834 import time
Inizializza un pulsante collegato al pin GPIO 22 e configura il modulo ADC0834 per l’uso.
# Inizializza il pulsante collegato al pin GPIO 22 BtnPin = Button(22) # Configura l'ADC0834 ADC0834.setup()
I collegamenti VRX e VRY del joystick sono collegati rispettivamente a CH0 e CH1 dell’ADC0834. Questo setup facilita la lettura dei valori da CH0 e CH1, che vengono poi salvati nelle variabili
x_valey_val. Inoltre, il valore SW del joystick viene letto e assegnato alla variabileBtn_val. I valori ottenuti dix_val,y_valeBtn_valvengono quindi visualizzati utilizzando la funzioneprint().try: # Loop principale per leggere e stampare i valori ADC e lo stato del pulsante while True: # Leggi i valori di X e Y dai canali ADC 0 e 1 x_val = ADC0834.getResult(0) y_val = ADC0834.getResult(1) # Leggi lo stato del pulsante (premuto o no) Btn_val = BtnPin.value # Stampa i valori di X, Y e del pulsante print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val)) # Ritardo di 0,2 secondi prima della prossima lettura time.sleep(0.2) # Gestione dell'interruzione del programma (ad es. tramite KeyboardInterrupt) except KeyboardInterrupt: pass