Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime speciali.

  • Sconti esclusivi: Approfitta di sconti riservati sui nostri prodotti più recenti.

  • Promozioni festive e concorsi: Partecipa a concorsi e promozioni durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [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 il joystick. Manipoleremo il joystick e visualizzeremo i risultati sullo schermo.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/image317.png

È sicuramente comodo acquistare un kit completo, ecco il link:

Nome

ARTICOLI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Modulo Joystick

-

ADC0834

-

Schema Elettrico

Quando si leggono i dati del joystick, ci sono alcune differenze tra gli assi: i dati degli assi X e Y sono analogici, quindi è necessario utilizzare ADC0834 per convertire il valore analogico in valore digitale. I dati dell’asse Z sono digitali, quindi puoi leggerli direttamente dal GPIO, o puoi anche usare l’ADC per leggerli.

../_images/image319.png ../_images/image320.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/image193.png

Passo 2: Vai nella cartella del codice.

cd ~/raphael-kit/python/

Passo 3: Esegui.

sudo python3 2.1.9_Joystick.py

Dopo l’esecuzione del codice, ruota il joystick e i valori corrispondenti di x, y e Btn verranno visualizzati sullo schermo.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Ma prima devi accedere al percorso del codice come raphael-kit/python. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3

import RPi.GPIO as GPIO
import ADC0834
import time

BtnPin = 22

def setup():
    # Imposta le modalità GPIO sulla numerazione BCM
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    ADC0834.setup()

def destroy():
    # Rilascia le risorse
    GPIO.cleanup()

def loop():
    while True:
        x_val = ADC0834.getResult(0)
        y_val = ADC0834.getResult(1)
        Btn_val = GPIO.input(BtnPin)
        print ('X: %d  Y: %d  Btn: %d' % (x_val, y_val, Btn_val))
        time.sleep(0.2)

if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt: # Quando viene premuto 'Ctrl+C', il programma destroy() verrà eseguito.
        destroy()

Spiegazione del Codice

def loop():
    while True:
        x_val = ADC0834.getResult(0)
        y_val = ADC0834.getResult(1)
        Btn_val = GPIO.input(BtnPin)
        print ('X: %d  Y: %d  Btn: %d' % (x_val, y_val, Btn_val))
        time.sleep(0.2)

I pin VRX e VRY del Joystick sono collegati rispettivamente a CH0 e CH1 di ADC0834. Quindi, viene chiamata la funzione getResult() per leggere i valori di CH0 e CH1. Successivamente, i valori letti vengono memorizzati nelle variabili x_val e y_val. Inoltre, viene letto il valore di SW del joystick e memorizzato nella variabile Btn_val. Infine, i valori di x_val, y_val e Btn_val vengono stampati con la funzione print().

Immagine del Fenomeno

../_images/image194.jpeg