Sommario:

MAX7219 LED Dot Matrix Assemblaggio e test: 6 passaggi (con immagini)
MAX7219 LED Dot Matrix Assemblaggio e test: 6 passaggi (con immagini)

Video: MAX7219 LED Dot Matrix Assemblaggio e test: 6 passaggi (con immagini)

Video: MAX7219 LED Dot Matrix Assemblaggio e test: 6 passaggi (con immagini)
Video: Как сделать умные часы ESP32 своими руками с прогнозом погоды 2024, Novembre
Anonim
Image
Image
Controlla il pacchetto
Controlla il pacchetto

Un display a matrice di punti è un dispositivo di visualizzazione che contiene diodi emettitori di luce allineati sotto forma di matrice. Questi display a matrice di punti sono utilizzati in applicazioni in cui è necessario visualizzare insieme simboli, grafici, caratteri, alfabeti e numeri in statico e Movimento a scorrimento. Il display a matrice di punti è prodotto in varie dimensioni come 5x7, 8x8, 16x8, 128x16, 128x32 e 128x64 dove i numeri rappresentano i LED in righe e colonne, inoltre questi display sono disponibili in diversi colori come rosso, verde, giallo, blu, Arancio, Bianco.

In questo Instructable, esaminerò l'interfacciamento di una matrice di punti 8x8 che ha un driver MAX7219 a un Arduino Uno. Iniziamo.

Forniture

MAX7219

Passaggio 1: controlla il pacchetto

Come puoi vedere ho una versione smt della scheda driver, è molto importante verificare tutti i componenti necessari poiché i componenti smd sono di dimensioni molto piccole e puoi facilmente perderli. Ci sono anche versioni dip disponibili online ma ho usato la versione smt per le sue dimensioni.

Passaggio 2: un po' di questa particolare matrice di punti

Un po' di questa particolare matrice di punti
Un po' di questa particolare matrice di punti

un singolo modulo può pilotare un catodo comune a matrice di punti 8x8.

Tensione di esercizio: 5 v

Dimensioni: lunghezza 3,2 cm X 3,2 cm di larghezza X 1,3 cm di altezza, fori con quattro viti, diametro di 3 mm

Moduli con interfacce di input e output, supporto per moduli multipli in cascata.

I terminali di ingresso e uscita dati sono specificati sul modulo.

Passaggio 3: il driver MAX7219

Il driver MAX7219
Il driver MAX7219
Il driver MAX7219
Il driver MAX7219

Il MAX7219 è un IC progettato per controllare una MATRICE LED 8x8. L'IC è un driver di visualizzazione a catodo comune (Common Negative) con ingresso seriale che interfaccia i microprocessori (o microcontrollori) a display LED numerici a 7 segmenti fino a 8 cifre, display con grafici a barre o 64 LED singoli.

Caratteristiche e specifiche

Intervallo di tensione di esercizio: da +4,0 a +5,5 V

Tensione di esercizio consigliata: +5V

Tensione di alimentazione massima: 6V

Corrente massima consentita per assorbire ogni pin del segmento: 100 mA

Corrente massima consentita attraverso ciascun pin di terra DIGIT: 500 mA

Basso consumo energetico

Tempo di ritardo da dati a segmento: 2,2 mSec

Temperatura di esercizio: da 0°C a +70°C

Temperatura di stoccaggio: da -65°C a +150°C

Passaggio 4: il circuito

Il circuito
Il circuito
Il circuito
Il circuito

Il circuito è abbastanza semplice e può essere costruito utilizzando cavi jumper maschio-femmina. Basta seguire il pinout e costruire il circuito. Puoi assemblarlo in seguito su un PCB se stai facendo un'applicazione permanente per Matrix.

La configurazione dei pin è la seguente:

  • Vcc a 5V Pin di Arduino.
  • Gnd to Gnd Pin di Arduino.
  • DIN al pin digitale 12 di Arduino.
  • CS al Pin digitale 11 di Arduino
  • CLK al Pin 10 digitale di Arduino.

Passaggio 5: il codice

Qui in questo Instructable ti fornirò due codici diversi. Uno genererà alcuni alfabeti inglesi e faccine su Matrix. L'altro per far accendere tutti i 64 led uno ad uno. Devi usare la libreria lledcontrol per farlo funzionare.

Questo è il codice per alfabeti e sorrisi inglesi

#include int DIN = 12; int CS = 11; int CLK = 10; byte e[8]= {0x7C, 0x7C, 0x60, 0x7C, 0x7C, 0x60, 0x7C, 0x7C}; byte d[8]= {0x78, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x78}; byte u[8]= {0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E}; byte c[8]= {0x7E, 0x7E, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x7E}; byte otto[8]= {0x7E, 0x7E, 0x66, 0x7E, 0x7E, 0x66, 0x7E, 0x7E}; byte s[8]= {0x7E, 0x7C, 0x60, 0x7C, 0x3E, 0x06, 0x3E, 0x7E}; byte punto[8]= {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18}; byte o[8]= {0x7E, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E}; byte m[8]= {0xE7, 0xFF, 0xFF, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3}; LedControl lc=LedControl(DIN, CLK, CS, 0); void setup(){ lc.shutdown(0, false); //Il MAX72XX è in modalità di risparmio energetico all'avvio lc.setIntensity(0, 15); // Imposta la luminosità al valore massimo lc.clearDisplay(0); // e cancella il display } void loop(){ byte smile[8]= {0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C}; byte neutro[8]= {0x3C, 0x42, 0xA5, 0x81, 0xBD, 0x81, 0x42, 0x3C}; byte cipiglio[8]= {0x3C, 0x42, 0xA5, 0x81, 0x99, 0xA5, 0x42, 0x3C}; printByte(sorriso); ritardo(1000); printByte(neutro); ritardo(1000); printByte(cipiglio); ritardo(1000); printEduc8s(); lc.clearDisplay(0); ritardo(1000); } void printEduc8s() { printByte(e); ritardo(1000); printByte(d); ritardo(1000); printByte(u); ritardo(1000); printByte(c); ritardo(1000); printByte(otto); ritardo(1000); printByte(s); ritardo(1000); printByte(punto); ritardo(1000); printByte(c); ritardo(1000); printByte(o); ritardo(1000); printByte(m); ritardo(1000); } void printByte(byte carattere ) { int i = 0; for(i=0;i<8;i++) { lc.setRow(0, i, carattere); } }

e il codice per testare tutti i 64 LED

//Dobbiamo sempre includere la libreria#include "LedControl.h"

/*

Ora abbiamo bisogno di un LedControl con cui lavorare. ***** Questi numeri di pin probabilmente non funzioneranno con il tuo hardware ***** il pin 12 è collegato a DataIn il pin 10 è collegato a CLK Il pin 11 è collegato a LOAD Abbiamo solo un singolo MAX72XX. */ LedControl lc=LedControl(12, 11, 10, 1);

/* aspettiamo sempre un po' tra gli aggiornamenti del display */

unsigned long delaytime=100;

void setup() {

/* Il MAX72XX è in modalità di risparmio energetico all'avvio, dobbiamo fare una sveglia */ lc.shutdown(0, false); /* Imposta la luminosità a valori medi */ lc.setIntensity(0, 8); /* e cancella il display */ lc.clearDisplay(0); }

/*

Questo metodo visualizzerà i caratteri per la parola "Arduino" uno dopo l'altro sulla matrice. (sono necessari almeno 5x7 led per vedere tutti i caratteri) */ void writeArduinoOnMatrix() { /* ecco i dati per i caratteri */ byte a[5]={B01111110, B10001000, B10001000, B10001000, B01111110}; byte r[5]={B00111110, B00010000, B00100000, B00100000, B00010000}; byte d[5]={B00011100, B00100010, B00100010, B00010010, B11111110}; byte u[5]={B00111100, B000000110, B000000110, B00000100, B00111110}; byte i[5]={B00000000, B00100010, B10111110, B00000010, B00000000}; byte n[5]={B00111110, B00010000, B00100000, B00100000, B00011110}; byte o[5]={B00011100, B00100010, B00100010, B00100010, B00011100};

/* ora li mostra uno per 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]); ritardo (ritardo); 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]); ritardo (ritardo); 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]); ritardo (ritardo); lc.setRow(0, 0, u[0]); lc.setRow(0, 1, u[1]); lc.setRow(0, 2, u[2]); lc.setRow(0, 3, u[3]); lc.setRow(0, 4, u[4]); ritardo (ritardo); 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]); ritardo (ritardo); lc.setRow(0, 0, n[0]); lc.setRow(0, 1, n[1]); lc.setRow(0, 2, n[2]); lc.setRow(0, 3, n[3]); lc.setRow(0, 4, n[4]); ritardo (ritardo); 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]); ritardo (ritardo); 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); ritardo (ritardo); }

/*

Questa funzione accende alcuni Led in fila. Il motivo verrà ripetuto su ogni riga. Il motivo lampeggerà insieme al numero di riga. la riga numero 4 (indice==3) lampeggerà 4 volte ecc. */ void righe() { for(int riga=0;riga<8;riga++) { delay(delaytime); lc.setRow(0, riga, B10100000); ritardo (ritardo); lc.setRow(0, riga, (byte)0); for(int i=0;i

/*

Questa funzione accende alcuni Led in colonna. Il modello verrà ripetuto su ogni colonna. Il motivo lampeggerà insieme al numero della colonna. la colonna numero 4 (indice==3) lampeggerà 4 volte ecc. */ void columns() { for(int col=0;col<8;col++) { delay(delaytime); lc.setColumn(0, col, B10100000); ritardo (ritardo); lc.setColumn(0, col, (byte)0); for(int i=0;i

/*

Questa funzione accenderà ogni Led della matrice. Il led lampeggerà insieme al numero di riga. la riga numero 4 (indice==3) lampeggerà 4 volte, ecc. */ void single() { for(int riga=0;riga<8;riga++) { for(int col=0;col<8;col++) { ritardo (ritardo); lc.setLed(0, riga, col, vero); ritardo (ritardo); for(int i=0;i

ciclo vuoto() {

writeArduinoOnMatrix(); righe(); colonne(); separare(); }

Passaggio 6: l'output

Image
Image
Il risultato
Il risultato
Il risultato
Il risultato
Il risultato
Il risultato

Guarda il video completo qui: - MAX7219 8x8 LED MATRIX MONTAGGIO E COLLAUDO utilizzando ARDUINO

Bene, tutto questo duro lavoro, sicuramente ripaga abbastanza bene quando vedi il risultato. Ne vale la pena!!

Iscriviti al mio canale youtube:-Creative Stuff

Consigliato: