Se hai tra le mani un Arduino UNO Q, una delle prime cose che ti avrà colpito è quella piccola griglia di puntini luminosi blu sul fronte della board.
si tratta della matrice LED 8×13 certamente una delle novità questa scheda anche se già ne avevi vista una nella Arduino Uno R4 WiFI.
In questo articolo leggerai com’è fatta e chi la controlla per usarla nei tuoi progetti.
Cos’è la matrice LED Arduino UNO Q
La matrice led arduino uno q è composta da 104 LED blu disposti su una griglia di 8 righe e 13 colonne.
è qualcosa di molto semplice e facile da gestire, si tratta di una serie di punti luminosi monocolore che puoi accendere e spegnere liberamente per formare scritte, icone, animazioni o semplici indicatori di stato.
la sua integrazione direttamente sulla scheda, senza bisogno di collegare driver o altro è certamente molto interessante e ti permette di avere un sistema di visualizzazione di informazioni istantaneo.
Chi la controlla: MCU o MPU?
questa è una domanda delle più ricorrenti quando userai un’Arduino Uno Q, visto che la board ha sia un microcontrollore sia un processore a bordo.
La risposta la puoi trovare nella documentazione ufficiale: la matrice è gestita dall’MCU STM32U585, il microcontrollore ARM Cortex-M33 che esegue Arduino Core su Zephyr OS.
Questo significa che la programmi esattamente come faresti con qualsiasi sketch Arduino, senza dover entrare nel mondo Linux del processore Qualcomm.
Mantenendo la programmazione semplice e familiare come sei abituato, devi solo far attenzione all’avvio della scheda:
Important!
Quando accendi l’Arduino UNO Q, la prima cosa che vedrai sulla matrice è il logo di boot di Arduino. Questo viene visualizzato per circa 20-30 secondi durante l’avvio di Linux sul processore Qualcomm.
⚠️ Attenzione: cerca di non accedere alla matrice prima che il boot sia completato, potresti interferire con il corretto funzionamento dell’MCU.
Una volta completato l’avvio, la matrice è completamente a tua disposizione.
Lo sketch
Arduino mette a disposizione una libreria dedicata per controllare la matrice dell’UNO Q: Arduno_LED_Matrix.h
Ecco un esempio base per visualizzare una scritta scorrevole:
#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matrix;
void setup() {
matrix.begin();
}
void loop() {
matrix.beginDraw();
matrix.stroke(0xFFFFFFFF);
matrix.textScrollSpeed(50);
const char text[] = "HELLO UNO Q ";
matrix.textFont(Font_5x7);
matrix.beginText(0, 1, 0xFFFFFF);
matrix.println(text);
matrix.endText(SCROLL_LEFT);
matrix.endDraw();
}
Analizziamo lo sketch riga per riga
#include "ArduinoGraphics.h"
la prima linea include la libreria ArduinoGraphics usata anche sull’Arduino Uno R4 WiFi e necessaria alla libreria Arduino_LED_Matrix per “disegnare” il testo sul display;
#include "Arduino_LED_Matrix.h"
la seconda linea include la libreria Arduino_LED_Matrix.h, si tratta della libreria ufficiale Arduino che mette a disposizione tutti gli strumenti per controllare la matrice LED integrata sull’UNO Q;
ArduinoLEDMatrix matrix;
linea 04: dichiara un oggetto di tipo ArduinoLEDMatrix dandogli il nome matrix, da questo momento in poi, ogni volta che vuoi fare qualcosa con i LED potrai farlo attraverso l’oggetto matrix.
linea 07: all’interno della funzione setup() c’è solo una linea con il comando matrix.begin() il cui scopo è inizializzare la matrice e prepararla per l’utilizzo.
la linea 11: usa il metodo beginDraw() esposto dalla libreria matrix per predisporre il buffer di disegno in cui inserire ciò che vogliamo visualizzare sulla nostra matrice.
Tutto quello che “disegni” viene preparato in questo buffer interno e non mostrato fisicamente sui LED;
linea 12: con il metodo stroke() imposta il colore del tratto con cui verranno disegnati i pixel, siccome la matrice è solo di colore blu, monocromatica, il codice 0xFFFFFFFF indica solo di accendere il led alla massima luminosità;
la linea 13: definisce quanto velocemente il testo dovrà scorrere sulla matrice, il parametro è espresso in millisecondi in cui un valore alto comporta uno scorrimento più lento;
linea 15: definisci il testo che vorrai visualizzare, si tratta di un array di caratteri per gestire le stringhe.
Notice
Nota lo spazio finale dopo “Q “: serve a creare una piccola pausa visiva tra la fine e lo scorrimento del messaggio successivo, rendendo l’animazione più gradevole.linea 16: usa il metodo: textFont() perscegliere il carattere tipografico da usare per il testo.
Il Font_5x7 indica un font da 5 pixel di larghezza e 7 di altezza adatto alla nostra matrice da 8 righe.
la linea 17: usa il metodo beginText() accetta tre parametri:
- il primo definisce la posizione di partenza sull’asse X ;
- il secondo definisce la posizione di partenza sull’asse Y;
- il terzo il colore del testo in formato esadecimale;
nella linea di codice i valori sono 0 per il primo, 1 per il secondo ( così da lasciare una riga di margine ) e 0xFFFFFF che nel caso della matrice LED monocromatica è semplicemente led acceso;
alla linea 18: troviamo l’uso del metodo println() già noto per l’utilizzo con la classe Serial, qui è usato per scrivere il testo nel buffer grafico della matrice;
linea 19: usa il metodo endText() che avvia l’animazione;
il parametro SCROLL_LEFT indica la direzione di scorrimento da destra verso sinistra, la libreria supporta anche altre direzioni che ti lascio sperimentare;
linea 21: chiude il buffer di disegno aperto alla linea 10 ed invia il contenuto alla matrice led arduono uno q perché sia visualizzto il testo.
Senza l’utilizzo di questa linea i LED non si aggiornerebbero mai.
Schema Riepilogativo
| Istruzione | Cosa fa |
|---|---|
#include |
Include le librerie necessarie alla matrice LED |
ArduinoLEDMatrix matrix |
Crea l’oggetto per controllare la matrice |
matrix.begin() |
Inizializza la matrice |
matrix.beginDraw() |
Apre la sessione di disegno sul buffer |
matrix.stroke() |
Imposta il colore/luminosità del tratto |
matrix.textScrollSpeed() |
Imposta la velocità di scorrimento in ms |
const char text[] |
Definisce il testo da visualizzare |
matrix.textFont() |
Sceglie il font (5×7 pixel) |
matrix.beginText() |
Imposta posizione di partenza e colore |
matrix.println() |
Scrive il testo nel buffer grafico |
matrix.endText(SCROLL_LEFT) |
Avvia lo scorrimento da destra a sinistra |
matrix.endDraw() |
Invia il buffer ai LED fisici |
Il video
nel video che ho realizzato vedrai due cose:
- come recuperare ed installare la libreria ArduinoGraphics sull’App Lab Arduino
- scrittura, compilazione ed esecuzione dello sketch
con il risultato finale:
Conclusioni
Come vedi, lo sketch è tutto sommato semplice e lineare. La libreria Arduino_LED_Matrix astrae completamente la complessità hardware della matrice e ti permette di concentrarti su quello che vuoi mostrare, senza preoccuparti di come i singoli LED vengono accesi e spenti.
Nei prossimi articoli vedremo come sostituire il testo statico con valori dinamici, ad esempio la temperatura letta da un sensore o dati provenienti direttamente dal processore Qualcomm tramite il sistema Bridge.
Hai provato a modificare il testo o la velocità di scorrimento?
Raccontami nei commenti il tuo risultato!



Il blog mauroalfieri.it ed i suoi contenuti sono distribuiti con Licenza