Matrice LED 8×8 con Arduino: collegamenti e test
Colleghiamo una matrice LED 8×8 direttamente ad Arduino e realizziamo uno sketch di prova per verificare righe, colonne e cablaggio prima di visualizzare lettere e simboli.
Cosa imparerai
- come è organizzata una matrice LED 8×8;
- come distinguere righe e colonne;
- come collegare i 16 terminali ad Arduino;
- come usare anche i pin analogici come uscite digitali;
- come verificare il cablaggio accendendo progressivamente le righe;
- come preparare il circuito per il progetto successivo con lettere e simboli.
La matrice LED 8×8
Nel sito questa immagine era visualizzata a circa 191 px: manteniamo la stessa dimensione massima.
Una matrice 8×8 permette di visualizzare punti, figure, lettere e simboli. Questo primo tutorial serve soprattutto a verificare che ogni riga e ogni colonna sia collegata correttamente; nel progetto successivo useremo la stessa matrice per comporre caratteri.
Come sono organizzati i 64 LED
Queste due immagini nel sito erano impostate su larghezza automatica, quindi non vengono ingrandite artificialmente.
Materiale necessario
🧰 Kit Arduino consigliato
Molti progetti del sito utilizzano LED, resistenze, breadboard e cavetti. Un kit completo può essere comodo per iniziare.
👉 Guarda il kit Arduino consigliatoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino. All’interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su ArduinoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
Schema del circuito
schema del collegamento. Nel sito la larghezza era automatica.
Pin usati dal progetto
Lo sketch utilizza ben 16 linee di Arduino. Oltre ai pin digitali D2–D13 sfrutta anche A0–A3 come normali pin digitali.
| Gruppo | Pin Arduino |
|---|---|
| Linee della matrice | D2–D13 + A0–A3 |
| Numero totale di linee | 16 |
| Resistenze | 8 × 220 Ω |
Mappatura di righe e colonne
Il sketch crea prima un array generale dei 16 pin e poi due array separati per colonne e righe. Manteniamo la stessa corrispondenza, ma scritta direttamente in modo più leggibile.
| Linea matrice | Pin Arduino |
|---|---|
| Colonna 1 | D9 |
| Colonna 2 | D12 |
| Colonna 3 | D7 |
| Colonna 4 | D13 |
| Colonna 5 | D2 |
| Colonna 6 | D6 |
| Colonna 7 | A1 |
| Colonna 8 | D5 |
| Riga 1 | A3 |
| Riga 2 | A2 |
| Riga 3 | D3 |
| Riga 4 | D8 |
| Riga 5 | D4 |
| Riga 6 | D10 |
| Riga 7 | D11 |
| Riga 8 | A0 |
Codice Arduino commentato
// ==========================================================
// MATRICE LED 8x8 CON ARDUINO - TEST COLLEGAMENTI
// Versione semplificata del progetto
// ==========================================================
// Le otto colonne della matrice.
// La sequenza mantiene esattamente la mappatura
// utilizzata nello sketch.
const int colonne[8] = {
9, // colonna 1
12, // colonna 2
7, // colonna 3
13, // colonna 4
2, // colonna 5
6, // colonna 6
A1, // colonna 7
5 // colonna 8
};
// Le otto righe della matrice.
const int righe[8] = {
A3, // riga 1
A2, // riga 2
3, // riga 3
8, // riga 4
4, // riga 5
10, // riga 6
11, // riga 7
A0 // riga 8
};
void setup() {
// Configura tutte le colonne come uscite.
for (int i = 0; i < 8; i++) {
pinMode(colonne[i], OUTPUT);
}
// Configura tutte le righe come uscite.
for (int i = 0; i < 8; i++) {
pinMode(righe[i], OUTPUT);
}
// Stato iniziale del progetto:
// colonne a LOW e righe a LOW.
// In questa configurazione nessuna riga viene
// inizialmente portata al livello attivo HIGH.
for (int i = 0; i < 8; i++) {
digitalWrite(colonne[i], LOW);
digitalWrite(righe[i], LOW);
}
}
void loop() {
// --------------------------------------------------------
// ACCENSIONE PROGRESSIVA DELLE RIGHE
// --------------------------------------------------------
// Le colonne restano a LOW.
// Portando una riga alla volta a HIGH,
// si verifica visivamente il suo collegamento.
for (int i = 0; i < 8; i++) {
digitalWrite(righe[i], HIGH);
// Lascia il risultato visibile per 100 ms
delay(100);
}
// --------------------------------------------------------
// SPEGNIMENTO PROGRESSIVO DELLE RIGHE
// --------------------------------------------------------
for (int i = 0; i < 8; i++) {
digitalWrite(righe[i], LOW);
delay(100);
}
}
Cosa deve succedere
Lo sketch è volutamente semplice: serve come test del cablaggio. Le righe vengono portate progressivamente a HIGH e poi riportate a LOW.
Perché questo test è utile
Con 16 collegamenti è molto facile scambiare una riga con una colonna. Prima di provare a disegnare lettere o simboli conviene quindi verificare la matrice con una sequenza elementare.
Una volta sicuri del cablaggio, nel progetto successivo potremo passare al vero controllo dei singoli LED e creare caratteri tramite mappe di bit.
Come si accende un singolo LED
Ogni punto della matrice si trova all’intersezione tra una riga e una colonna. Per accenderne uno solo bisogna quindi selezionare la riga corretta e contemporaneamente impostare la colonna con la polarità richiesta.
Perché servono le resistenze
I LED devono avere una limitazione di corrente. Nel progetto vengono utilizzate 8 resistenze da 220 Ω. Non eliminare le resistenze pensando che la matrice possa essere collegata direttamente ai pin.
Limiti del collegamento diretto
Questo circuito è molto utile per capire il funzionamento della matrice, ma occupa praticamente tutti i pin disponibili di Arduino Uno. Per progetti più complessi si usano spesso driver come MAX7219, che riducono drasticamente il numero di collegamenti richiesti.
Immagine del test
Scarica lo sketch
⬇️ Scarica arduino_matrice_led_sketch.inoDebug rapido
- controlla l’orientamento fisico della matrice;
- non dare per scontata la piedinatura: verifica il modello utilizzato;
- ricontrolla una per una le otto righe e le otto colonne;
- verifica le connessioni verso A0–A3 oltre ai pin digitali;
- se una riga non si accende, controlla sia quella riga sia le colonne comuni;
- se si accendono punti inattesi, cerca collegamenti invertiti tra righe e colonne;
- controlla che siano presenti le resistenze da 220 Ω previste dal circuito.
Varianti del progetto
- testare anche le colonne una alla volta;
- accendere un singolo LED alla volta;
- creare una diagonale animata;
- realizzare un effetto scansione;
- visualizzare lettere e simboli;
- usare un MAX7219 per liberare i pin di Arduino.
Cosa devi ricordare
- Una matrice 8×8 contiene 64 LED organizzati in 8 righe e 8 colonne.
- Il collegamento diretto richiede 16 linee di controllo.
- Arduino Uno può usare A0–A3 anche come pin digitali.
- Il test serve soprattutto a individuare errori di cablaggio.
- Le resistenze limitano la corrente dei LED.
- Nel prossimo progetto useremo la matrice per visualizzare lettere e simboli.
Domande frequenti
Perché vengono usati anche A0, A1, A2 e A3?
Su Arduino Uno i pin analogici possono essere usati anche come normali ingressi o uscite digitali. In questo progetto servono perché la matrice richiede 16 linee.
Perché una matrice da 64 LED usa solo 16 terminali?
Perché i LED condividono otto linee di riga e otto di colonna. Ogni LED si trova all’intersezione di una specifica riga e colonna.
Posso usare una matrice 8×8 diversa?
Sì, ma la piedinatura può cambiare. Devi verificare il datasheet o identificare righe e colonne prima di copiare il cablaggio.
È meglio collegarla direttamente o usare MAX7219?
Per imparare il principio della matrice il collegamento diretto è molto istruttivo. Per applicazioni pratiche, soprattutto con più matrici o animazioni, MAX7219 è molto più comodo.

