Inhaltsverzeichnis
Für dieses Projekt benötigst du
Vierstellige 7 Segment Anzeige mit einem Arduino ansteuern
Wir wollen eine beliebige Zahl auf dem vierstelligen 7 Segment Display anzeigen lassen.
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 zügig hintereinander angesteuert. Dies geschieht so schnell, dass es für das menschliche Auge aussieht, als würden alle vier Ziffern gleichzeitig angezeigt werden.
Der Schaltplan
Foto vom Aufbau
Hinweise zum Programmcode
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. 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
Der Programmcode
#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 Beispielcodes vorhanden.
Diese können in der Arduino Software unter: Datei > Beispiele > SevSeg-master
aufgerufen werden.
Funduino - Dein Onlineshop für Mikroelektronik
-
Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
-
Mehr als 3.500 Artikel sofort verfügbar!
-
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.