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"

/*
 * Jetzt brauchen wir eine LedControl, mit der wir arbeiten können. 
 * // Angepasst für RoboJax.com am 26. Februar 2017 in Ajax, Ontario, Kanada. 
 * **** Diese Pin-Nummern funktionieren wahrscheinlich nicht mit Ihrer Hardware *****
 *  Pin 12 ist mit DataIn verbunden 
 *  Pin 11 ist mit CLK verbunden 
 *  Pin 10 ist mit CS verbunden 
 *  Wir haben nur ein einziges MAX72XX.
 */
 LedControl lc=LedControl(12,11,10,1);

/*
 * Wir warten immer einen Moment zwischen den Updates des Displays */
 * unsigned long verzögerungszeit=600;
 * 
 * void einrichten() {
 *  /*
 *  Der MAX72XX ist beim Start im Energiesparmodus,
 *  wir müssen einen Weckruf durchführen
 */
   lc.shutdown(0,false);
/*
 * Setzen Sie die Helligkeit auf einen mittleren Wert */
 *  lc.setIntensity(0,8);
 *  /* und löschen Sie die Anzeige
 */
   lc.clearDisplay(0);
 }

/*
 * Diese Methode zeigt die Zeichen für das Wort "Arduino" nacheinander auf der Matrix an. (Sie benötigen mindestens 5x7 LEDs, um die gesamten Zeichen zu sehen.)
 */
 void writeArduinoOnMatrix() {
/*
 * hier sind die Daten für die Zeichen */
 * 
 * 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};
 * 
 * /* Buchstabe 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); // das ist für leer
   }
 // ////////////// ENDE des Briefes R ///////

/*
 * Buchstabe O */
 *  für (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 *  
 *  }
 *  
 *  verzögerung(delaytime);
 *  for(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// dies ist für leer
 *  } 
 *  //////////////// ENDE des Buchstabens O ///////
 *  
 *  
 *  /* Buchstabe 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); // das ist für leer
   }
 // ////////////// ENDE des Buchstabens B ///////

/*
 * Buchstabe O */
 *  für (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 *  
 *  }
 *  
 *  verzögerung(delaytime);
 *  für(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// dies ist für leer
 *  } 
 *  //////////////// ENDE von Buchstabe O ///////
 *  
 *  /* Buchstabe 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); // das ist für leer
   }
 // ////////////// ENDE des Buchstabens J ///////

/*
 * Brief A */
 *  für (int i=0; i<8; i++){
 *  lc.setRow(0,i,A[i]);
 *  
 *  }
 *  
 *  verzögerung(delaytime);
 *  for(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// dies ist für blanko
 *  } 
 *  //////////////// ENDE von Brief A ///////
 *  
 *  /* Brief 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); // das ist für leer
   }
 // ////////////// ENDE des Briefs 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"

/*
 * Jetzt benötigen wir ein LedControl-Objekt, um damit zu arbeiten. 
 *  // Anpassung für RoboJax.com am 26. Februar 2017 in Ajax, Ontario, Kanada. 
 * **** Diese Pin-Nummern funktionieren wahrscheinlich nicht mit Ihrer Hardware *****
 *  Pin 1 ist mit dem DataIn verbunden 
 *  Pin 4 ist mit dem CLK verbunden 
 *  Pin 53 ist mit CS verbunden 
 *  Wir haben nur einen einzigen MAX72XX.
 */
LedControl lc=LedControl(1,4,53,1); // Diese Zeile bestimmt, ob dieser Code mit Arduino Mega oder Arduino UNO funktionieren kann.

/*
 * Wir warten immer eine Weile zwischen den Aktualisierungen des Displays */
 * unsigned long delaytime=600;
 * 
 * void setup() {
 *  /*
 *  Der MAX72XX befindet sich beim Start im Energiesparmodus,
 *  wir müssen einen Weckruf durchführen
 */
  lc.shutdown(0,false);
/*
 * Stellen Sie die Helligkeit auf einen mittleren Wert ein */ 
 * lc.setIntensity(0,8); 
 * /* und löschen Sie das Display
 */
  lc.clearDisplay(0);
}

/*
 * Diese Methode zeigt die Zeichen für das Wort "Arduino" nacheinander auf der Matrix an. (Sie benötigen mindestens 5x7 LEDs, um die gesamten Zeichen zu sehen.)
 */
void writeArduinoOnMatrix() {
/*
 * hier sind die Daten für die Zeichen */
 * 
 *  // 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}; 
 * 
 *  /* Buchstabe 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); // das ist für leer
  }
 // ///////////// ENDE des Briefes R ///////

/*
 * Buchstabe O */
 *  für (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 * 
 *  }
 *  
 *  verzögere(delaytime);
 *  for(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// dies ist für leer
 *  } 
 * /////////////// ENDE des Buchstabens O ///////
 * 
 *  /* Buchstabe 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); // das ist für leer
  }
 // ///////////// ENDE des Buchstabens B ///////

/*
 * Brief O */
 *  für (int i=0; i<8; i++){
 *  lc.setRow(0,i,O[i]);
 * 
 *  }
 *  
 *  verzögerung(delaytime);
 *  for(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// dies ist für leer
 *  } 
 * /////////////// ENDE von Brief O ///////
 * 
 *  /* Brief 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); // das ist für leer
  }
 // ///////////// ENDE des Buchstabens J ///////

/*
 * Buchstabe A */
 *  für (int i=0; i<8; i++){
 *  lc.setRow(0,i,A[i]);
 * 
 *  }
 *  
 *  verzögere(delaytime);
 *  für(int i=0; i<8; i++){
 *  lc.setRow(0,i,0);// das ist für leer
 *  } 
 * /////////////// ENDE von Buchstabe A ///////
 * 
 *  /* Buchstabe 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); // das ist für leer
  }
 // ///////////// ENDE des Briefs X ///////



Dateien📁

Keine Dateien verfügbar.