Raspberry Pi Pico: come collegare ed utilizzare un joystick

Raspberry Pi ha appena rilasciato Raspberry Pi Pico, la prima scheda microcontrollore basata sul nuovo chip RP2040, progettato per essere un microcontrollore economico (4 dollari USA) e flessibile, e una piattaforma di sviluppo in grado di lavorare con i linguaggi C/C++ e Python. Il chip RP2040 incorpora un nuovo processore dual core Cortex M0+ in tecnologia ARM, in grado di funzionare a ben 133MHz, che può far conto su 2 MB di flash memory precaricata e 264 KB di SRAM. Per maggiori informazioni sul rilascio vi riporto il link della notizia scritta venerdì scorso (clicca qui).

Ci sono tanti motivi per cui potresti utilizzare un joystick analogico con la board Raspberry Pi Pico, per esempio come la creazione di un gioco o di un dispositivo input per la navigazione.

Il collegamento di un joystick è davvero semplice e anche la codifica in MicroPython è un gioco da ragazzi.

MicroPython è un’implementazione software del linguaggio di programmazione Python 3, scritto in C, ottimizzato per l’esecuzione su un microcontrollore.

Componenti da utilizzare:

  • Raspberry Pi Pico con pin
  • Joystick analogico con interfaccia a 5 pin (ci sono molti modelli).
  • Breadboard (opzionale). Puoi anche collegare il tuo joystick direttamente ai pin.
  • Cinque cavi jumper : femmina-maschio. Se non stai usando una breadboard, avrai bisogno di jumper femmina-femmina.

Ecco il diagramma di collegamento:

Raspberry Pi Pico

Il joystick analogico “incorpora” tre dispositivi in uno in quanto è costituito da un potenziometro per l’asse X, un altro potenziometro per l’asse Y e un pulsante/bottone digitale nel momento in cui si pigia sulla levetta del joystick.

Il primo passo consiste nell’apertura di un IDE per MicroPython come Thonny,

Ecco il codice completo per utilizzo del joystick:

Vediamo passo passo il codice come funziona.

Per prima cosa vi è l’importazione di vari moduli come:

  • Pin
  • ADC for machine
  • utime

In seguito vi è l’utilizzo della funzione utime.sleep per inserire un ritardo necessario in un ciclo che legge lo stato del pulsante.

Poi vi è la creazione delle variabili le variabili xAxis e yAxis, ciascuna assegnato al pin GP corrispondente.

Poi vi è la creazione di una variabile pulsante, assegnata al Pin corrispondente.

Poi vi è la creazione di un ciclo continuo che controlla e stampa i valori per x, y e pulsante.

Proviamo ad eseguire il codice e osservare i risultati nella shell MicroPython mentre spostiamo la levetta del joystick e si preme il pulsante. Quello che probabilmente vedremo è che se il joystick non viene spostato o premuto, i valori X e Y saranno compresi tra 32.000 e 33.000 e il valore del pulsante sarà 1. Spostandoti a sinistra vedremo che il valore X è compreso tra 300 e 500 e spostandola verso destra sarà di circa 65.000. Nel momento in cui si sposta la levetta verso l’alto il valore della variabile Y oscilla tra 300 a 500 e spostata verso il basso il valore della varabile sarà di circa 65.000. Premendo il pulsante si assegna un valore 0 nel momento in cui è premuto.

Ora interrompiamo l’esecuzione e cancelliamo l’istruzione print per risparmiare spazio. 

Creiamo delle variabili per identificare lo stato della levetta.

Utilizziamo l’interazione if ​​per etichettare correttamente lo stato del joystick e dei pulsanti all’interno del ciclo. 

Utilizziamo un’istruzione print per stampare le variabili e posizioniamola sopra il comando sleep.

Ed ecco che hai implementato con successo il tuo joystick ed è pronto per essere utilizzato nei progetti con Raspberry Pi Pico.

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

4 Comments

  1. Christian | | Reply

    Ciao, ho fatto tutto e funziona tutto, ma ora vorrei che funzionasse come joystick non solo tramite IDE.
    Non riesco a capire come fare. Grazie

  2. Luigi_Morelli | | Reply

    Per farlo funzionare come joystick occorre inserire codice.
    Ad esempio, le variabili xAxis e yAxis contengono un valore continuo analogico a 10 bit (tra 0 e 1023), mentre la variabile button è uno switch digitale (premuto/non premuto): il ciclo while True legge in continuazione i valori provenienti dal joystick (che è, ricordiamolo, nient’altro che l’unione di due potenziometri). In base al vlore risontrato occorre fare in modo che (ad esempio) Arduino piloti un attuatore esterno attraqverso i PIN di output, o invii codici opportuni via serial per colloquiare con un PC…

    • Christian | | Reply

      Grazie dei suggerimenti, sono molto inesperto, e non ho idea di come aggiungere il codice necessario.

      • Luigi_Morelli | | Reply

        Ciao Christian, all’inizio siamo tutti stati inseperti. Se ti va puoi provare ad unirti al nostro canale Telegram, dove centinaia di utenti (esperti e meno esperti) pongono domande ed offrono risposte per i propri progetti.
        Oppure decidere di seguire un (breve) corso tra quelli che offriamo, per aumentare le tue competenze seguito passo passo da un istruttore.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.