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

Taster und Schalter

In diesem Kapitel beschäftigen wir uns mit Tastern und Schaltern und wie man sie unter Python3 anspricht. Dazu benutzen wir eine Bibliotheksdatei pigpio, die das Lesen und Schreiben von GPIOS unterstützt; dabei werden die Pins des Raspi über die Broadcom-Bezeichner angesprochen.

Vorbereitung des Raspberry Pi

Über PyPi wird die Programmbibliothek pigpio mit

  • pip install pigpio

installiert. Ist das erfolgt, wird im Konsolefenster mit

  • sudo pigpiod

der pigpio-Dämon gestartet.

Welche Befehle stellt die Bibliotheksdatei pigpio.py bereit?

Die Datei pigpio.py befindet sich nach erfolgreicher Installation im Verzeichnis

  • /usr/lib/python3/dist-packages/

Öffne die Datei und hole dir dort alle Informationen, die du benötigst, um ein erstes Programm zu schreiben. Ein Pythonprogramm muss am Anfang immer die Bibliothek pigpio importieren und eine oder mehrere Instanzen der Klasse pigpio.pi erzeugen.

Mit

  • pi = pigpio.pi()

lassen sich dann über pi alle lokalen GPIOs ansprechen.

  • pi.write(2,0)

setzt den lokalen GPIO 2 auf LOW, während

  • pi.write(2,1)

GPIO 3 ihn auf HIGH zieht.

Mit

  • pi.read(18)

wird der Zustand des GPIO18 ausgelesen und kann mit einem Vergleichsoperator ausgewertet werden.

  • set_pull_up_down(GPIO, pigpio.PUD_OFF/PUD_UP/PUD_DOWN)

setzt bzw. löscht den zugehörigen GPIO pull-up/-down Widerstand (GPIO:= 0..53). Dieser kleine Auszug soll reichen, um ein erstes Programm für Übung 1 zu schreiben.

Übung 1 - Taster schaltet LED ein/aus

Übung 1 - Taster schaltet LED ein/aus
Material
  • 1x Raspberry Pi3, anschlussfertig
  • 1x Steckbrett
  • 1x Taster
  • 1x LED, rot
  • 1x Widerstand, 220 Ohm
  • 4x Steckdraht
Aufgaben
  • Baue die Schaltung nach Schaltskizze auf einem Steckbrett auf.
  • Übertrage das Programm ra_taster_led.py in den Editor und speichere es ab.
  • Starte das Programm und überprüfe, ob die LED angeht, solange die Taste gedrückt bleibt.
  • Erweiterte Aufgabe: Sobald der Taster gedrückt wird, soll die LED anfangen im Sekundentakt zu blinken.

Schaltskizze und Schaltungsaufbau

 

 

 

 

 

 

 

 

Abb. 1 - Die rote LED wird an GPIO3 (Pin 3)  angeschlossen. Sobald der Taster gedrückt wird, wird der Ausgang GPIO3 auf HIGH gezogen und die LED geht an. Um die Leuchtstärke der LED zu erhöhen, kann der Vorwiderstand auf 220 Ohm zurückgesetzt werden.

Taster T1 ist an GPIO18 (Pin12) angeschlossen. In der Zeichnung ist nicht der Pullup-Widerstand eingezeichnet, der softwaremäßig hinzugeschaltet wird. Wird die Programmzeile "pi.set_pull_up_down ..." im Programm vergessen, kann dies zur Zerstörung des RaPi führen.

Das Programm ra_taster_led.py

Wie arbeitet das Programm ra_taster_led.py?

In der Endlosschleife

  • WHILE … IF … ELSE …

wird überprüft, ob an GPIO18 der Pegel auf HIGH steht oder anders gesagt, ob der Taster nicht gedrückt ist. Ist das der Fall, wird der Pegel am Ausgang GPIO2 auf LOW gesetzt und eine kleine Pause eingelegt.

Ist der Pegel an GPIO18 auf LOW, der Taster also gedrückt, wird im ELSE-Zweig der Entscheidungsbefehls der Ausgang GPIO2 auf HIGH gesetzt. Die LED geht an.

Übung 2 - LED blinkt bei gedrücktem Taster

Mit dem Schaltungsaufbau aus Übung 1 lässt sich auch eine Schaltung programmieren, die eine LED blinken lässt, solange der Taster gedrückt wird. Das nachfolgende Python-Programm zeigt eine mögliche Lösung.

Das Programm ra_taster_blinker.py

Übung 3 - Umschalter

Bei gleichem Schaltungsaufbau wie in Übung 1 lässt sich eine Schaltung programmieren, die eine LED bei jedem Tastendruck umschaltet. Leuchtet die LED am Anfang nicht, dann wird mit dem ersten Tastendruck die LED eingeschaltet; ein zweiter Tastendruck schaltet sie wieder aus. Eine Softwarelösung zeigt das folgende Programm.

Das Programm ra_taster_umschalter.py

Wie arbeitet das Programm taster_blinker.py?

Nach der Instantierung der pigpio-Klasse und dem Einschalten des eingebauten Pull-Up-Widerstandes wird die LED ausgeschaltet. Neu ist in der Endlosschleife WHILE(True), die Funktion

  • wait_for_edge(GPIO, Edge)

GPIO kann alle Werte von 0 ... 31 annehmen

Edge kann RISING_EDGE, FALLING_EDGE oder EITHER_EDGE sein.

Bei jedem Tastendruck liegt eine fallende Flanke vor (GPIO18 wird auf LOW gezogen). Liegt an GPIO2 ein LOW-Pegel an, wird dieser auf HIGH geändert und die LED fängt an zu leuchten. Ist das nicht der Fall, wird GPIO2 auf LOW gezogen.

Übung 4 - Zeitschalter

In dieser Übung soll die LED erst dann anfangen zu leuchten, wenn der Taster ca. 5s gedrückt wird.

Das Programm ra_zeitschalter_led.py

Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf