Cerca codice

Matrice LED 8x8 utilizzando un modulo Arduino MAX7219

Matrice LED 8x8 utilizzando un modulo Arduino MAX7219

In questo tutorial, impareremo come controllare una matrice LED 8x8 utilizzando un modulo MAX7219 con un Arduino. Il MAX7219 semplifica il controllo di più LED, permettendoci di visualizzare facilmente caratteri e motivi. Alla fine di questo progetto, sarai in grado di visualizzare la parola "ROBOJAX" sulla matrice.

Per raggiungere questo obiettivo, utilizzeremo la libreria LedControl, che è specificamente progettata per interfacciarsi con il MAX7219. Questa libreria ci consente di inviare dati alla matrice LED con il minimo sforzo. Se desideri una comprensione più chiara del cablaggio e del codice, assicurati di controllare il video associato (nel video a 0:30).

Hardware Spiegato

I componenti principali di questo progetto includono il modulo MAX7219 e la matrice LED 8x8. Il MAX7219 è un circuito integrato che gestisce il display dei LED, occupandosi della comunicazione e dei segnali di controllo dall'Arduino. Utilizza un'interfaccia seriale, il che significa che possiamo controllare molti LED con solo alcuni pin dall'Arduino.

La matrice LED 8x8 è composta da 64 LED individuali disposti in una griglia. Ogni LED può essere acceso o spento inviando i comandi appropriati tramite il MAX7219. Questo consente di visualizzare vari caratteri e grafica sulla matrice.

Dettagli della scheda tecnica

ProduttoreMaxim Integrated
Numero di parteMAX7219
Tensione logica/IO3.3V a 5.5V
Tensione di alimentazione4,0V a 5,5V
Corrente di uscita (per canale)40 mA max
Corrente di picco (per canale)100 mA max
Linee guida sulla frequenza PWM100 Hz
Soglie logiche di ingresso2.0V (alto) / 0.8V (basso)
Caduta di tensione / RDS(on)/ saturazione0,2V tip.
Limiti termici150°C
Pacchetto16-DIP
Note / variantiConfigurazione ad anodo comune
  • Assicurati di fornire un'alimentazione adeguata (4,0V a 5,5V).
  • Utilizzare resistori di limitazione della corrente per ciascun LED per prevenire danni.
  • Mantieni i cablaggi corti per evitare interferenze.
  • Monitora la dissipazione del calore; utilizza un dissipatore se necessario.
  • Controlla due volte le connessioni dei pin per evitare malintesi.

Istruzioni di cablaggio

Per collegare il MAX7219 all'Arduino, collegare i seguenti pin:

  • Collegare ilVCCpin del MAX7219 al 5V dell'Arduino.
  • Collegare ilGNDpin al terreno dell'Arduino.
  • Collegare ilDINpin (Dati In) al pin 12 di Arduino.
  • Collegare ilCLKcollegare il pin (Orologio) al pin 11 di Arduino.
  • Collegare ilCSpin (Chip Select) al pin 10 di Arduino.

Assicurati di controllare che tutte le connessioni siano sicure prima di accendere il circuito. Il cablaggio è semplice, ma se riscontri problemi, rivedi attentamente le connessioni (nel video a :45).

Esempi di codice e guida passo passo

Nel codice, iniziamo includendo la libreria LedControl, che è essenziale per comunicare con il MAX7219. L'estratto seguente inizializza l'oggetto LedControl:

LedControl lc=LedControl(12,11,10,1);

Questa riga imposta il pin dei dati, il pin dell'orologio, il pin di selezione del chip e il numero di dispositivi (1, in questo caso). Successivamente, nelsetup()funzione, accendiamo il MAX7219 e impostiamo l'intensità del display:

lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);

Questo assicura che il display sia attivo e pronto a mostrare i caratteri. La funzione principale che guida il display èwriteArduinoOnMatrix(), che accende sequenzialmente le righe della matrice per visualizzare le lettere.

Dimostrazione / Cosa Aspettarsi

Una volta che tutto è cablato e il codice è caricato, la matrice LED dovrebbe visualizzare la parola "ROBOJAX". Se il display non funziona, controlla eventuali problemi come connessioni allentate o assegnazioni di pin errate. Inoltre, assicurati che l'alimentazione sia adeguata (nel video a 2:30).

Capitoli

  • Introduzione (0:00)
  • Panoramica dell'hardware (0:30)
  • Istruzioni di cablaggio (1:45)
  • Code Walkthrough (2:15)
  • Dimostrazione (3:00)
4-8x8 LED matrix using a MAX7219 Arduino module
Lingua: C++
/*
 * Questo video ti mostra come utilizzare il modulo MAX7219 con una matrice LED 8x8 per visualizzare testo o qualsiasi carattere sul LED. 
 * Guarda il video su YouTube: https://youtu.be/AAiDwBKs9uE
 * 
 * Scritto da Ahmad Shamshiri per Robojax.com 
 * il 26 febbraio 2017 ad Ajax, Ontario, Canada 
 * Ottieni questo codice e altri codici Arduino da Robojax.com 
 * Impara Arduino passo dopo passo in un corso strutturato con tutti i materiali, schemi di cablaggio e librerie 
 * tutti in un unico posto.
 * 
 * Ottieni accesso anticipato ai miei video tramite Patreon e fai menzionare il tuo nome alla fine di ogni 
 * video che pubblico su YouTube qui: http://robojax.com/L/?id=63 (guarda fino alla fine di questo video per un elenco dei miei Patrons)
 * 
 * O fai una donazione utilizzando PayPal http://robojax.com/L/?id=64
 * 
 * Questo codice è "COSÌ COM'È" senza garanzia o responsabilità. Libero di essere utilizzato a patto che tu mantenga intatta questa nota. 
 * Questo codice è stato scaricato da Robojax.com 
 * Questo programma è software libero: puoi ridistribuirlo e/o modificarlo 
 * sotto i termini della GNU General Public License come pubblicata dalla 
 * Free Software Foundation, sia versione 3 della Licenza, che 
 * (a tua scelta) qualsiasi versione successiva.
 * 
 * Questo programma è distribuito con la speranza che possa essere utile, 
 * ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di 
 * COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la 
 * GNU General Public License per ulteriori dettagli.
 * 
 * Dovresti aver ricevuto una copia della GNU General Public License 
 * assieme a questo programma. Se non l'hai ricevuta, vai a <https://www.gnu.org/licenses/>.
 * /
 * 
 * // Dobbiamo sempre includere la libreria 
 * // Basato su un progetto pubblicato https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Now we need a LedControl to work with.
 *   // Customized for RoboJax.com on February 26, 2017 in Ajax, Ontario, Canada.
 * **** These pin numbers will probably not work with your hardware *****
 *   pin 12 is connected to the DataIn 
 *   pin 11 is connected to the CLK 
 *   pin 10 is connected to CS
 *   We have only a single MAX72XX.
 */
 LedControl lc=LedControl(12,11,10,1);

/*
 * we always wait a bit between updates of the display */
 *  unsigned long delaytime=600;
 *  
 *  void setup() {
 *    /*
 *     The MAX72XX is in power-saving mode on startup,
 *     we have to do a wakeup call
 */
   lc.shutdown(0,false);
/*
 * Set the brightness to a medium value */
 *    lc.setIntensity(0,8);
 *    /* and clear the display
 */
   lc.clearDisplay(0);
 }

/*
 * This method will display the characters for the
 *   word "Arduino" one after the other on the matrix. 
 *   (you need at least 5x7 LEDs to see the whole characters)
 */
 void writeArduinoOnMatrix() {
/*
 * here is the data for the characters */
 *  
 *    // K
 *    byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *    byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 *    byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *    byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *    byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 *    byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *    byte love[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};  
 *  
 *  
 *    /* Letter R
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,R[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter R ///////

/*
 * Letter O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 *  
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// this is for blank
 *    }  
 *  //////////////// END of Letter O ///////
 *  
 *  
 *    /* Letter B
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,B[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter B ///////

/*
 * Letter O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 *  
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// this is for blank
 *    }  
 *  //////////////// END of Letter O ///////
 *  
 *    /* Letter J
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,J[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter J ///////

/*
 * Letter A */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,A[i]);
 *  
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// this is for blank
 *    }  
 *  //////////////// END of Letter A ///////
 *  
 *    /* Letter X
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,X[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter X ///////



5-8x8 LED Matrix using a MAX7219 Arduino Module
Lingua: C++
/*
 * Questo video ti mostra come utilizzare il modulo MAX7219 con una matrice LED 8x8 per visualizzare testo o caratteri sui LED.  
 * Guarda il video su YouTube: https://youtu.be/AAiDwBKs9uE
 * 
 * Scritto da Ahmad S. per Robojax.com  
 * il 26 febbraio 2017 ad Ajax, Ontario, Canada  
 * Permesso di condividere questo codice, purché questa  
 * nota rimanga con il codice.  
 * Dichiarazione di non responsabilità: Questo codice è "COSÌ COM'È" e solo per scopi educativi.
 * 
 * /
 * 
 * // Dobbiamo sempre includere la libreria  
 * // Basato su un progetto pubblicato su https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Now we need a LedControl object to work with.
 *  // Customized for RoboJax.com on February 26, 2017 in Ajax, Ontario, Canada.
 * **** These pin numbers will probably not work with your hardware *****
 *  pin 1 is connected to the DataIn 
 *  pin 4 is connected to the CLK 
 *  pin 53 is connected to CS
 *  We have only a single MAX72XX.
 */
LedControl lc=LedControl(1,4,53,1); // this line determines if this code can work with Arduino Mega or Arduino UNO

/*
 * we always wait a bit between updates of the display */
 * unsigned long delaytime=600;
 * 
 * void setup() {
 *   /*
 *    The MAX72XX is in power-saving mode on startup,
 *    we have to do a wakeup call
 */
  lc.shutdown(0,false);
/*
 * Set the brightness to a medium value */
 *   lc.setIntensity(0,8);
 *   /* and clear the display
 */
  lc.clearDisplay(0);
}

/*
 * This method will display the characters for the
 *  word "Arduino" one after the other on the matrix. 
 *  (you need at least 5x7 LEDs to see the whole characters)
 */
void writeArduinoOnMatrix() {
/*
 * here is the data for the characters */
 * 
 *   // K
 *   byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *   byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 *   byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *   byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *   byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 *   byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *   byte love[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};  
 * 
 * 
 *   /* Letter R
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,R[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter R ///////

/*
 * Letter O */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,O[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// this is for blank
 *   }  
 * /////////////// END of Letter O ///////
 * 
 * 
 *   /* Letter B
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,B[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter B ///////

/*
 * Letter O */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,O[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// this is for blank
 *   }  
 * /////////////// END of Letter O ///////
 * 
 *   /* Letter J
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,J[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter J ///////

/*
 * Letter A */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,A[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// this is for blank
 *   }  
 * /////////////// END of Letter A ///////
 * 
 *   /* Letter X
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,X[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter X ///////



File📁

Nessun file disponibile.