Nr.11 – 7 Segment Anzeige

Vierstellige 7 Segment Anzeige mit Arduino ansteuern

7segment-produktfoto

Aufgabe: Wir wollen eine beliebige Zahl auf dem vierstelligen 7 Segment Display anzeigen lassen.

Material: Arduino/ Kabel/ 4 Stelliges 7-Segment Display /1K Ohm Widerstände

Das 7-Segment Display besitzt insgesamt 12 Kontakte auf der Rückseite, sechs oben und sechs unten. Vier dieser Kontakte gehören jeweils zu einer Ziffer. Diese können entweder von der Sorte „Common Cathode“ oder „Common Anode“ sein. Welche Art von Display man hat kann man mit dem Code einfach austesten, aber dazu später mehr. Die anderen acht Kontakte gehören jeweils zu einem Segment und zu dem Punkt neben einer Ziffer.

Bei 7-Segment Displays mit nur einer oder zwei Ziffern werden die Segmente jeder Ziffer einzeln angesteuert. Da das bei vier Ziffern aber ein noch größeres Kabeldurcheinander wäre als es schon ist, funktionieren diese Displays mit „Multiplexing“. Das bedeutet wenn beispielsweise alle vier Ziffern gleichzeitig angesteuert werden sollen, werden diese extrem schnell hintereinander angesteuert. Dies geschieht so schnell, dass es für das menschliche Auge aussieht als würden alle vier Ziffern gleichzeitig angezeigt werden.

Anschauliche Erklärung der Kontakte:

unbenannt

Skizze der Verkabelung:

7segment

Foto vom Aufbau:

aufbau-foto

 

Programmierung:

Um ein 7-Segment Display ohne endlos langen Code zu programmieren benötigt man eine Library, die noch nicht in der Arduino Software installiert ist. Diese „SevenSeg“ Library von Dean Reading kann hier heruntergeladen werden:https://github.com/DeanIsMe/SevSeg . Die Library muss dann, wie schon aus vorherigen Anleitungen bekannt, zu Arduino Software hinzugefügt werden.

Dies geht am leichtesten in der Arduino Software unter: Sketch > Include Library > Add .ZIP Library..

Kommen wir zum Code:

#include "SevSeg.h" //Die vorher hinzugefügte Library laden
SevSeg sevseg; //Ein sieben Segment Objekt initialisieren

void setup() 
{
byte numDigits = 4; //Hier wird die Anzahl der Ziffern angegeben
byte digitPins[] = {2, 3, 4, 5}; //Die Pins zu den Ziffern werden festgelegt
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; //Die Pins zu den //Segmenten werden festgelegt
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins); //In diesem
//Abschnitt kann man nun entweder testen welche Art von Display man besitzt oder
//wenn man es schon weiß angeben ob es sich um ein COMMON_CATHODE oder
//COMMON_ANODE Display handelt. Das Display funktioniert nur wenn die richtige
//Art eingetragen ist, ansonsten werden alle Segmente gleichzeitig leuchten.

}

void loop() 
{
sevseg.setNumber(1234,3); //Hier können wir nun die gewünschte Zahl eintragen.
//Wir haben als Beispiel 1234 angegeben. Die Zahl hinter dem Komma steht für den
//Punkt hinter einer Ziffer. Hierbei ist 3 der Punkt neben der ersten Ziffer und
//0 wäre der Punkt ganz rechts neben der letzten Ziffer. Wenn man keinen Punkt
//mit angezeigt haben möcht kann man z.B. 4 angeben.
sevseg.refreshDisplay(); // Dieser Teil lässt die Nummer auf dem Display
//erscheinen.
sevseg.setBrightness(90); //Hier kann die Helligkeit des Displays angepasst
//werden. In einem Bereich von 0-100 wobei 100 das Hellste ist. 0 bedeutet
//jedoch nicht dass das Display komplett dunkel ist. Für die Anzeige einer Zahl
//ist allein die "sevseg.refreshDisplay();" Zeile verantwortlich
}

In der sevseg library sind zudem noch interessante Beispiel Codes vorhanden.

Diese können in der Arduino Software unter: Datei > Beispiele > SevSeg-master

aufgerufen werden.