AnzeigeArduinoDIY
Foto des Autors

0

Arduino 8×8 LED Matrix steuern – Anfängerleitfaden mit MAX7219

7 Min. Lesezeit

Du willst eine 8×8 LED-Matrix mit Arduino steuern und Muster, Texte oder einfache Grafiken anzeigen? Perfekt – mit dem MAX7219-Treiber brauchst du dafĂĽr nur drei Verbindungen zum Arduino und eine einfache Bibliothek. In diesem Leitfaden zeigen wir dir, wie du eine Single-Matrix anschlieĂźt, programmierst und später sogar mehrere Module hintereinander schaltest.

1. Was ist eine 8×8 LED-Matrix?

Eine 8×8 LED-Matrix enthält 64 LEDs (Light Emitting Diodes), die in Form einer Matrix angeordnet sind – also 8 Reihen und 8 Spalten. Die 8×8 LED-Matrix-Anzeigen werden ĂĽblicherweise fĂĽr die Anzeige von Symbolen, einfachen Grafiken und Texten verwendet. Das Besondere: Du brauchst nicht alle 64 LEDs einzeln an den Arduino zu stecken. Der MAX7219-Treiber macht die Arbeit fĂĽr dich.

2. Die Rolle des MAX7219-Chips

MAX7219 ist ein kleiner Serial-Input/Output-Chip für Mikroprozessoren und Common-Cathode-LED-Anzeigen, mit BCD-Decoder, Scan-Controller, Word- und Bit-Treiber und 8×8-Speicher. Im Klartext: Der IC kann 64 einzelne LEDs mit nur 3 Drähten zum Arduino steuern, und man kann mehrere Treiber und Matrizen hintereinanderschalten und trotzdem die gleichen 3 Drähte verwenden.

3. Hardware-Anschluss

Die Verdrahtung ist sehr einfach. Du benötigst das Matrix-Modul mit MAX7219 und ein paar Jumper-Kabel zu deinem Arduino Uno.

3.1 Komponenten

Folgende Teile brauchst du fĂĽr ein Single-Matrix-Projekt:

  • 1x Arduino Uno (oder Nano, Mega – alle funktionieren)
  • 1x 8×8 LED-Matrix mit integriertem MAX7219-Modul
  • 4x Jumper-Kabel (male-to-male oder female-to-male, je nach Anschlusstyp)
  • Externe 5V-Stromversorgung (optional, aber fĂĽr mehrere Matrizen empfohlen)
  • USB-Kabel zum Arduino und PC

3.2 Schritt-fĂĽr-Schritt Verdrahtung

Du brauchst nur 5 Pins vom Matrix-Modul zum Arduino anzuschlieĂźen, und der MAX7219-Chip macht es einfacher, das Matrix-Modul zu steuern, indem nur 3 digitale Pins des Arduino-Boards verwendet werden. Verbinde folgende Pins:

  • VCC (Power) → Arduino 5V
  • GND (Ground) → Arduino GND
  • DIN (Data In) → Arduino Digital Pin 11
  • CLK (Clock) → Arduino Digital Pin 13
  • CS/LOAD → Arduino Digital Pin 10

Hinweis: Die MAX7219-Module mit 256 LEDs benötigen viel Strom – der Arduino und die meisten Laptop-USB-Ports können das nicht liefern. Eine externe 5V-Stromquelle mit mindestens 1A ist nötig. Der positive Anschluss geht zu VCC des MAX7219-Moduls, der negative (GND) zu GND des Moduls.

4. Software-Installation: Die LedControl-Bibliothek

Du kannst die LedControl-Bibliothek zu der Arduino IDE hinzufĂĽgen, um die 8Ă—8 LED-Matrix mit MAX7219 via SPI zu steuern. LedControl ist eine Bibliothek fĂĽr die MAX7219 und MAX7221 LED-Display-Treiber.

4.1 Installation im Arduino IDE

Folge diesen Schritten, um die Bibliothek zu installieren:

  • Ă–ffne Arduino IDE
  • Gehe zu Sketch → Bibliothek einbinden → Bibliotheken verwalten
  • Suche nach „LedControl“ (von Evilynux)
  • Klicke auf Installieren

Fertig! Die Bibliothek ist jetzt verfĂĽgbar.

4.2 Erste Beispiel-Programmierung

Hier ist ein einfaches Programm, das die Matrix aufwärmt und die LEDs einzeln aufblinken lässt:

#include <LedControl.h>

// DIN = Pin 11, CLK = Pin 13, CS = Pin 10
LedControl lc = LedControl(11, 13, 10, 1);  // 1 = eine Matrix

void setup() {
  // Matrix aufwecken (ist standardmäßig im Sparmodus)
  lc.shutdown(0, false);
  
  // Helligkeit auf mittleres Niveau (0-15)
  lc.setIntensity(0, 8);
  
  // Matrix löschen
  lc.clearDisplay(0);
}

void loop() {
  // Alle LEDs nacheinander aufblinken
  for (int row = 0; row < 8; row++) {
    for (int col = 0; col < 8; col++) {
      lc.setLed(0, row, col, true);  // LED einschalten
      delay(100);
      lc.setLed(0, row, col, false); // LED ausschalten
    }
  }
}

5. Muster und Symbole anzeigen

Statt einzelne LEDs zu kontrollieren, kannst du auch ganze Reihen oder vordefinierte Byte-Muster anzeigen. Das ist schneller und sauberer.

5.1 Reihen mit Byte-Mustern setzen

Mit setRow() kannst du 8 LEDs einer Reihe auf einmal steuern – jedes Bit im Byte steht für eine LED:

#include <LedControl.h>

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

void setup() {
  lc.shutdown(0, false);
  lc.setIntensity(0, 8);
  lc.clearDisplay(0);
}

void loop() {
  // Ein lächelndes Gesicht anzeigen
  byte smile[8] = {
    B00111100,  // Reihe 0
    B01000010,  // Reihe 1
    B10100101,  // Reihe 2
    B10000001,  // Reihe 3
    B10100101,  // Reihe 4
    B10011001,  // Reihe 5
    B01000010,  // Reihe 6
    B00111100   // Reihe 7
  };

  // Alle 8 Reihen setzen
  for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, smile[i]);
  }

  delay(2000);  // 2 Sekunden halten

  // Ein trauriges Gesicht
  byte sad[8] = {
    B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10011001,
    B10100101,
    B01000010,
    B00111100
  };

  for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, sad[i]);
  }

  delay(2000);
}

5.2 Byte-Muster verstehen

Das B00111100-Format heiĂźt „Binary Literal“. Jedes 0 oder 1 steht fĂĽr eine LED: 1 = an, 0 = aus. Zum Beispiel:

  • B11111111 = alle 8 LEDs der Reihe leuchten
  • B10000001 = nur erste und letzte LED leuchten
  • B00000000 = keine LED leuchtet

6. Text und Laufschrift mit MD_Parola

FĂĽr fortgeschrittene Effekte wie Laufschrift oder automatisch generierte Zeichen gibt es die MD_Parola-Bibliothek. Sie baut auf MAX7219 auf und macht Scroll-Effekte sehr einfach.

6.1 MD_Parola installieren

Die erste Bibliothek ist „MD_MAX72xx“, installierbar via Sketch-MenĂĽ → Include Library → Manage Libraries. In der Library Manager nach „MD_MAX72xx“ suchen und die Bibliothek von MajicDesigns installieren. Die zweite ist „MD_Parola“, ebenfalls ĂĽber den Arduino IDE Library Manager, suche nach „MD_Parola“ und installiere die Bibliothek von MajicDesigns.

6.2 Einfache Laufschrift

Hier ein Beispiel, das Text von rechts nach links ĂĽber die Matrix scrollt:

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

// Hardware-Typ: FC16_HW fĂĽr Standard-8Ă—32-Module
#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW
#define MAX_DEVICES 1  // 1 = single 8x8 matrix
#define CS_PIN 10

MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

void setup() {
  myDisplay.begin();
  myDisplay.setIntensity(8);  // Helligkeit 0-15
  myDisplay.displayClear();
}

void loop() {
  myDisplay.setTextAlignment(PA_CENTER);
  myDisplay.print("HALLO!");
  delay(2000);
  
  myDisplay.displayClear();
  delay(500);
}

Mit MD_Parola in Kombination mit der MD_MAX72XX Arduino-Bibliothek wird die Anzeige von scrollendem Text und anderen Animationen super einfach.

7. Mehrere Matrizen hintereinander schalten

Wenn man mehr als ein Modul anschließen möchte, verbindet man die Output-Pins des vorherigen Breakout-Boards mit den Input-Pins des neuen Moduls. Die Pins sind alle gleich, außer dass der DOUT-Pin des vorherigen Boards zum DIN-Pin des neuen Boards geht. Die Stromversorgung und der CLK-Pin gehen zu allen Modulen parallel.

Im Code brauchst du nur eine kleine Änderung:

// FĂĽr 4 hintereinandergeschaltete Matrizen:
LedControl lc = LedControl(11, 13, 10, 4);  // 4. Parameter = Anzahl Module

// Dann kannst du auf alle Matrizen zugreifen:
lc.setRow(0, 0, B11110000);  // Matrix 0
lc.setRow(1, 0, B00001111);  // Matrix 1
lc.setRow(2, 0, B10101010);  // Matrix 2
lc.setRow(3, 0, B01010101);  // Matrix 3

8. Häufige Anfängerfehler

Hier sind ein paar Dinge, auf die du achten solltest:

  • Nicht genug Strom: Wenn alle LEDs eines 8Ă—8-Matrix-Displays gleichzeitig leuchten, kann der Strombedarf mehrere 100 mA pro Display betragen. Bei mehreren Displays kannst du leicht die Limits des Arduinos ĂĽberschreiten. Nicht mehr als 500 mA solltest du einem Arduino UNO bzw. deinem USB-Anschluss zumuten.
  • Falsche Pin-Verbindungen: ĂśberprĂĽfe dreimal, dass DIN, CLK und CS mit den richtigen Arduino-Pins verbunden sind.
  • Modul nicht aufgeweckt: Vergiss nicht, lc.shutdown(0, false) im Setup aufzurufen – sonst bleibt das Display dunkel.
  • Falsche Byte-Reihenfolge: Wenn das Muster spiegelverkehrt oder gedreht aussieht, versuche, die Bits umzukehren oder die Reihenfolge zu ändern.

9. Nächste Schritte und Projekte

Du hast jetzt die Grundlagen! Hier sind ein paar Ideen zum Ausprobieren:

  • Digitale Uhr: Verwende RTC-Module und zeige Stunden und Minuten an.
  • Temperatur-Anzeige: Verbinde einen Temperatursensor und zeige Werte live an.
  • Musik-Visualizer: Lese Audio-Daten aus und lass LEDs pulsieren.
  • Game-Projekt: Baue ein einfaches Pong- oder Snake-Spiel auf der Matrix.

10. Häufig gestellte Fragen

10.1 Kann ich die Matrix an andere Arduino-Pins anschlieĂźen?

Ja! Die Pin-Nummern im Code sind frei wählbar. Wenn du DIN an Pin 12, CLK an Pin 9 und CS an Pin 8 anschließt, ändere einfach: LedControl lc = LedControl(12, 9, 8, 1);

10.2 Wie helle ich die Matrix auf oder ab?

Mit lc.setIntensity(0, value), wobei value zwischen 0 (dunkel) und 15 (super hell) liegt. Beispiel: lc.setIntensity(0, 15); macht die Matrix maximum hell.

10.3 Warum funktioniert die Scroll-Bibliothek MD_Parola nicht?

Es gibt verschiedene Hardware-Typen wie PAROLA_HW, GENERIC_HW, ICSTATION_HW und FC_16_HW. Wenn die Schrift falsch scrollt, probiere einen anderen HARDWARE_TYPE im Code. Alle haben unterschiedliche Orientierungen der 8×8-LED-Matrix. Versuche, PAROLA_HW durch GENERIC_HW zu ersetzen.

10.4 Kann ich mehrere verschiedene Symbole hintereinander zeigen?

Ja, klar! Speichere mehrere Byte-Arrays (wie das smile/sad-Beispiel oben) und wechsle zwischen ihnen in einer Schleife oder mit if-Bedingungen.

Schreibe einen Kommentar