Utilizziamo la scheda Pimoroni Plasma 2350, basata sul nuovo processore Raspberry RP2350, per gestire LED RGB in microPython e circuitPython.
La scorsa settimana abbiamo presentato la scheda Pimoroni Plasma 2350, un sistema avanzato a basso consumo progettato per la gestione di LED indirizzabili del tipo WS2812.
Come promesso, oggi vedremo in che modo utilizzare la scheda dal punto di vista pratico, attraverso circuit-Python e microPython.
Acquisire il firmware
Per pprima cosa occorrerà scaricare il modulo firmware necessario per utilizzafe la scheda con Python. Pimoroni offre la possibilità di lavorare tanto con circuitPython quanto con microPython. Le differenze sono minime, ma le librerie scritte con un modulo non sempre funzionerammo con l’altro (e viceversa). E’ quindi utile avere a disposizione tutte le possibilità.
Al seguente link potremo scaricare il modulo UF2 per circuitPython. E’ interessante notare come siano disponibili moduli di tipo UF2 nazionalizzati per praticamente tutte le lingue. Le dichiarazioni di Pimoroni: “Ogni volta che inseriamo nuovo codice in CircuitPython, creiamo automaticamente i binari per ogni scheda e linguaggio. I binari sono archiviati su Amazon S3, organizzati per scheda e poi per linguaggio. Queste release sono le più recenti. Provale se vuoi l’ultima novità in assoluto per vedere se un problema è stato risolto.”
E per microPython? Niente paura, il github di Pimoroni offre tutte le informazioni necessarie. La pagina home ad esempio mette subito in guardia su possibili issues già note o conflitti tra hardware e firmware sulle schede gestite.
Cliccando sulla cartella micropython avrai la possibilità di scegliere il firmware per diverse board (Pimoroni Pico Plus2, la nostra Pimoroni Plasma 2350, Pimoroni Tiny2350, RPI Pico2 plain valilla, RPI Pico2B).
Anche la cartella degli examples è suddivisa per tipo di scheda. Nel casp del nostro Plasma 2350, abbiamo una libreria per la gestione di trackball e ben quattro esempi di codice sorgente per sfruttare appieno le capacità della board.
Un programma di esempio: Arcobaleno
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import plasma from plasma import plasma2040 import time # Set how many LEDs you have NUM_LEDS = 50 # APA102 / DotStar™ LEDs # led_strip = plasma.APA102(NUM_LEDS, 0, 0, plasma2040.DAT, plasma2040.CLK) # WS2812 / NeoPixel™ LEDs led_strip = plasma.WS2812(NUM_LEDS, 0, 0, plasma2040.DAT) # Start updating the LED strip led_strip.start() offset = 0.0 while True: offset += float(10) / 2000.0 for i in range(NUM_LEDS): hue = float(i) / NUM_LEDS led_strip.set_hsv(i, offset, 1.0, 1.0) time.sleep(1.0 / 60) |
Come vedete, l’uso della scheda e del modulo plasma incluso nel firmware è piuttosto semplice:
- Si importano i moduli plasma nella configurazione plasma2040, e time (per il metodo sleep() )
- Si definisce il numero di LED indirizzabili ai quali si desidera accedere
- Si definisce il tipo di accesso (APA o WS2812). Nel nostro caso useremo una classica stringa di LED 2812
- Nota: viene usata una mappatura preimoistata nel modulo plasma, definita come plasma2040.DAT
- L’oggetto WS2812 viene associato alla variabile led_strip, che viene attivato con il metodo .start()
- La variabile offset fornisce il tipo di posizionamento dinamico dei colori nella striscia LED
- Inizia il ciclo infinito
- offset varia con step continuo di 5 millesimi
- Per ciascun indice nel range costituito dalla costante NUM_LEDS definita sopra
- viene definito un valore di tinta basato sull’indice e variabile sul numero di led disponibile (più led = maggiore variazione)
- viene configurata (set) la tinta (hue) della striscia led sul led di posizione i in modalità lineare
- Viene quindi imposta un’attesa pari ad un sessantesimo di secondo
- Il ciclo si ripete all’infinito
Gli altri programmi di esempio vertono dalla gesftione dei pulsanti sulla scheda al pilotaggio dei LED RGB onboard, o la creazione di una striscia monocolore utilizzando la funzione RGB anziché la HUE.
Per maggiori informazioni sulla gestione dei LED indirizzabbili WS2812, potete consultare la serie di articoli che abbiamo pubblicato qualche tempo fa.
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano