5.2.1 Indicatore di Direzione

5.2.1.1 Panoramica

Img

Quando si muove il joystick, la matrice di punti visualizza frecce nella direzione corrispondente in tempo reale: sinistra, destra, su, giù, fornendo un chiaro riferimento di direzione.

Img

5.2.1.2 Conoscenza dei Componenti

Questo progetto utilizza lo stesso joystick del Progetto 01. Si prega di fare riferimento alla sezione 4.2.1.2 per la conoscenza dei suoi componenti.

5.2.1.3 Parti Richieste

Img

Img

Img

Scheda micro:bit V2 (auto-fornita) ×1

Smart Gamepad micro:bit (assemblato) ×1

Batteria AAA (auto-fornita) ×4

5.2.1.4 Flusso del Codice

Img

5.2.1.5 Codice di Test

⚠️ Nota che la sensibilità del joystick può essere regolata in base alle proprie esigenze.

Codice completo:

from microbit import *

# Calibrazione del joystick (regola questi valori se il joystick non è centrato)
# I valori tipici per il centro sono intorno a 511 per entrambi gli assi
JOYSTICK_CENTER_X = 511
JOYSTICK_CENTER_Y = 511
# Soglia per rilevare il movimento (regola per la sensibilità)
JOYSTICK_THRESHOLD = 100

# Funzione per visualizzare le frecce
def show_arrow(direction):
    if direction == "up":
        display.show(Image.ARROW_N)
    elif direction == "down":
        display.show(Image.ARROW_S)
    elif direction == "left":
        display.show(Image.ARROW_W)
    elif direction == "right":
        display.show(Image.ARROW_E)
    else:
        display.show(Image.HOUSE)

# Loop principale
while True:
    # Leggi i valori analogici del joystick
    x_value = pin0.read_analog()
    y_value = pin1.read_analog()

    # Determina la direzione in base ai valori del joystick
    if x_value < JOYSTICK_CENTER_X - JOYSTICK_THRESHOLD:
        show_arrow("left")
    elif x_value > JOYSTICK_CENTER_X + JOYSTICK_THRESHOLD:
        show_arrow("right")
    elif y_value < JOYSTICK_CENTER_Y - JOYSTICK_THRESHOLD:
        show_arrow("up")
    elif y_value > JOYSTICK_CENTER_Y + JOYSTICK_THRESHOLD:
        show_arrow("down")
    else:
        show_arrow("center")

    sleep(100) # Breve ritardo per evitare letture eccessive

Img

Breve spiegazione:

① Inizializza la matrice LED per farla mostrare Img.

from microbit import *

# Calibrazione del joystick (regola questi valori se il joystick non è centrato)
# I valori tipici per il centro sono intorno a 511 per entrambi gli assi
JOYSTICK_CENTER_X = 511
JOYSTICK_CENTER_Y = 511
# Soglia per rilevare il movimento (regola per la sensibilità)
JOYSTICK_THRESHOLD = 100

# Funzione per visualizzare le frecce
def show_arrow(direction):
    if direction == "up":
        display.show(Image.ARROW_N)
    elif direction == "down":
        display.show(Image.ARROW_S)
    elif direction == "left":
        display.show(Image.ARROW_W)
    elif direction == "right":
        display.show(Image.ARROW_E)
    else:
        display.show(Image.HOUSE)

② Leggi i valori degli assi X e Y per determinare la direzione di movimento. Se viene rilevata, la matrice mostra la freccia corrispondente. In caso contrario, visualizza Img.

# Loop principale
while True:
    # Leggi i valori analogici del joystick
    x_value = pin0.read_analog()
    y_value = pin1.read_analog()

    # Determina la direzione in base ai valori del joystick
    if x_value < JOYSTICK_CENTER_X - JOYSTICK_THRESHOLD:
        show_arrow("left")
    elif x_value > JOYSTICK_CENTER_X + JOYSTICK_THRESHOLD:
        show_arrow("right")
    elif y_value < JOYSTICK_CENTER_Y - JOYSTICK_THRESHOLD:
        show_arrow("up")
    elif y_value > JOYSTICK_CENTER_Y + JOYSTICK_THRESHOLD:
        show_arrow("down")
    else:
        show_arrow("center")

    sleep(100) # Breve ritardo per evitare letture eccessive

5.2.1.6 Risultato del Test

Img

Dopo aver caricato il codice, inserisci la scheda micro:bit nello slot del gamepad (batterie installate) e sposta l\interruttore su “ON”.

Quando spingi il joystick del gamepad, puoi vedere le frecce corrispondenti sulla matrice. Se alzi il dito per riportarlo al centro, apparirà un\icona a forma di casa sulla matrice.

Img

Suggerimento: Se non c\è risposta sulla scheda, premi il pulsante di reset sul retro della scheda micro:bit.

Img