Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Raspberry Pi und Grove Base HAT

Taster und LED

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

  • mit einem RasPi und Grove Base HAT umzugehen.
  • was ein Taster ist und wie er beschaltet wird.
  • was ein Pull-up und ein Pull-down Widerstand ist.
  • einen einfachen Schaltplan zu lesen.
  • eine Schaltung mit einer oder mehreren LEDs und einem oder mehreren Tastern nach Schaltplan aufzubauen und nach eigenen Vorgaben zu programmieren.
  • Programmierfehler in der Sprache Python zu erkennen und zu beheben.

Übung 1 - Ein-/ Ausschalten einer LED (MO)

Übung 1 - Ein-/ Ausschalten einer LED

Aufgaben

  • Baue die Schaltung auf einem Steckbrett auf. Modul Grove LED wird mit D5, Modul Grove Taster mit D16 verbunden.
  • Lade das Programm taster_led1.py in den Thonny Editor und speichere es ab.
  • Starte das Programm und überprüfe die Wirkung.

Material

  • 1x Basisausstattung Grove
  • 1x Grove LED
  • 1x Grove Taster
  • 2x Verbindungskabel

Schaltungsaufbau

 

 

 

Abb. 1

Das Modul Grove LED ist mit D5, das Modul Grove Taster mit D16 auf dem Grove Base HAT verbunden.

Test des Grove Button

Durch Eingabe von

  • grove_button 16

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.

 

 

 

 

 

 

 

Abb. 2

Mit grove_button werden alle GPIO Ports, die das Modul unterstützen, in einer Liste ausgegeben. Ist ein Grove Button mit Port D16 verbunden, dann überprüft grove_button 16 die Funktion des Tasters.

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.

 

 

 

 

Abb. 3

Links ist die Verdrahtung mit dem Grove-Stecker gezeigt; rechts das allgemeine Schaltbild zum Modul. Der vierte Pin (Kabel weiß) ist nicht belegt. Vcc ist über T1 direkt mit dem Signaleingang verbunden, wenn T1 gedrückt wird.

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

 

 

 

 

 

 

 

Abb. 4

Programm zero_LED_button1.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.

 

  • Class gpiozero.Button(pin, pull_up = True(Voreinstellung))

 

Ist ein Taster direkt mit GND und einem GPIO-Pin verbunden, muss der Parameter

  • pull_up auf True (Voreinstellung)

gesetzt sein.

Ist ein Taster direkt mit 3,3 V und einem GPIO-Pin verbunden, muss der Parameter

  • pull_up auf False

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.

 

 

 

 

 

 

Abb. 5

Programm zero_LED_button2.py. In der Befehlszeile 5 wurde der Parameter "False" eingefügt. 

Statt mit einer IF … ELSE – Schleife zu arbeiten, kann auch der Befehl

  • wait_for_press(timeout)

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

  • Variante 1
  • Wird in einem Hausflur, der sich über drei Etagen erstreckt, auf einer Etage ein Taster gedrückt, dann soll auf dieser Etage die Beleuchtung angehen und für 5s eingeschaltet bleiben.
  • Übertrage das Programm zero_taster_etage.py in den Thonny Editor und speichere das Programm ab.
  • Starte das Programm und überprüfe seine Funktionen.
  • Versuche jede Zeile des Programmcodes zu verstehen. Beschreibe mit eigenen Worten, was in jeder Zeile passiert.
     
  • Variante 2
  • Wird auf einer der drei Etagen der Taster gedrückt, dann soll auf allen Etagen die Beleuchtung angehen und für 5s eingeschaltet bleiben.
  • Entwickle dazu ein Programm zero_LED_buttonHaus_alle_Etagen.py und speichere das fertige Programm ab.
  • Überprüfe, ob es die Vorgabe erfüllt, Licht in allen drei Etagen anzuschalten.
     

Die Grove LEDs werden verbunden mit D5, D18, D22, die Grove Button mit D16, D24 und D26.

 

Material

 

  • 1x  Basisausstattung Grove
  • 3x  Modul Grove LED
  • 3x  Modul Grove Button
  • 6x  Verbindungskabel

 

Das Programm zero_taster_etage.py

Wie arbeitet das Programm zero_LED_buttonHaus_etage.py ?

  • Programmzeilen 1 und 2

Die Module time mit dem Element sleep und gpiozero mit den Elementen Button und LED werden geladen.

  • Programmzeilen 4 und 5

Die Listen taster und etagenleuchten werden angelegt.

  • Programmzeile 7

Die Endlosschleife while True: umfasst das eigentliche Hauptprogramm.

  • Programmzeilen 8 und 9

Nacheinander werden die Taster, die in der Liste taster hinterlegt sind darauf abgefragt, ob einer von ihnen gedrückt wurde.

  • Programmzeilen 10 – 13

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.

 

 

 

 

 

 

 

 

 

Abb. 6

Die längste Elektrode wird je nach RGB-LED-Typ an GND oder +3,3V angeschlossen. Dies muss durch Probieren herausgefunden werden.

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

  • Class gpiozero.RGBLED(red, green, blue, active_high=True, initial_value=(0,0,0), pwm=True, pin_factory=None)

genutzt. Die Bedeutung der Parameter im Einzelnen

  • red (int oder str)  Der GPIO Pin, der die rote Komponente der RGB LED steuert.
  • green (int oder str) Der GPIO Pin, der die grüne Komponente der RGB LED steuert.
  • blue (int oder str) Der GPIO Pin, der die blaue Komponente der RGB LED steuert.
  • active_high (bool)  Voreinstellung True, bei RGB LEDs mit gemeinsamer Kathode. Bei gemeinsamer Anode muss dieser Wert auf False gesetzt werden.
  • initial_value (color oder tuple)  Voreinstellung: (0,0,0) oder schwarz; bestimmt die Startfarbe der RGB LED.
  • pwm (bool)  Voreinstellung: True; erzeugt für jede Farb-LED von RGBLED pwm-Instanzen. Wenn False, werden LED Instanzen erzeugt, die gleitende Farbübergänge verhindern.

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

  • 1x  Basisausstattung Steckbrett (RasPi 3.0 + Grove Base HAT + Netzteil + Wifi-Modul)
  • 1x  Steckbrett
  • 1x  RGB-LED (4 Elektroden)
  • 3x  Widerstand, 470 Ohm
  • 4x  Verbindungs-Steckdraht (male-female)

Aufgaben

  • Baue die Schaltung nach Schaltskizze auf einem Steckbrett auf und verbinde sie mit den entsprechenden GPIO-Pins auf dem Grove Base HAT.
  • Lade das Programm zero_RGBLED1.py in den Thonny Editor und speichere es ab.
  • Starte das Programm und überprüfe seine Wirkung.

Schaltungsaufbau

 

 

 

 

 

 

Abb. 7

Drei Elektroden der RGB-LED sind über einen Vorwiderstand von je 470 Ohm mit GPIO10 (Pin 19), GPIO9 (Pin 21) und GPIO11 (Pin 23) verbunden. Im hier vorliegenden Fall handelt es sich um eine RGB-LED mit gemeinsamer Kathode. Das rote Kabel ist mit GND (Pin 25) verbunden.

Das Programm zero_RGBLED1.py

Weiter geht´s mit dem Kapitel Servo ansteuern.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf