Taster und Schalter finden sich in unserem täglichen Umfeld an vielen Geräten des täglichen Gebrauchs; sehr bekannt dürfte der Taster am Wecker sein, wenn der seinen lauten Weckruf ertönen lässt oder der Taster an der elektronischen Eieruhr. Beispiele gibt es sehr viele.
In diesem Kapitel beschäftigen wir uns damit, wie der RasPi erkennt, ob ein Taster gedrückt wurde oder nicht. Dazu benutzen wir zusätzlich eine LED, die angehen soll, sobald der Taster gedrückt wird und nach dem Loslassen des Tasters wieder ausgeht.
Didaktisch methodische Einordnung
In dieser Lektion lernst du
Übung 1 - Ein-/ Ausschalten einer LED | |
Aufgaben |
|
Material |
|
Schaltungsaufbau
Test des Grove Button
Durch Eingabe von
im Terminalfenster werden die Funktionen des Tasters vor Schaltungseinbau kurz überprüft. Ein Druck auf die Taste führt zu Textausgabe, dass der Taster gedrückt wurde. Die Zeit zwischen Drücken des Tasters und wieder loslassen wird ebenfalls ausgegeben.
Physikalischer Aufbau des Moduls Grove Button
Vorab sollte das Wissen über Pull-up und Pull-down Widerstand noch einmal aufgefrischt werden. Das passiert in der Kurzinformation.
Das Modul ist recht einfach aufgebaut und besteht nur aus Taster und einem 10 kOhm Pull-down Widerstand.
Solange Taster T1 nicht gedrückt wird, erkennt Eingang Dx einen LOW Pegel. Mit Drücken des Tasters liegt HIGH an Dx.
Das Programm taster_led1.py
Was ist falsch gelaufen?
Nach dem Start des Programms leuchtet die LED permanent auf und erlischt bei Tastendruck. Die Wirkung ist umgekehrt zum Geforderten
.
Ursache ist die Klasse gpiozero.Button; zu ihr gehören u.a. die Parameter pin und pull_up, mit dem sich das gezeigte Problem beheben lässt.
Ist ein Taster direkt mit GND und einem GPIO-Pin verbunden, muss der Parameter
gesetzt sein.
Ist ein Taster direkt mit 3,3 V und einem GPIO-Pin verbunden, muss der Parameter
gesetzt werden.
Ändert man Programmzeile 5 im Programm zero_LED_button1.py durch Hinzufügen des Parameters pull_up = False ab, dann tut die Schaltung anschließend das Geforderte.
Statt mit einer IF … ELSE – Schleife zu arbeiten, kann auch der Befehl
genommen werden. Die Variable timeout legt fest, wie lange auf eine Eingabe in Sekunden gewartet werden soll. Steht dort None, wird beliebig lange gewartet.
Übung 2 – Hausbeleuchtung auf 3 Etagen (MO)
Übung 2 - Hausbeleuchtung auf 3 Etagen (MO) | |
Aufgaben |
Die Grove LEDs werden verbunden mit D5, D18, D22, die Grove Button mit D16, D24 und D26.
|
Material |
|
Das Programm zero_taster_etage.py
Wie arbeitet das Programm zero_LED_buttonHaus_etage.py ?
Die Module time mit dem Element sleep und gpiozero mit den Elementen Button und LED werden geladen.
Die Listen taster und etagenleuchten werden angelegt.
Die Endlosschleife while True: umfasst das eigentliche Hauptprogramm.
Nacheinander werden die Taster, die in der Liste taster hinterlegt sind darauf abgefragt, ob einer von ihnen gedrückt wurde.
Wenn ein Taster gedrückt wurde, wird der Index des Tasters aus der Liste taster ausgelesen und an die Variable wahl übergeben. Anschließend wird aus der Liste etagenleuchten die LED mit der gleichen Indexzahl wie der Taster für 5s ein- und anschließend ausgeschaltet.
Eine mögliche Lösung für Variante 2
Bei Variante 2 werden nach einem Tastendruck auf einen der drei Taster alle drei LEDs gleichzeitig eingeschaltet und nach ca. 5 Sekunden wieder ausgeschaltet. Das folgende Programm stellt eine mögliche Lösung vor. Versuche selbst - Zeile für Zeile - den Programmcode zu verstehen.
Übung 3 – Eine RGB-LED ansteuern (MO)
Mit Hilfe von RGB-LEDs lassen sich sehr viele Farben durch entsprechende Ansteuerung der Elektroden einstellen. Sie verfügen im Allgemeinen über vier, aber auch über sechs Anschlüsse. Die Anordnung der LED mit vier Elektroden zeigt die folgende Abbildung.
Auf dem Markt gibt es aber auch RGB-LEDs mit sechs Elektroden. Verbaut sind in dem glasähnlichen Körper vier Dioden (rot, grün, 2x blau). Blaue Dioden haben eine deutlich höhere Flussspannung (3V … 4V) als die roten (1,6V … 2,2V) oder grünen (1,9V ... 2,5V). Für eine bessere Farbmischung werden deshalb zwei blaue Dioden eingebaut.
Zur Ansteuerung einer vierpoligen RGB-LED wird in gpiozero die Klasse
genutzt. Die Bedeutung der Parameter im Einzelnen
Neben der Spannungsversorgung werden zur Ansteuerung drei weitere Pins benötigt, die über einen 4-Pin Grove-Anschluss nicht bereitgestellt werden können. Das man das Grove Base HAT statt mit Grove-Modulen auch mit einem Steckbrett über die GPIO-Leiste benutzen kann, zeigen wir hier.
Übung 3 - Eine RGB-LED ansteuern | |
Material |
|
Aufgaben |
|
Schaltungsaufbau
Das Programm zero_RGBLED1.py
Weiter geht´s mit dem Kapitel Servo ansteuern.