Instructions
43
"bcfg", #4
"acdfg", #5
"acdefg", #6
"abc", #7
"abcdefg", #8
"abcdfg", #9
]
z = [0,0,0,0]
print("Strg+C beendet das Programm")
def za():
for i in range(4):
for s in "abcdefg":
GPIO.output(seg[s], 0)
GPIO.output(zif[i], 0)
for s in zahl[z[i]]:
GPIO.output(seg[s], 1)
if i == 1:
GPIO.output(dp, 1)
else:
GPIO.output(dp, 0)
time.sleep(0.001)
GPIO.output(zif[i], 1)
try:
while True:
zeit = time.localtime()
h = zeit.tm_hour
m = zeit.tm_min
z[0] = int(h / 10)
z[1] = h % 10
z[2] = int(m / 10)
z[3] = m % 10
while time.localtime().tm_min == m:
za()
except KeyboardInterrupt:
GPIO.cleanup()
So funktioniert es
Große Teile des Programms werden Ihnen bekannt vorkommen. Das meiste, was die Initialisierung der
GPIO-Ports und die Liste zur Darstellung der Ziffern auf den sieben Segmenten der Anzeige betrifft, wurde
aus früheren Programmen übernommen. Zur Darstellung des Dezimalpunkts zwischen der zweiten und
dritten Ziffer sind Ergänzungen nötig.
dp = 5
GPIO.setup(dp, GPIO.OUT, initial=0)
Nach der Definition der GPIO-Pins für Segmente und Ziffern wird der GPIO-Pin 5 für den Dezimalpunkt
eingerichtet. Da es sich wie bei den Segmenten um eine gemeinsame Anode für alle vier Ziffern handelt,
wird sie am Anfang auf 0 gesetzt, um die Dezimalpunkte auszuschalten.
Nachdem die Segmente einer Ziffer eingeschaltet werden, wird innerhalb der Funktion za(), wenn die
zweite Ziffer gerade leuchtet, der Dezimalpunkt mit dazugeschaltet.
if i == 1:
GPIO.output(dp, 1)
else:
GPIO.output(dp, 0)
Steht der Schleifenzähler auf 1 – die erste Ziffer hat die Nummer 0 –, wird der GPIO-Ausgang für den
Dezimalpunkt auf 1 gesetzt und damit eingeschaltet. Bei allen anderen Ziffern wird er auf 0 gesetzt und
damit ausgeschaltet.
Danach beginnt eine Endlosschleife, die die aktuelle Uhrzeit ermittelt und die Ziffern in die Liste z[]
schreibt, um sie mit der Funktion za() darzustellen.
Dezimalpunkt zur Trennung von Stunden
und Minuten










