Modulo matrice di led 8×8 pilotata dal driver MAX7219, i 64 led rossi hanno un diametro di 3mm.
Per la sua gestione si utilizza l’interfaccia SPI, per cui sono sufficienti solamente tre pin più quelli di alimentazione.
Indice
Schema elettrico del modulo FC-16
Lo schema elettrico del modulo Matrice LED 8×8 con MAX7219, che può essere trovato con la sigla FC-16, è molto semplice in quanto tutto incentrato sull’integrato MAX7219 (vedere datasheet) che è stato progettato per controllare display a LED a segmenti o matrice di punti.
Il MAX7219 dispone di un’interfaccia seriale sincrona e può comandare 8 cifre a 7 segmenti (catodo comune) o 64 LED singoli per realizzare bar-graph o array 5×7 o 8×8 e simili.
Il chip include una codifica BCD code-B programmabile e una memoria statica 8×8 che conserva ogni digit.
Il controller permette di regolare la corrente nei LED con una sola resistenza esterna collegata al pin Iset, oltre a disporre della possibilità di variare la luminosità da programma.
L’interfaccia con il microcontrollore è di tipo SPI: VCC, GND, DIN, CS, CLK.
Alle sue porte sono collegate le righe e colonne del modulo display, all’integrato sono poi collegate le tre linee che permettono di dialogare con la scheda di controllo. Per ultimo sono presenti i pin di alimentazione
Per la connessione del modulo sono disponibili due connettori a 5 pin, questi riportano le seguenti diciture
Dicitura | Funzione |
---|---|
VCC | Alimentazione del modulo +5V |
GND | Collegamento di massa |
DIN - DOUT | Ingresso dati, e uscita verso il modulo successivo |
CS | Selezione del modulo |
CLK | Clock dei dati |
uno è presente sul lato sinistro del modulo è rappresenta la porta di ingresso; il lato destro è la porta di uscita, per il controllo del singolo modulo, è necessario solo collegare la porta di ingresso con la CPU.
Quando più moduli si collegano in cascata, la prima porta di ingresso del modulo si collega alla CPU, la porta di uscita si collega alla porta di ingresso del secondo modulo, la porta di uscita del secondo modulo si collega alla porta di ingresso del terzo modulo e così via.
Foto del modulo
Tensione operativa: | 5V |
Interfaccia: | SPI (VCC, GND, DIN, CS, CLK) |
Colore LED: | ROSSO |
Porte: | input ed output |
Dimensioni: | 50 x 32 x 14 mm |
Peso: | 21g |
Matrice led tipo 1088AS
Modulo pilota per matrice di led a catodo comune 8×8 tipo 1088AS, sul modulo sono presenti 64 LED rossi dal diametro di 3mm. Dispone di 16 pin per pilotare i singoli LED.
Colore emesso: | rosso |
Colore faccia: | nero |
Tipo: | anodo - colonna ; catodo - riga |
Lunghezza d'onda: | 625 ~ 630 nm |
Tensione diretta: | 2.1V ~ 2.5V |
Corrente diretta: | 20mA |
Dimensioni: | 32 mm x 32 mm x 8,0 mm |
Dove trovare il modulo
Il modulo Matrice LED 8×8 con MAX7219 può essere acquistato presso il sito ICStation. Il codice ID 11100, con costo unitario del modulo, al momento della stesura di questo articolo, è di circa 3€.
Presso lo stesso sito è possibile l’acquisto anche di un modulo formato da quattro matrici dei led, con cui per realizzare scritte scorrevoli, il codice ID è 13067. Il costo in questo caso è di 6€
Il modulo viene spedito all’interno di una busta antistatica con dei Pin strip di collegamento che devono essere saldati a cura dell’utilizzatore.
Modulo alternativo
Lo stesso modulo si può trovare anche con l’integrato MAX7219 in versione PDip, matrice di LED 8×8 con LED di colore ROSSO a catodo comune, interfaccia SPI.
Tensione operativa: | 5V |
Interfaccia: | SPI (VCC, GND, DIN, CS, CLK) |
Colore LED: | ROSSO |
Porte: | input ed output |
Dimensioni: | 50 x 32 x 14 mm |
Peso: | 21g |
Come collegare il modulo
Per collegare il modulo singolo occorre utilizzare 5 cavi seguendo lo schema sotto riportato
Librerie di gestione del modulo
Per facilitare l’uso del modulo sono disponibili varie librerie. Per il caricamento occorre aprire sotto il menù Sketch, #include libreria, “Gestione Librerie..”
Nel campo ricerca si inserirà “LedControl” oppure “MD_MAX72XX” , trovata la libreria , premendo su “More info..” apparirà il tasto “Installa” cliccare il tasto, la libreria verrà installata
Per caricare una libreria vi consiglio la lettura dell’articolo Arduino – Tutorial, come installare una libreria
Esempio base
In questo semplice esempio , si è utilizzata la libreria “LedControl”.
Per preparare gli Sprite da visualizzare sulla matrice si è utilizzata un’applicazione online creata da Miro Bozik, che permette di avere i codici numerici da utilizzare nello sketch
Nell’esempio di sketch sotto riportato è visibile per esempio come visualizzare in sequenza delle lettere.
In questo esempio la parola “ADRIROBOT” uno dopo l’altro sulla matrice. I caratteri utilizzato una matrice 5×8.La prima parte serve per impostare i collegamenti della matrice e comunicare il numero di moduli collegati
1 2 3 4 5 6 7 |
#include "LedControl.h" #define DATA_PIN 11 // or MOSI #define CLK_PIN 13 // or SCK #define CS_PIN 10 // or SS LedControl lc = LedControl(DATA_PIN, CLK_PIN, CS_PIN, 1); |
sono poi definite le composizioni delle varie lettere, che sono caricate sequenzialmente con una pausa di attesa prima dell’aggiornamento. Segue lo sketch completo
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
#include "LedControl.h" #define DATA_PIN 11 // or MOSI #define CLK_PIN 13 // or SCK #define CS_PIN 10 // or SS LedControl lc = LedControl(DATA_PIN, CLK_PIN, CS_PIN, 1); /* aspettiamo sempre un po' tra gli aggiornamenti del display */ unsigned long delaytime = 500; void setup() { lc.shutdown(0, false); /* Imposta la luminosità su valori medi */ lc.setIntensity(0, 8); /* e cancella il display */ lc.clearDisplay(0); } /* Questo metodo mostrerà i caratteri per la parola "ADRIROBOT" uno dopo l'altro sulla matrice. (si utilizza una matrice di 5x7 led per rappresentare i caratteri) */ void writeparolaOnMatrix() { /* ecco i dati per i caratteri */ byte a[5] = {B01111110, B10001000, B10001000, B10001000, B01111110}; byte b[5] = {B01111100, B10010010, B10010010, B11111110, B10000010}; byte d[5] = {B01111100, B10000010, B10000010, B11111110, B10000010}; byte r[5] = {B01100010, B10010100, B10011000, B10010000, B11111110}; byte i[5] = {B00000000, B10000010, B11111110, B10000010, B00000000}; byte o[5] = {B01111100, B10000010, B10000010, B10000010, B01111100}; byte t[5] = {B10000000, B10000000, B11111110, B10000000, B10000000}; /* ora li mostra uno ad uno con un piccolo ritardo*/ lc.setRow(0, 0, a[0]); lc.setRow(0, 1, a[1]); lc.setRow(0, 2, a[2]); lc.setRow(0, 3, a[3]); lc.setRow(0, 4, a[4]); delay(delaytime); lc.setRow(0, 0, d[0]); lc.setRow(0, 1, d[1]); lc.setRow(0, 2, d[2]); lc.setRow(0, 3, d[3]); lc.setRow(0, 4, d[4]); delay(delaytime); lc.setRow(0, 0, r[0]); lc.setRow(0, 1, r[1]); lc.setRow(0, 2, r[2]); lc.setRow(0, 3, r[3]); lc.setRow(0, 4, r[4]); delay(delaytime); lc.setRow(0, 0, i[0]); lc.setRow(0, 1, i[1]); lc.setRow(0, 2, i[2]); lc.setRow(0, 3, i[3]); lc.setRow(0, 4, i[4]); delay(delaytime); lc.setRow(0, 0, r[0]); lc.setRow(0, 1, r[1]); lc.setRow(0, 2, r[2]); lc.setRow(0, 3, r[3]); lc.setRow(0, 4, r[4]); delay(delaytime); lc.setRow(0, 0, o[0]); lc.setRow(0, 1, o[1]); lc.setRow(0, 2, o[2]); lc.setRow(0, 3, o[3]); lc.setRow(0, 4, o[4]); delay(delaytime); lc.setRow(0, 0, b[0]); lc.setRow(0, 1, b[1]); lc.setRow(0, 2, b[2]); lc.setRow(0, 3, b[3]); lc.setRow(0, 4, b[4]); delay(delaytime); lc.setRow(0, 0, o[0]); lc.setRow(0, 1, o[1]); lc.setRow(0, 2, o[2]); lc.setRow(0, 3, o[3]); lc.setRow(0, 4, o[4]); delay(delaytime); lc.setRow(0, 0, t[0]); lc.setRow(0, 1, t[1]); lc.setRow(0, 2, t[2]); lc.setRow(0, 3, t[3]); lc.setRow(0, 4, t[4]); delay(delaytime); lc.setRow(0, 0, 0); lc.setRow(0, 1, 0); lc.setRow(0, 2, 0); lc.setRow(0, 3, 0); lc.setRow(0, 4, 0); delay(delaytime); } void loop() { writeparolaOnMatrix(); } |
Esempio con più moduli
Altro esempio di gestione del modulo è quello di unire due moduli. Il lato OUT del primo modulo sarà da collegare al lato IN del secondo modulo
Per il test in questo caso si è utilizzata la libreria “HD_MAX72XX” che contiene già alcuni esempi.
Prima di compilare lo sketch, occorre specificare il modello di modulo utilizzato, in questo caso “FC16_HW” per permettere al programma di trasferire correttamente i dati.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <MD_MAX72xx.h> #include <SPI.h> #include "MD_RobotEyes.h" #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 2 #define CLK_PIN 13 // or SCK #define DATA_PIN 11 // or MOSI #define CS_PIN 10 // or SS // SPI hardware interface MD_MAX72XX M = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); |
Esempio del programma “MD_MAX72xx_RobotEyes”
Esempio scorrimento stringa di testo.