LED-Matrix MAX7219 + ESP32 Tutorial

 


 

Einleitung

Du möchtest wissen, wie du die MAX7219 LED Matrix mit einem ESP32 Mikrocontroller ansteuerst und programmierst? In diesem Tutorial erhältst du eine Schritt-für-Schritt-Anleitung, um die beliebte LED Matrix zum Laufen zu bringen. Die Programmierung erfolgt dabei komfortabel in der Arduino IDE.
Wir zeigen dir von den erforderlichen Komponenten über den Schaltungsaufbau bis hin zur ausführlichen Code-Erklärung und der praktischen Anwendung alles, was du für dein Projekt benötigst. Am Ende dieses Artikels wird deine LED Matrix mit dem ESP32 kommunizieren und in der Lage sein, Texte, Zahlen und Muster anzuzeigen.

 

 

Verschaltung

Teile

1x ESP32
1x MAX7219
5x Verbindungskabel

Bibliotheken

ChipNorm_LED_Matrix.h

Code

 

 



 

Übersicht – LED Matrix + ESP32

Für dieses spannende Projekt, bei dem wir die MAX7219 LED Matrix mit dem ESP32 zum Laufen bringen, benötigst du nur wenige Komponenten. Die ESP32 ist ein leistungsstarker Mikrocontroller, der perfekt für solche Ansteuerungen geeignet ist. Die LED Matrix ist ideal, um dir zum Beispiel Lauftexte, Grafiken oder Messwerte wie die Temperatur anzuzeigen.
Hier ist die einfache Liste der benötigten Teile:
1x ESP32 (Mikrocontroller)
1x MAX7219 LED Matrix (Das Display, das wir ansteuern)
5x Verbindungskabel (Dupont-Kabel)

 



 

Pinout – LED Matrix MAX7219

Die MAX7219 LED Matrix benötigt nur fünf Pins zur Kommunikation mit unserem ESP32 Mikrocontroller. Die Ansteuerung erfolgt über das SPI-Protokoll, daher sehen wir die typischen Pins für die serielle Datenübertragung. Du findest einen VCC-Pin für die Stromversorgung und einen GND-Pin für die Masse, sowie die drei Steuerpins CLK, CS und DIN.
Hier ist eine kurze Übersicht über die einzelnen Pins:
VCC-Pin: Dies ist der Pin für die Spannungsversorgung
GND-Pin: Dies ist der Masse-Anschluss.
DIN-Pin: (Data-In) Über diesen Pin werden die seriellen Daten vom ESP32 zur LED Matrix gesendet.
CLK-Pin: (Clock) Dieser Pin liefert den Taktpuls für die Datenübertragung.
CS-Pin: (Chip Select / Load) Dieser Pin aktiviert den MAX7219 Chip für die Datenübertragung.

 



 

Hardware Aufbau / Verkabelung / Schaltungsaufbau

Der Schaltungsaufbau ist schnell erledigt. Wir benötigen fünf Verbindungen zwischen dem ESP32 Mikrocontroller und der MAX7219 LED Matrix. Die Pins der LED Matrix werden wie folgt mit den GPIO-Pins des ESP32 verbunden: Verbinde den CLK-Pin mit dem D18-Pin, den CS-Pin mit D15 und den DIN-Pin mit dem D23-Pin des ESP32. Schließe schließlich den GND-Pin an GND und den VCC-Pin an den 3,3V- oder 5V-Ausgang (je nach Modul) des ESP32 an, um die Stromversorgung sicherzustellen.

ESP32 D18 → LED Matrix CLK-Pin

ESP32 D15 → LED Matrix CS-Pin

ESP32 D23 → LED Matrix DIN-Pin

ESP32 GND → LED Matrix GND

ESP32 3,3V → LED Matrix VCC

Die korrekte und sorgfältige Verdrahtung ist von entscheidender Bedeutung, um sicherzustellen, dass der ESP32 Mikrocontroller die Signale der MAX7219 LED Matrix ordnungsgemäß ansteuern kann. Nachdem du diese Verbindungen erfolgreich hergestellt hast, bist du bereit, mit der Programmierung fortzufahren. Im nächsten Abschnitt werden wir ausführlich darauf eingehen, wie du die notwendige Bibliothek einbindest und den Code für die LED Matrix programmierst.

 

Software Programmierung

Sobald der erfolgreiche Hardware-Aufbau abgeschlossen ist, können wir uns der Programmierung des ESP32 zuwenden. In diesem Abschnitt werden wir ausführlich die essentiellen Schritte zur Codeerstellung behandeln und die Schlüsselfunktionen, die du zur Ansteuerung der MAX7219 LED Matrix verwenden wirst, im Detail erläutern.

 

Schritt 1: IDE Projekt
Öffne die Arduino-IDE und erstelle ein neues Projekt.
Um mit der Arduino-IDE zu arbeiten, öffnest du zunächst die Anwendung auf deinem Computer. Falls du die Arduino-IDE noch nicht installiert hast, findest du unter folgendem Link eine Anleitung hierzu: [Link zur Installationsanleitung einfügen].
Nachdem du die Arduino-IDE geöffnet hast, erstellst du ein neues Projekt, indem du auf „Datei“ klickst und anschließend auf „Neu“. Dadurch wird ein neues Sketch-Fenster geöffnet, in dem du deinen Code eingeben kannst.


// Hier kommt dein Code
void setup(){
  // Initialisierung
}

void loop(){
  // Schleife
}

 

Schritt 2: Bibliothek einbinden
Um die MAX7219 LED Matrix anzusteuern, ist es notwendig, eine geeignete Bibliothek in deine Arduino-IDE einzubinden. Gehe dazu in der Menüleiste auf „Sketch“ und wähle „Bibliothek einbinden“ aus. Klicke dann auf „Bibliotheken verwalten…“.
Wir benötigen die Bibliothek ChipNorm_LED_Matrix.h. Gib den Namen in das Suchfeld ein und installiere die Bibliothek. Nur so erhältst du die erforderlichen Funktionen, um die LED Matrix einfach und effizient anzusteuern und verschiedene Inhalte darauf auszugeben.


#include "ChipNorm_LED_Matrix.h"

 

Schritt 3: Initialisierung
Im ersten Teil des Codes, also vor dem void setup() Block, definieren wir die benötigten Pins und initialisieren das Objekt für unsere LED Matrix. Zuerst binden wir die Bibliothek ChipNorm_LED_Matrix.h ein. Anschließend werden die digitalen Pins (GPIOs) des ESP32 für die Kommunikation mit der LED Matrix festgelegt – in unserem Fall sind das DIN (23), CLK (18) und CS (15). Zuletzt erstellen wir ein Objekt der Klasse ChipNorm_LED_Matrix mit dem Namen matrix, dem wir die definierten Pins übergeben.


#define SPI_MOSI 23 // MOSI (DIN) mit D23 verbinden
#define SPI_CLK 18 // CLK mit D18 verbinden
#define SPI_CS 15 // CS mit  D15 verbinden

ChipNorm_LED_Matrix matrix(SPI_MOSI, SPI_CLK, SPI_CS); //Initialisiert die LED-Matrix

 

Schritt 4: Void Setup
Die void setup() Funktion wird nur einmal beim Start des ESP32 Mikrocontrollers ausgeführt. Hier konfigurieren wir die grundlegenden Einstellungen für die MAX7219 LED Matrix. Mit matrix.setBrightness(15) stellen wir die maximale Helligkeit (Wert zwischen 0 und 15) ein. Anschließend sorgen matrix.clear() und matrix.update() dafür, dass die LED Matrix initial leer ist, bevor wir mit der eigentlichen Programmlogik starten.


void setup() {
    matrix.setBrightness(15); //Helligkeit einstellt (zwischen 0 und 15)
    matrix.clear();  
    matrix.update();
}

 

Schritt 5: Loop Setup
Die void loop() Funktion läuft unendlich oft und enthält die Hauptlogik für die Anzeige auf der LED Matrix. In den Beispielen sehen wir verschiedene Möglichkeiten, die LED Matrix zu verwenden: von der einfachen Ausgabe einzelner Zeichen mit matrix.write() über manuelle Pixel-Ansteuerung mit matrix.write_manuell() bis hin zu beeindruckendem Text-Scrolling mit matrix.scroll_text(). Nach jedem Beispiel gibt es eine kurze Pause (delay()), damit du das Ergebnis sehen kannst, bevor das Display gelöscht wird (matrix.clear()) und der nächste Codeabschnitt startet.


void loop() {
    matrix.clear(); 

    // Beispiel 1: Einzelne Buchstaben / Zahlen / Zeichen
    matrix.write('A');
    delay(2000);
    matrix.clear();

    matrix.write('1');
    delay(2000);
    matrix.clear();

    // Beispiel 2: Manueller Modus: Rahmen zeichnen
    matrix.write_manuell(0, 0, 0b11111111);
    matrix.write_manuell(0, 1, 0b10000001);
    matrix.write_manuell(0, 2, 0b10000001);
    matrix.write_manuell(0, 3, 0b10000001);
    matrix.write_manuell(0, 4, 0b10000001);
    matrix.write_manuell(0, 5, 0b10000001);
    matrix.write_manuell(0, 6, 0b10000001);
    matrix.write_manuell(0, 7, 0b11111111);

    delay(2000);

    // Beispiel 3: Manuell den Inhalt nach links schieben
    for (int row = 0; row < 8; ++row) {
        matrix.moveLeft();
        matrix.update();
        delay(500);
    }

    matrix.clear();

    // Beispiel 4: Text Scrollen "CHIPNORM"
    const char* textToScroll = "C H I P N O R M";
    const int Anzahl_seg = 1;
    const int durchlauf = 2;

    matrix.scroll_text(textToScroll, Anzahl_seg, durchlauf);

    delay(3000);
}

 

Gesamter Code

Hier zeigen wir dir nochmal zur besseren Übersicht den gesamten Programmier-Code für die Ansteuerung der MAX7219 LED Matrix mit dem ESP32 Mikrocontroller auf. Dieser Code beinhaltet die Pin-Definitionen, die Initialisierung, die Konfiguration im setup() und die verschiedenen Anwendungsbeispiele in der loop()-Funktion.


#include "ChipNorm_LED_Matrix.h"

#define SPI_MOSI 23 // MOSI (DIN) mit D23 verbinden
#define SPI_CLK 18 // CLK mit D18 verbinden
#define SPI_CS 15 // CS mit D15 verbinden

ChipNorm_LED_Matrix matrix(SPI_MOSI, SPI_CLK, SPI_CS); //Initialisiert die LED-Matrix

void setup() {
    matrix.setBrightness(15); //Helligkeit einstellt
    matrix.clear();  
    matrix.update();
}

void loop() {
    matrix.clear(); 

    // Beispiel 1: Einzelne Buchstaben / Zahlen / Zeichen
    matrix.write('A');
    delay(2000);
    matrix.clear();

    matrix.write('1');
    delay(2000);
    matrix.clear();

    // Beispiel 2: Manueller Modus: Rahmen zeichnen
    matrix.write_manuell(0, 0, 0b11111111);
    matrix.write_manuell(0, 1, 0b10000001);
    matrix.write_manuell(0, 2, 0b10000001);
    matrix.write_manuell(0, 3, 0b10000001);
    matrix.write_manuell(0, 4, 0b10000001);
    matrix.write_manuell(0, 5, 0b10000001);
    matrix.write_manuell(0, 6, 0b10000001);
    matrix.write_manuell(0, 7, 0b11111111);

    delay(2000);

    // Beispiel 3: Inhalt nach links schieben
    for (int row = 0; row < 8; ++row) {
        matrix.moveLeft();
        matrix.update();
        delay(500);
    }

    matrix.clear();

    // Beispiel 4: Text scrollen
    const char* textToScroll = "C H I P N O R M";
    const int Anzahl_seg = 1;
    const int durchlauf = 2;

    matrix.scroll_text(textToScroll, Anzahl_seg, durchlauf);

    delay(3000);
}

 

Ausführung / Anwendung

Nachdem der Code nun in die Arduino-IDE eingegeben ist, muss dieser noch kompiliert und auf den ESP32 Mikrocontroller übertragen werden. Nur so beginnt deine MAX7219 LED Matrix mit der Ausgabe des programmierten Inhalts.
Hierzu gehst du wie folgt vor:
Schritt 1: Kompilieren
Klicke auf das Haken-Symbol (Überprüfen/Kompilieren) in der Arduino-IDE. Damit wird dein Code auf Fehler untersucht und in ein ausführbares Format umgewandelt.
Schritt 2: Hochladen
Klicke auf das Pfeil-Symbol (Hochladen). Der Code wird nun auf den über USB verbundenen ESP32 Mikrocontroller übertragen. Achte darauf, dass das korrekte Board und der richtige Port in der IDE ausgewählt sind.
Schritt 3: Ausführung
Sobald der Upload abgeschlossen ist, startet der ESP32 automatisch neu, und deine LED Matrix beginnt sofort damit, den programmierten Inhalt auszugeben (Buchstaben, Zahlen, Rahmen oder den gescrollten Text).

 

Weitere Themen


Mikrocontroller - ESP32 - ESP - Arduino - Programmierung - Code  - Software - Programm -  - OLED Display + ESP32 - LED-Matrix Punkt-Matrix Matrix

OLED Display + ESP32


Mikrocontroller - ESP32 - ESP - Arduino - Programmierung - Code  - Software - Programm -  - 4 Ziffern Display + ESP32 - LED-Matrix Punkt-Matrix Matrix

4 Ziffern Display + ESP32


Mikrocontroller - ESP32 - ESP - Arduino - Programmierung - Code  - Software - Programm -  - BME280 + ESP32 - LED-Matrix Punkt-Matrix Matrix

BME280 + ESP32