Pimoroni Inventor RP2040 Programmi in MicroPython

Pimoroni INventor RP2040

La scheda Inventor RP2040 distribuita da Pimoroni si presta facilmente alla programmazione sia in C che in MicroPython. Ecco qualche esempio.

Ieri abbiamo presentato la scheda Inventor RP2040 distribuita da Pimoroni. Oggi iniziamo una serie di articoli che spiega nei dettagli come programmare tale scheda, prima in MicroPython, poi in C. Diamo per scontato che l’utente sia in grado di configurare l’editor Thonny con  il kernel adeguato: nel caso ciò non fosse, è possibile seguire le istruzioni presenti nella sezione “Getting started with Pico“.

Iniziamo!

Creare un arcobaleno con i LED sulla scheda

La board presenta sei LED Neopixel pilotabili via software. Il seguente programma spiega in che modo agire per accedervi.

Importiamo per prima cosa i moduli time e inventor. Il primo ci servirà per gestire le temporizzazioni, il secondo per utilizzare le librerie e i driver caratteristici della scheda.

Le costanti definiscono la velocità di aggiornamento, la luminosità (per evitare che la scheda assorba troppa corrente) e gli aggiornamenti al secondo che desideriamo imporre. Modificando questi parametri potremo facilmente modificare la visualizzazione.

Creiamo quindi il nostro oggetto board usando la relativa classe associata, e definiamo (azzerandola) una variabile offset che ci servirà più avanti.

Il nostro ciclo infinito continuerà finché non verrà premuto il tasto “user” sulla scheda.

Esecuzione del ciclo

All’interno del ciclo abbiamo solo una manciata di operazioni:

  1. Modifichiamo il valore dello spostamento dei LED illuminati in base alla velocità predefinita.
  2. Aggiorniamo tutti i LED attraverso un ciclo for().
  3. Modifichiamo il valore di tinta del LED (hue) in base al valore dell’indice i del for(). Notare che la sfumatura dei colori dipende dal numero dei LED.
  4. Applichiamo la sfumatura attraverso la funzione board.leds.set_hsv(indice, tinta + spostamento, 1.0, luminosità).
  5. Al termine del ciclo for() ovvero quando tutti i nostri LED sono stati aggiornati, definiamo un tempo di attesa (sleep() ) dipendente dal numero di aggiornamenti al secondo che abbiamo definito nella relativa costante.
  6. Quando premiamo il tasto sulla scheda interrompiamo il ciclo infinito, ed eseguiamo l’ultima operazione presente nel listato. La funzione board.leds.clear() spegne tutti i LED presenti sulla scheda.

Considerazioni finali

Questo programma è relativamente semplice da comprendere, e aiuta ad afferrare il funzionamento della funzione che gestisce la tinta del LED da accendere ed il suo “movimento” nella sequenza. E’ ovviamente possibile modificare la funzione di accensione dei LED ridefinendo la variabile hue.

Non dimentichiamo che i LED sono indirizzabili singolarmente, e la libreria relativa contiene numerosi esempi di riprogrammazione delle funzioni grafiche. Abbiamo trattato l’utilizzo di LED indirizzabili in una serie di articoli lo scorso anno.

Per oggi è tutto… Venerdì prossimo presenteremo un nuovo programma da utilizzare sulla board Inventor, commentandolo nei dettagli e spiegando in che modo modificarlo qualora necessario.

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

 

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

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