Alarmanlage

In diesem Kapitel geht es darum mit zwei digitalen Eingabe zu arbeiten. Ziel ist es eine Alarmanlage für ein Fenster bzw. eine Tür zu entwickel. Aber eins nach dem Anderen.

Baue zunächst die dargestellte Schaltung auf. Wenn du keinen Magnetkontaktschalter hast, kannst du auch einen zweiten Taster benutzen. Der Magnetkontaktschalter macht nämlich nichts anderes als ein Taster. Bringt man die Hälfte mit dem Magneten in die Nähe des Reedschalters (das ist der Teil mit den beiden Kabeln), so wird der Kontakt geschlossen.

Kopiere jetzt das folgende Programm in die Datei button2.py und speichere sie ab.

import board
import digitalio
from adafruit_debouncer import Debouncer

led_red   = digitalio.DigitalInOut(board.D10)
led_green = digitalio.DigitalInOut(board.D11)
led_blue  = digitalio.DigitalInOut(board.D12)
led_red.direction   = digitalio.Direction.OUTPUT
led_green.direction = digitalio.Direction.OUTPUT
led_blue.direction  = digitalio.Direction.OUTPUT

pin13 = digitalio.DigitalInOut(board.D13)
pin13.direction = digitalio.Direction.INPUT
pin13.pull = digitalio.Pull.UP
switch1 = Debouncer(pin13)

pin9 = digitalio.DigitalInOut(board.D9)
pin9.direction = digitalio.Direction.INPUT
pin9.pull = digitalio.Pull.UP
switch2 = Debouncer(pin9)

while True:
    switch1.update()
    switch2.update()

    if not switch1.value:
        led_red.value = True
    else:
        led_red.value = False

    if not switch2.value:
        led_green.value = True
    else:
        led_green.value = False

Der Programmablaufplan auf der rechten Seite verdeutlicht sehr schön die Funktion des Programms auf der linken Seite. Du erkennst, dass die jeweilige LED nur so lange leuchtet, wie der jeweilige Schalter geschlossen ist.

Dank der Debouncer-Klasse können Taster noch mehr

Wenn man einen Taster verwendet, erwartet man je nach Anwendung, dass sich etwas tut …

  • wenn man ihn runter drückt oder
  • wenn man ihn loslässt oder
  • so lange man ihn drückt.

Den letzten Fall kennst du schon - es ist der am einfachsten zu programmierende Fall. Im nächsten Beispiel soll die rote LED ihren Zustand ändern, wenn der Taster runter gedrückt wird und die grüne LED soll in dem Moment aufleuchten, wenn der Reedschalter geöffnet wird.

Verwende dazu die beiden Eigenschaften fell und rose, die jedes Debouncer-Objekt hat.

Betrachte das folgende Beispiel und vergleiche es mit dem PAP rechts.

while True:
    switch1.update()
    switch2.update()

    if switch1.fell:
        led_red.value = not led_red.value

    if switch2.rose:
        led_green.value = True
    else:
        led_green.value = False

Beachte, dass du mit dem Befehl led_red.value = not led_red.value den Zustand der LED toggeln kannst. Dadurch wechselt die LED ihren Zustand von an nach aus oder umgekehrt.

Jetzt bist du auf dich gestellt. Probiere den Programmablaufplan rechts in ein Programm umzusetzen.

Willst du überprüfen, ob die LED gerade leuchtet, benutze einfach

if led_red.value:

Das Programm soll eine Alarmanlage simulieren. Mit dem Taster wird sie scharf gestellt (die rote LED leuchtet). Mit dem gleichen Taster kann sie auch jederzeit wieder deaktiviert werden.

Nur wenn die rote LED leuchtet soll der Alarm (grüne LED) angehen falls der Reedkontaktschalter geöffnet wird.

Wenn die rote LED nicht an ist, soll die grüne LED aus sein.

Viel Spaß beim programmieren.

Kommentieren Kommentare