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

../_images/mcp3008_and_adc0834.jpg

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.

../_images/2.1.9_joystick_list.png

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Modulo Joystick

-

ADC0834

-

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.

../_images/2.1.9_joystick_schematic_1.png ../_images/2.1.9_joystick_schematic_2.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.1.9_Joystick_circuit.png

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

  1. Questa sezione importa la classe Button dalla libreria gpiozero per gestire un pulsante collegato a un pin GPIO. Importa anche la libreria ADC0834 per l’interfacciamento con il modulo ADC0834 (Convertitore Analogico-Digitale).

    #!/usr/bin/env python3
    from gpiozero import Button
    import ADC0834
    import time
    
  2. 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()
    
  3. 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_val e y_val. Inoltre, il valore SW del joystick viene letto e assegnato alla variabile Btn_val. I valori ottenuti di x_val, y_val e Btn_val vengono quindi visualizzati utilizzando la funzione print().

    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