Nota
Ciao, benvenuto nella Comunità degli Appassionati di Raspberry Pi, Arduino & ESP32 di SunFounder su Facebook! Immergiti più a fondo in Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.
Why Join?
Expert Support: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Learn & Share: Scambia consigli e tutorial per migliorare le tue competenze.
Exclusive Previews: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.
Special Discounts: Goditi sconti esclusivi sui nostri prodotti più recenti.
Festive Promotions and Giveaways: Partecipa a giveaway e promozioni festive.
👉 Pronto per esplorare e creare con noi? Clicca [qui] e unisciti oggi!
Lezione 09: Modulo Joystick
Nota
Il Raspberry Pi non ha capacità di input analogico, quindi necessita di un modulo come Modulo Convertitore ADC/DAC PCF8591 per leggere i segnali analogici da elaborare.
In questa lezione, imparerai come interfacciare un Raspberry Pi con un modulo joystick usando l’ADC PCF8591. Sarai in grado di leggere le posizioni X e Y del joystick dai suoi output analogici e rilevare le pressioni dei pulsanti. Questa configurazione dimostra come gestire sia gli input analogici che digitali su un Raspberry Pi.
Componenti Necessari
Per questo progetto, abbiamo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
ARTICOLI IN QUESTO KIT |
LINK |
---|---|---|
Kit Sensori Universale per Makers |
94 |
Puoi anche acquistarli separatamente dai link qui sotto.
Introduzione al Componente |
Link Acquisto |
---|---|
Raspberry Pi 5 |
|
Cablaggio
Nota
In questo progetto, abbiamo utilizzato il pin AIN0 del modulo PCF8591, che è collegato a un potenziometro sul modulo tramite un tappo a jumper. Per prevenire interferenze nei dati, si prega di scollegare il tappo a jumper dal modulo. Per maggiori dettagli, si prega di fare riferimento allo schema del modulo PCF8591 schematic.

Codice
import PCF8591 as ADC # Importa il modulo ADC per input analogico
import time # Importa il modulo time per creare dei ritardi
from gpiozero import Button # Importa Button per input del pulsante
ADC.setup(0x48) # Configura il modulo PCF8591 all'indirizzo I2C 0x48
button = Button(17) # Inizializza il pulsante collegato al GPIO 17
try:
while True: # Ciclo continuo
print("x:", ADC.read(0)) # Leggi il valore analogico dal canale AIN0
print("y:", ADC.read(1)) # Leggi il valore analogico dal canale AIN1
print("sw:", button.is_active) # Controlla se il pulsante è premuto
time.sleep(0.2) # Attendi 0.2 secondi prima del prossimo ciclo
except KeyboardInterrupt:
print("Exit") # Termina il programma all'interruzione da tastiera
Analisi del Codice
Importazione delle Librerie:
Lo script inizia importando le librerie necessarie per il progetto.
import PCF8591 as ADC # Importa il modulo ADC per input analogico import time # Importa il modulo time per creare dei ritardi from gpiozero import Button # Importa Button per input del pulsante
Configurazione del Modulo PCF8591:
Il modulo PCF8591 è configurato all’indirizzo I2C 0x48 che permette al Raspberry Pi di comunicare con esso.
ADC.setup(0x48) # Configura il modulo PCF8591 all'indirizzo I2C 0x48
Inizializzazione del Pulsante:
Un pulsante è inizializzato, collegato al pin GPIO 17 sul Raspberry Pi.
button = Button(17) # Inizializza il pulsante collegato al GPIO 17
Ciclo Principale:
La parte principale dello script è un ciclo infinito che legge continuamente i valori analogici da due canali del PCF8591 (AIN0 e AIN1) e controlla se il pulsante è premuto. AIN0 e AIN1 sono i pin analogici per gli assi X e Y del joystick.
try: while True: # Ciclo continuo print("x:", ADC.read(0)) # Leggi il valore analogico dal canale AIN0 print("y:", ADC.read(1)) # Leggi il valore analogico dal canale AIN1 print("sw:", button.is_active) # Controlla se il pulsante è premuto time.sleep(0.2) # Attendi 0.2 secondi prima del prossimo ciclo
Gestione delle Interruzioni:
Lo script può essere terminato in modo ordinato utilizzando un’interruzione da tastiera (CTRL+C), pratica comune in Python per fermare un ciclo infinito.
except KeyboardInterrupt: print("Exit") # Termina il programma all'interruzione da tastiera