Vierstellige 7-Segment-Anzeige am Arduino

FunduinoZuletzt aktualisiert am

Vier Ziffern per Multiplexing ansteuern – mit der SevSeg-Bibliothek

Aufgabe: Lass eine beliebige Zahl auf der vierstelligen 7-Segment-Anzeige erscheinen.

Das Display hat auf der Rückseite zwölf Kontakte, sechs oben und sechs unten. Vier davon gehören jeweils zu einer Ziffer – entweder in der Bauart Common Cathode oder Common Anode. Welche du hast, findest du später einfach mit dem Code heraus. Die anderen acht Kontakte gehören zu je einem Segment und zum Punkt neben einer Ziffer.

Bei Displays mit einer oder zwei Ziffern steuerst du die Segmente jeder Ziffer einzeln an. Bei vier Ziffern gäbe das ein noch größeres Kabeldurcheinander – deshalb arbeiten diese Displays mit Multiplexing: Sollen alle vier Ziffern gleichzeitig leuchten, werden sie zügig nacheinander angesteuert. Das geschieht so schnell, dass dein Auge sie als gleichzeitig wahrnimmt.

Vierstellige 7-Segment-Anzeige für Arduino
Vierstellige 7-Segment-Anzeige
Rückseite der 7-Segment-Anzeige mit beschrifteten Kontakten
Die zwölf Kontakte auf der Rückseite
1 / 2

Der Schaltplan

Schaltplan der 7-Segment-Anzeige mit vier Widerständen
Schaltplan: 7-Segment-Anzeige am Arduino UNO R3
Foto des Aufbaus mit 7-Segment-Anzeige am Arduino
Der fertige Aufbau auf dem Steckbrett
1 / 2

Die Bibliothek einbinden

Damit der Code nicht endlos lang wird, brauchst du eine Bibliothek, die noch nicht in der Arduino-Software steckt: die SevSeg-Bibliothek von Dean Reading.

SevSeg-Bibliothek auf GitHub herunterladen

Füge sie danach zur Arduino-Software hinzu. Am leichtesten geht das über Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen.

Der Programmcode

In der SevSeg-Bibliothek stecken weitere interessante Beispielcodes. Du findest sie in der Arduino-Software unter Datei → Beispiele → SevSeg-master.

Weißt du nicht, welche Art Display du hast, probiere beide Angaben aus: COMMON_CATHODE und COMMON_ANODE. Bei der falschen leuchten alle Segmente gleichzeitig.

Eine Zahl anzeigen
#include "SevSeg.h" // Die vorher hinzugefügte Bibliothek laden
SevSeg sevseg; // Ein Sieben-Segment-Objekt initialisieren
void setup()
{
  byte numDigits = 4; // Anzahl der Ziffern
  byte digitPins[] = {2, 3, 4, 5}; // Pins zu den Ziffern
  byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // Pins zu den Segmenten
  // Hier gibst du an, ob dein Display COMMON_CATHODE oder COMMON_ANODE ist.
  // Es funktioniert nur mit der richtigen Angabe – sonst leuchten alle Segmente gleichzeitig.
  sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins);
}
void loop()
{
  // Hier trägst du die gewünschte Zahl ein, im Beispiel 1234.
  // Die Zahl dahinter steht für den Punkt hinter einer Ziffer: 3 ist der Punkt
  // neben der ersten Ziffer, 0 der ganz rechts. Willst du keinen Punkt, gib z. B. 4 an.
  sevseg.setNumber(1234, 3);
  // Diese Zeile lässt die Zahl auf dem Display erscheinen.
  sevseg.refreshDisplay();
  // Helligkeit von 0 bis 100, 100 ist am hellsten. 0 bedeutet nicht völlig dunkel.
  sevseg.setBrightness(90);
}
Anleitung bewerten

Kommentare

Frage stellen oder Erfahrung teilen

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Wir prüfen jeden Kommentar vor der Veröffentlichung. Deine E-Mail-Adresse bleibt bei uns.