i

Ausgabe über die GPIO

Wir wollen in diesem Abschnitt versuchen, eine LED, die an den RasPi angeschlossen ist, zum Leuchten zu bringen. Gesteuert wird das Ganze dann über ein Python-Programm.

Kurze LED-Kunde

Bei der LED ist wichtig, dass man die Kathode(-) und die Anode(+) unterscheiden kann. Das ist relativ leicht, wenn man folgendes weiß:
Die Seite der LED, auf der die Kathode ist, hat das kürzere "Beinchen". Auf dieser Seite ist auch das LED-Gehäuse abgeflacht und im Gegenlicht erkennst du ein "Fähnchen" innerhalb der LED.

LED mit Kathode und Anode[1]

Die Kathode muss an den Minus-Pol, also an die Erdung (GND) angeschlossen werden. Die Anode muss an den Plus-Pol angeschlossen werden. Vertauschst du die Anschlüsse der LED, kann folgendes passieren: Wenn du Glück hast, leuchtet sie einfach nicht. Wenn du Pech hast und die Spannung zu hoch war, ist sie zerstört.

Erster Schritt: Die LED zum Leuchten bringen

Zunächst wollen wir versuchen, die LED einfach nur zum Leuchten zu bringen. Dazu benötigst du neben der LED noch einen 330Ω-Widerstand.

Schematische Darstellung von RasPi und Steckbrett
  1. Zunächst verbindest du wieder einen Erdungs-Pins (hier z.B. Pin 9) mit der zweiten Lochleiste.
  2. Nun verbindest du wieder den Pin 1 mit der äußeren vertikalen Lochleiste.
  3. Nutze den Widerstand, um eine Zeile mit dem Minus-Pol zu verbinden.
  4. Setze die LED in zwei verschiedene Zeilen - die Kathode dabei in die gleiche Zeile wie den Widerstand.
  5. Nun verbindest du noch die Anode der LED mit dem Plus-Pol.

Klicke auf die einzelnen Schritte zur Veranschaulichung.

Jetzt sollte die LED dauerhaft leuchten.

Zweiter Schritt: Die LED über den RasPi an- und ausschalten

Nun nehmen wir an unserer Schaltung nur eine kleine Änderung vor: Die Anode wird nicht mehr mit dem dauerhaften Plus-Pol verbunden, sondern mit Pin 15, dessen Ausgangswert wir steuern können.

Schaltbild[2]
Jetzt müssen wir dem RasPi mitteilen, dass der Pin 15, also die GPIO-Schnittstelle 22, mit dem Ausgangssignal "True" versehen wird. Das erledigen wir über ein Python-Programm. Wichtig ist, dass du dein Programm als superuser ausführst. In einer shell gibst du also ein:

sudo idle

Dein Python-Programm könnte dann wie folgt aussehen:

    import RPi.GPIO as GPIO  ## Importieren der GPIO Bibliothek 	
	GPIO.setmode(GPIO.BOARD) ## Verwende die Nummerierung der Pins 
	GPIO.setup(15, GPIO.OUT) ## Setze GPIO Pin 15 auf Ausgangssignal	
	GPIO.output(15,True)     ## Setze GPIO Pin 15 auf "True"

Führe nun dein Python-Programm aus. Die LED sollte leuchten.

Hinweis: Alternativ kannst du in der zweiten Zeile folgendes schreiben:

GPIO.setmode(GPIO.BCM)

Hiermit teilst du dem System mit, dass du dich auf die Nummerierung der Pins nach dem "Broadcom SOC channel" beziehst. Das heißt, du müsstest bei der Verwendung des gleichen Pins in der dritten und vierten Zeile statt der 15 die 22 verwenden. Wir werden im Folgenden, so wie im Quelltext oben, die "BOARD"-Nummerierung verwenden.

Immer schön aufräumen

So wie im Quelltext oben sollte man es eigentlich nicht machen. Man kann das Programm nur mit Strg+C beenden und danach ist aber die GPIO in einem nicht definierten Zustand. Es ist sinnvoll, am Ende jedes Programms abschließend wieder aufzuräumen, in dem man folgende Methode aufruft:

GPIO.cleanup() 

Wenn du darauf verzichtest und startest das obige Programm ein weiteres Mal, dann kommt es in der Regel zu einer Fehlermeldung. Der folgende Quellcode sollte also die Grundlage für die weiteren Übungen sein:

    import RPi.GPIO as GPIO  ## Importieren der GPIO Bibliothek 	
	GPIO.setmode(GPIO.BOARD) ## Verwende die Nummerierung der Pins 
	GPIO.setup(15, GPIO.OUT) ## Setze GPIO Pin 15 auf Ausgangssignal	
	try:                             ## Ausnahmebehandlung
		while True:                  ## Endlosschleife bis Strg+C
			GPIO.output(15,True)     ## Setze GPIO Pin 15 auf "True"
	finally:                         ## Dieser Block wird auf jeden Fall ausgeführt
		GPIO.cleanup()               ## Immer schön hinter dir aufräumen!

Übungen

Aufgabe 1

Lasse nun die LED blinken. Die folgenden Code-Schnipsel sollten dir dabei helfen:

  • from time import sleep
  • sleep(0.2)
  • GPIO.output(15,False)

Aufgabe 2

Ergänze deine Schaltung um zwei weitere LEDs, die an anderen Pins angschlossen sind und simuliere eine Verkehrsampel.

Aufgabe 3 (für Experten)

Frage den Benutzer nach einer Nachricht und "sende" diese Nachricht als Morse-Code über die LED.

Quellen

Suche

v
13.3.3.3
www.inf-schule.de/informatiksysteme/raspi/grundlagen/led
www.inf-schule.de/13.3.3.3
www.inf-schule.de/@/page/vWUW77CR9H3ImIVy

Rückmeldung geben