Instructions

29
zif=[16, 12, 7, 6]
for z in zif:
GPIO.setup(z, GPIO.OUT, initial=1)
zahl=[
"abcdef", #0
"bc", #1
"abdeg", #2
"abcdg", #3
"bcfg", #4
"acdfg", #5
"acdefg", #6
"abc", #7
"abcdefg", #8
"abcdfg", #9
]
print("Strg+C beendet das Programm")
try:
while True:
for i in range(4):
for s in "abcdefg":
GPIO.output(seg[s], 0)
GPIO.output(zif[i], 0)
for s in zahl[i+1]:
GPIO.output(seg[s], 1)
time.sleep(0.001)
GPIO.output(zif[i], 1)
except KeyboardInterrupt:
GPIO.cleanup()
So funktioniert es
Die Initialisierung der GPIO-Ports, die Listenvariablen für die LEDs und die Darstellung der Zahlen wur-
den aus dem letzten Experiment übernommen. Die Hauptschleife, die die Zahlen anzeigt, ist neu.
for i in range(4):
Innerhalb der Endlosschleife läuft eine weitere Schleife viermal durch, um schnell nacheinander die vier
Ziffern darzustellen.
for s in "abcdefg":
GPIO.output(seg[s], 0)
Eine Schleife setzt die Anoden aller sieben Segmente auf 0, schaltet sie also aus. In diesem Moment sind
alle LEDs aus.
GPIO.output(zif[i], 0)
Die Kathode der aktuellen Ziffer wird auf 0 gesetzt, damit diese Ziffer danach die entsprechende Zahl
anzeigen kann.
for s in zahl[i+1]:
GPIO.output(seg[s], 1)
Die nächste Schleife schaltet alle Segmente der anzuzeigenden Zahl auf 1 und damit ein. Diese Zahl ist um
eins höher als der Schleifenzähler, der von 0 bis 3 zählt. Es sollen die Ziffern 1 bis 4 angezeigt werden.
time.sleep(0.001)
Diese Zeile lässt das Programm 1Millisekunde warten. Genauso lange leuchten die LEDs einer Ziffer
wirklich, bevor zur nächsten Ziffer gewechselt wird. Experimentieren Sie mit unterschiedlichen Warte-
zeiten, um den Zeitmultiplex so einzustellen, dass die Anzeige möglichst wenig flackert, aber auch nicht
verschwimmt.
GPIO.output(zif[i], 1)
Am Ende der Schleife wird die Kathode der aktuellen Ziffer auf 1 gesetzt und damit ausgeschaltet. Im
nächsten Schleifendurchlauf wird die nächste Ziffer angezeigt.