Das 7-Segment Display

Lektion
Downloads

Soll es noch etwas mehr Retro sein? Dann ist das 7-Segment Display genau das richtige für dich. Dieses Display erinnert unwillkürlich an einen Countdown – der bereits vor Jahrzehnten ablief. Um dieses Display zu verwenden, musst du einige Kabel und Vorwiderstände anbringen, aber die Mühe lohnt sich.

7-Segment Display

Bevor du loslegst, lass uns zunächst klären, wie solch ein Display eigentlich funktioniert. Wie du leicht nachzählen kannst, ist das Display in sieben Segmente unterteilt, mit denen sich verschiedene Zahlen und Buchstaben darstellen lassen. Jedes Segment wird von einer eigenen LED beleuchtet, die je nach Bedarf entweder aus- oder angeschaltet wird.

Um genau zu sein, gibt es auf diesem Display sogar acht Segmente – das achte ist der Punkt unten rechts, der z.B. dazu dient, eine 6 von einer 9 zu unterscheiden – also zeigt wo unten ist.

___STEADY_PAYWALL___

So schließt Du das Display an

Um das 7-Segment Display anzuschließen, benötigst du insgesamt 8 Vorwiderstände à 220Ω und 9 Kabel. Orientiere dich beim Aufbau an folgender Skizze

7-Segment-Display am Arduino Kathode
Screenshot: Tinkercad

Ein wichtiger Hinweis: Es gibt Displays, die du (neben den Digitalpins) mit GND verbindest – so wie das auf der Skizze oben. Es gibt jedoch auch Displays, die mit 5V verbunden werden müssen. Welches Display du hast, findest du heraus, wenn du später den Sketch auf deinen Arduino lädst. Falls du dann nur Zeichensalat auf dem Display siehst, stecke die Verbindung um und ändere die betreffende Zeile Code im Sketch. Gleich mehr dazu.

Der passende Sketch

Die Verkabelung war ja schon recht kompliziert und die Steuerung des Displays wäre es auch – gäbe es nicht eine passende Bibliothek. Öffne also zunächst deinen Bibliotheksverwalter und suche dort nach SevSeg. Installiere dann die aktuelle Version.

Bibliothek SevSeg

Zu Beginn bindest du die Bibliothek wie gewohnt ein und erstellst das passende Objekt.

#include "SevSeg.h"
SevSeg sevseg;

In der Setup-Funktion folgen nun einige Definitionen. Z.B. stellst du ein, dass du ein Display mit nur einer Ziffer verwendest und legst die angeschlossenen Pins deines Arduinos fest.

byte numDigits = 1;
byte digitPins[] = {};

byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
bool resistorsOnSegments = true;

Außerdem legst du fest, ob es sich um ein Display handelt, das mit GND am Arduino (COMMON_CATHODE) oder mit 5V (COMMON_ANODE) verbunden wird. Je nachdem, welches Display du hast, kommentiere die nicht benötigte Zeile einfach aus. Zuletzt stellst du die Helligkeit ein – ein Wert von 100 ist hierbei ein guter Standard.

//sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments);

sevseg.setBrightness(100);

Im Loop erstellst du dir mit einem kleinen For-Loop einen Zähler, der jede Sekunde von Null beginnend eins hochzählt – bis er die 9 erreicht hat.

void loop() { 
   for(int i = 0; i < 10; i++)
   {
     sevseg.setNumber(i);
     sevseg.refreshDisplay(); 
     delay(1000);
   }
}

In den Downloads dieser Lektion findest du den gesamten Sketch. Lade ihn auf deinen Arduino und schaue, ob alles so funktioniert wie es soll.

Bleibt ein Segment dunkel? Dann prüfe zunächst den richtigen Anschluss und ersetze das Kabel und/oder den Widerstand. Oft liegt solch ein Fehler einfach nur an einem defekten Kabel oder Widerstand. Falls du nur Zeichensalat siehst, verbinde das Display mit 5V und ändere die entsprechende Zeile im Sketch.

In der nächsten Lektion baust du dir mit diesem Display einen kleinen Würfel.