Suchcode

8x8 LED-Matrix mit einem MAX7219 Arduino-Modul

8x8 LED-Matrix mit einem MAX7219 Arduino-Modul

In diesem Tutorial werden wir lernen, wie man eine 8x8 LED-Matrix mit einem MAX7219-Modul und einem Arduino steuert. Der MAX7219 vereinfacht die Steuerung mehrerer LEDs, sodass wir Zeichen und Muster einfach anzeigen können. Am Ende dieses Projekts werden Sie in der Lage sein, das Wort "ROBOJAX" auf der Matrix anzuzeigen.

Um dies zu erreichen, werden wir die LedControl-Bibliothek nutzen, die speziell für die Ansteuerung des MAX7219 entwickelt wurde. Diese Bibliothek ermöglicht es uns, Daten mit minimalem Aufwand an die LED-Matrix zu senden. Wenn Sie ein klareres Verständnis der Verdrahtung und des Codes wünschen, sollten Sie sich das zugehörige Video (im Video bei 0:30) ansehen.

Hardware erklärt

Die Hauptkomponenten dieses Projekts sind das MAX7219-Modul und die 8x8-LED-Matrix. Der MAX7219 ist ein integrierter Schaltkreis, der die Anzeige der LEDs verwaltet und die Kommunikations- und Steuersignale vom Arduino verarbeitet. Er verwendet eine serielle Schnittstelle, was bedeutet, dass wir viele LEDs mit nur wenigen Pins vom Arduino steuern können.

Die 8x8-LED-Matrix besteht aus 64 einzelnen LEDs, die in einem Raster angeordnet sind. Jede LED kann ein- oder ausgeschaltet werden, indem die entsprechenden Befehle über den MAX7219 gesendet werden. Dies ermöglicht die Anzeige verschiedener Zeichen und Grafiken auf der Matrix.

Datenblattdetails

HerstellerMaxim Integrated
TeilenummerMAX7219
Logik/IO-Spannung3,3V bis 5,5V
Versorgungsspannung4,0V bis 5,5V
Ausgangsstrom (pro Kanal)40 mA max
Spitzenstrom (pro Kanal)100 mA max
PWM-Frequenzrichtlinien100 Hz
Eingangslogikschwellen2,0V (hoch) / 0,8V (niedrig)
Spannungsabfall / RDS(on)/ Sättigung0,2 V typ.
Thermische Grenzen150°C
Paket16-DIP
Hinweise / VariantenGemeinsame Anodenanordnung
  • Stellen Sie eine ordnungsgemäße Stromversorgung sicher (4,0V bis 5,5V).
  • Verwenden Sie strombegrenzende Widerstände für jede LED, um Schäden zu vermeiden.
  • Halten Sie die Verkabelung kurz, um Interferenzen zu vermeiden.
  • Überwachen Sie die Wärmeabfuhr; verwenden Sie bei Bedarf einen Kühlkörper.
  • Überprüfen Sie die Pin-Verbindungen erneut, um Missverständnisse zu vermeiden.

Verdrahtungsanweisungen

Um den MAX7219 mit dem Arduino zu verbinden, schließen Sie die folgenden Pins an:

  • Verbinden Sie dieVCCPin des MAX7219 an das 5V des Arduino.
  • Verbinden Sie dieGNDPin an den Arduino-Masse.
  • Verbinden Sie dieDINPin (Daten Eingang) an Arduino Pin 12.
  • Verbinden Sie dieCLKPin (Uhr) an Arduino-Pin 11.
  • Verbinden Sie dieCSPin (Chip Select) an Arduino-Pin 10.

Stellen Sie sicher, dass alle Verbindungen sicher sind, bevor Sie den Stromkreis einschalten. Die Verkabelung ist einfach, aber wenn Sie auf Probleme stoßen, überprüfen Sie die Verbindungen sorgfältig (im Video bei 1:45).

Codebeispiele und Anleitung

Im Code beginnen wir mit der Einbindung der LedControl-Bibliothek, die für die Kommunikation mit dem MAX7219 unerlässlich ist. Der folgende Auszug initialisiert das LedControl-Objekt:

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

Diese Zeile legt den Datenpin, den Taktpin, den Chip-Auswahl-Pin und die Anzahl der Geräte fest (1 in diesem Fall). Als Nächstes, in dersetup()Funktion, wir wecken den MAX7219 und stellen die Display-Helligkeit ein:

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

Dies stellt sicher, dass das Display aktiv ist und bereit ist, Zeichen anzuzeigen. Die Hauptfunktion, die das Display steuert, istwriteArduinoOnMatrix(), die nacheinander die Reihen der Matrix beleuchtet, um Buchstaben anzuzeigen.

Demonstration / Was zu erwarten ist

Sobald alles verkabelt und der Code hochgeladen ist, sollte die LED-Matrix das Wort "ROBOJAX" anzeigen. Wenn die Anzeige nicht funktioniert, überprüfen Sie auf Probleme wie lose Verbindungen oder falsche Pin-Zuweisungen. Stellen Sie außerdem sicher, dass die Stromversorgung ausreichend ist (im Video bei 2:30).

Kapitel

  • Einführung (0:00)
  • Hardware-Übersicht (0:30)
  • Verdrahtungsanweisungen (1:45)
  • Code-Durchgang (2:15)
  • Demonstration (3:00)
4-8x8 LED matrix using a MAX7219 Arduino module
Sprache: C++
/*
 * Dieses Video zeigt Ihnen, wie Sie das MAX7219-Modul mit einer 8x8-LED-Matrix verwenden, um Text oder beliebige Zeichen auf der LED anzuzeigen. 
 * Sehen Sie sich das YouTube-Video an: https://youtu.be/AAiDwBKs9uE
 * 
 * Verfasst von Ahmad Shamshiri für Robojax.com 
 * am 26. Februar 2017 in Ajax, Ontario, Kanada 
 * Holen Sie sich diesen Code und andere Arduino-Codes von Robojax.com 
 * Lernen Sie Arduino Schritt für Schritt in einem strukturierten Kurs mit allen Materialien, Verdrahtungsdiagrammen und Bibliotheken 
 * alles an einem Ort.
 * 
 * Erhalten Sie frühen Zugriff auf meine Videos über Patreon und lassen Sie Ihren Namen am Ende jedes 
 * Videos, das ich hier auf YouTube veröffentliche, erwähnen: http://robojax.com/L/?id=63 (sehen Sie bis zum Ende dieses Videos, um eine Liste meiner Unterstützer zu erhalten)
 * 
 * Oder machen Sie eine Spende über PayPal http://robojax.com/L/?id=64
 * 
 * Dieser Code ist "WIE BESEHEN" ohne Garantie oder Haftung. Frei zu benutzen, solange Sie diesen Hinweis unverändert lassen. 
 * Dieser Code wurde von Robojax.com heruntergeladen. 
 * Dieses Programm ist freie Software: Sie können es weiterverbreiten und/oder modifizieren 
 * unter den Bedingungen der GNU Allgemeine Öffentliche Lizenz, wie sie von 
 * der Free Software Foundation veröffentlicht wurde, entweder in Version 3 der Lizenz oder 
 * (nach Ihrer Wahl) in einer späteren Version.
 * 
 * Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, 
 * aber OHNE JEGLICHE GARANTIE; ohne sogar die implizite Garantie der 
 * MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die 
 * GNU Allgemeine Öffentliche Lizenz für weitere Details.
 * 
 * Sie sollten eine Kopie der GNU Allgemeinen Öffentlichen Lizenz 
 * zusammen mit diesem Programm erhalten haben. Wenn nicht, siehe <https://www.gnu.org/licenses/>.
 * /
 * 
 * // Wir müssen immer die Bibliothek einbinden 
 * // Basierend auf einem Projekt, das veröffentlicht wurde 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
Sprache: C++
/*
 * Dieses Video zeigt Ihnen, wie Sie das MAX7219-Modul mit einer 8x8-LED-Matrix verwenden, um Text oder beliebige Zeichen auf der LED anzuzeigen.  
 * Sehen Sie sich das YouTube-Video an: https://youtu.be/AAiDwBKs9uE  
 * 
 * Verfasst von Ahmad S. für Robojax.com  
 * am 26. Februar 2017 in Ajax, Ontario, Kanada  
 * Erlaubnis zur Weitergabe dieses Codes, sofern diese  
 * Notiz mit dem Code aufbewahrt wird.  
 * Haftungsausschluss: Dieser Code ist "AS IS" und nur zu Ausbildungszwecken.  
 * 
 * /  
 * 
 * // Wir müssen immer die Bibliothek einbinden  
 * // Basierend auf einem Projekt, das auf https://github.com/wayoda/LedControl veröffentlicht wurde
 */
#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 ///////



Dateien📁

Keine Dateien verfügbar.