Instructions
17
Die folgende Tabelle zeigt, welche Pins der Sieben-Segment-Anzeige mit welchen
GPIO-Pins verbunden sind. Die grau hinterlegten Pins werden in diesem Programm
nicht verwendet.
In diesem Programm werden nur die drei waagerechten Segmente A, G und D über
Vorwiderstände an GPIO-Pins angeschlossen. Die Ziffer 1 ist mit GND verbunden,
damit die Segmente der ersten Ziffer blinken.
Das Programm
Das Programm 04seg7.py lässt die drei LEDs der waagerechten Segmente A, G und
D abwechselnd nacheinander blinken.
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
seg=[21, 13, 26]
for s in range(3):
GPIO.setup(seg[s], GPIO.OUT, initial=0)
print("Strg+C beendet das Programm")
try:
while True:
for i in range(3):
GPIO.output(seg[i], 1)
time.sleep(0.2)
GPIO.output(seg[i], 0)
except KeyboardInterrupt:
GPIO.cleanup()
So funktioniert es
Die ersten Zeilen sind bereits bekannt, sie importieren
die Bibliotheken RPi.GPIO für die Ansteuerung der GPIO-Ports und time für Zeitverzögerungen. Danach
wird die Nummerierung der GPIO-Ports wie im vorherigen Beispiel auf BCM gesetzt.
seg=[21, 13, 26]
Zur Ansteuerung der drei LEDs wird eine Liste eingerichtet, die die GPIO-Nummern der verwendeten Pins
enthält.
for s in range(3):
GPIO.setup(seg[s], GPIO.OUT, initial=0)
Nacheinander werden die drei verwendeten GPIO-Ports als Ausgänge initialisiert und ausgeschaltet.
Dabei verwenden wir diesmal keine GPIO-Portnummern, sondern die zuvor definierte Liste. Innerhalb
einer Liste werden die einzelnen Elemente über Zahlen, mit 0 beginnend, indiziert. seg[0] ist also das
erste Element, in diesem Fall 21. Der Parameter range() in der for-Schleife gibt an, wie oft die Schleife
durchlaufen wird. Genauer gesagt, bezeichnet er den ersten Wert, der nicht mehr erreicht wird.
Jede for-Schleife benötigt einen Schleifenzähler, eine Variable, die bei jedem Schleifendurchlauf einen
neuen Wert annimmt. Dieser Wert kann wie jede andere Variable innerhalb der Schleife abgefragt wer-
den. In den drei Schleifendurchläufen nimmt die Variable s die Werte 0, 1 und 2 an und initialisiert so
die drei Elemente der Liste. Für das endlose Blinken verwenden wir wie im letzten Programm ein try:
... except-Konstrukt mit einer Endlosschleife, die über die Tastenkombination [Strg]+[C] abgebrochen
wird.
while True:
for i in range(3):
GPIO.output(seg[i], 1)
time.sleep(0.2)
GPIO.output(seg[i], 0)
Innerhalb der Endlosschleife läuft eine weitere Schleife dreimal und schaltet in jedem Durchlauf eines
der Segmente ein, wartet 0,2 Sekunden und schaltet es wieder aus. Danach kommt das nächste Segment
aus der Liste an die Reihe.
Sieben-Segment-Anzeige mit Anschlussnummern auf dem Steckbrett
Pin Sieben-Segment-Anzeige Steckbrett Segment / Ziffer GPIO-Pin
1 5 F-J E -
2 6 F-J D 26
3 7 F-J DP -
4 8 F-J C -
5 9 F-J G 13
6 10 F-J 4 -
7 10 A-E B -
8 9 A-E 3 -
9 8 A-E 2 -
10 7 A-E F -
11 6 A-E A 21
12 5 A-E 1 GND










