← Alle Beiträge Blogbeitrag

MAX7219 7-Segment-Anzeige mit Arduino verwenden

Viktoria Builds

Ein MAX7219 8-stelliges 7-Segment-Display-Modul mit Arduino verbinden und in wenigen Minuten Zahlen und Buchstaben mit der LedControl-Bibliothek anzeigen.

Auf YouTube ansehen

Der MAX7219 ist ein Chip, der bis zu 8 siebenstellige Segmentanzeigen über ein einfaches 3-Draht-SPI-Interface ansteuert. Man bekommt ein fertig bestücktes Modul — den Chip, das Display, Entkopplungskondensatoren, alles auf einer Platine. Es ist eines der einfacheren Displays für Arduino, weil die Bibliothek das gesamte Multiplexing übernimmt.

Das Modul hat insgesamt 10 Pins, fünf auf jeder Seite. Eine Seite ist der Eingang, die andere der Ausgang zum Verketten mehrerer Module. Man braucht nur die Eingangsseite: VCC, GND, DIN, LOAD und CLK.

Bauteile

  • Arduino (Uno, Nano oder ähnliches)
  • MAX7219 8-stelliges 7-Segment-Display-Modul
  • Jumperkabel

Verdrahtung

Die Eingangsseite des Moduls wird wie folgt mit dem Arduino verbunden:

  • VCC → 5V
  • GND → GND
  • DIN → Pin 12
  • CLK → Pin 11
  • LOAD → Pin 10

Die Verdrahtung ist unkompliziert. Das Modul läuft auf 5V und die SPI-Leitungen gehen direkt an die digitalen Arduino-Pins.

Bibliothek

Die Bibliothek LedControl aus dem Arduino Library Manager installieren. Nach "LedControl" suchen und die Version von Eberhard Fahle installieren. Keine weiteren Abhängigkeiten nötig.

Sketch

Ein LedControl-Objekt mit den drei Pin-Nummern und der Anzahl der verketteten Module initialisieren. Dann aufwecken, Helligkeit einstellen (0–15) und Display löschen. Um eine Ziffer anzuzeigen, setDigit verwenden — Geräteindex, Position von rechts ab null, Ziffernwert und ob der Dezimalpunkt angezeigt werden soll. Für Buchstaben setChar verwenden. Nicht alle Zeichen sind auf einer 7-Segment-Anzeige möglich, aber H, E, L, P und einige andere funktionieren.

#include "LedControl.h"

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

unsigned long delaytime = 500;

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

void goofy() {
  lc.setChar(0, 7, 'H', false);
  lc.setChar(0, 6, 'E', false);
  lc.setChar(0, 5, 'L', false);
  lc.setChar(0, 4, 'P', false);
  lc.setChar(0, 3, '.', false);
  lc.setChar(0, 2, '.', false);
  lc.setChar(0, 1, '.', false);
  lc.setChar(0, 0, '.', false);
  delay(delaytime + 1000);
  lc.clearDisplay(0);
  delay(delaytime * 3);
}

void loop() {
  goofy();
}

Module verketten

Die DOUT-Seite ist zum Verketten gedacht. DOUT des ersten Moduls mit DIN des zweiten verbinden, die Modulanzahl im LedControl-Konstruktor erhöhen und jedes Modul über seinen Index ansprechen. Mehrere Module lassen sich an denselben drei Arduino-Pins betreiben.

Ergebnis

Den Sketch hochladen und es funktioniert sofort. Die Ziffern leuchten auf, der Dezimalpunkt ist pro Stelle steuerbar und die Helligkeit lässt sich einfach im Code anpassen. Den vollständigen Sketch gibt es auf meinem GitHub und verlinkt auf meiner Website. Wer damit etwas baut — eine Uhr, einen Zähler, egal was — kann es im Discord teilen.

Hat dir dieses Tutorial gefallen?

Unterstütze den Kanal auf Patreon und erhalte frühen Zugang zu Projekten, Build-Logs und mehr.

Auf Patreon unterstützen →