Instructions
47
def blink():
for s in "abcdefg":
GPIO.output(seg[s], 0)
for k in range(3):
GPIO.output(zif[k], 0)
GPIO.output(dp, 1)
time.sleep(0.5)
GPIO.output(dp, 0)
Zusätzlich wird eine Funktion blink() definiert, die die drei Dezimalpunkte der verwendeten Ziffern 0,5
Sekunden lang aufblinken lässt. Dazu werden zunächst alle sieben Segmente auf 0 gesetzt und damit
ausgeschaltet. Danach werden die Kathoden der ersten drei Ziffern auf 0 und der Dezimalpunkt auf 1
gesetzt.
Jetzt leuchten die drei Dezimalpunkte. Nach einer Wartezeit von 0,5 Sekunden wird der GPIO-Pin des
Dezimalpunkts wieder auf 0 gesetzt, und damit werden die LEDs wieder ausgeschaltet. Das Hauptpro-
gramm besteht wieder aus einer Endlosschleife, die zyklisch die vier Zahlenblöcke der IP-Adresse anzeigt.
for j in ip:
Dazu läuft eine Schleife über die vier Elemente der Liste ip[], in denen diese Zahlenblöcke gespeichert sind.
for k in range(3):
In jedem Block läuft eine innere Schleife dreimal, um jeweils drei Ziffern darzustellen. Diese werden in
den drei Elementen der Liste z[] abgelegt, die die Funktion za() später ausliest.
z[k] = int(j.zll(3)[k])
Diese Zeile schreibt in jedem Durchlauf in das aktuelle Element der Liste z[] den Zahlenwert einer Ziffer.
Dieser wird mit der Funktion int() aus einer als Zeichen gespeicherten Ziffer gelesen.
Aus der äußeren Schleife übernimmt der Zähler j einen Zahlenblock der IP-Adresse. Die Methode
zll(), die in jeder Zeichenkette zur Verfügung steht, und bereits in einem früheren Programm verwen-
det wurde, ergänzt eine Zeichenkette auf eine bestimmte Länge, die im Parameter (hier 3) angegeben
ist, wobei die Originalzeichenkette im Ergebnis rechts steht. Links werden eventuell fehlende Stellen mit
Nullen aufgefüllt. Auf diese Weise werden in der Liste z[] immer drei Ziffern abgelegt, auch wenn ein
Zahlenblock der IP-Adresse nur aus einer oder zwei Ziffern besteht.
So werden aus dem weiter oben als Beispiel verwendeten Feld ip[]
('192', '168', '2', '124')
in vier Durchläufen jeweils diese Felder z[]:
(1, 9, 2)
(1, 6, 8)
(0, 0, 2)
(1, 2, 4)
Die Funktion za() liest später das Feld z[] aus und stellt die drei Ziffern auf der Sieben-Segment-Anzeige
dar. Eine while-Schleife lässt 1 Sekunde lang immer wieder die Funktion za() zur Zahlenanzeige laufen
und beendet danach die Hauptschleife.
sek = time.time()
while time.time() <= sek + 1:
za()
In der Variablen sek wird die aktuelle Zeit in Sekunden gespeichert, die die Funktion time.time() jeder-
zeit auf die Hundertstelsekunde genau ausgibt. Die while-Schleife fragt ab, ob seit dem Speichern der
Zeit eine oder mehr Sekunden vergangen sind. Solange dies nicht der Fall ist, wird immer wieder die
Funktion za() zur Zahlenanzeige aufgerufen. Nach Ablauf der Sekunde startet die äußere Schleife erneut
mit dem nächsten Zahlenblock der IP-Adresse.
Nachdem diese Schleife viermal durchgelaufen ist, wird die Funktion blink() aufgerufen, die die Dezi-
malpunkte einmal kurz aufblinken lässt, um das Ende der IP-Adresse anzuzeigen. Danach startet die
Endlosschleife erneut. Das Ganze wiederholt sich, bis der Benutzer mit [Strg]+[C] abbricht. Dieses Pro-
gramm kann ähnlich wie das Programm mit der Uhr vom 16. Tag beim Start des Rasp berry Pi automatisch
gestartet werden, um die IP-Adresse anzuzeigen, auch wenn kein Bildschirm angeschlossen ist.










