Programme planen

In diesem Kapitel lernst du ein großartiges Tool zum planen deiner Programme kennen - den Programmablaufplan. Bevor wir aber zur Theorie kommen, solltest du dir einen Taster schnappen und diese Schaltung aufbauen.

Schaltung mit Taster und LED

Der Code rechts unterscheidet sich bei genauem Betrachten nur an wenigen Stellen vom Code auf der vorherigen Seite.

Du hast die Stelle sicher schon ausgemacht.

Du wirst außerdem schon bemerkt haben, dass sich der Code immer gleich Gliedert. Am Anfang kommen irgendwelche Import-Anweisungen. Dann folgen ein paar Deklarationen und schließlich die Endlosschleife mit den entscheidenden Anweisungen, was getan werden soll.

import board
import digitalio
from adafruit_debouncer import Debouncer

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

while True:
    switch1.update()
    if switch1.fell:
        print('Just pressed')
    if switch1.rose:
        print('Just released')
    if switch1.value:
        print('not pressed')
    else:
        print('pressed')

imports

Der Start des Codes wird durch einen Rechteckigen Block mit abgerundeten Ecken angezeigt. Die drei Import-Anweisungen werden in einem Programmablaufplan (kurz PAP) als einfach Rechtecke dargestellt.
So weit so gut. Der Einfachheit werden wir ab sofort aber alle Import-Anweisungen in einen Block packen. Das sieht dann ab sofort immer so aus.

Im zweiten Teil werden alle Objekte erzeugt, die man benötigt um zum Beispiel auf die Hardware zugreifen zu können. Für einen einfachen Button sind das vier Schritte. Der letzte Schritt ist im Grunde nur eine Unterstützung. Man kann im Grunde auf ihn verzichten. Wozu du das Debauncer-Objekt brauchst, erfährst du im nächsten Kapitel.

Auch hier können wir den PAP vereinfachen indem man das alles zu einem Block zusammenfasst.

Der spannendste Teile ist der dritte. Wenn du den PAP mit dem Code vergleichst, siehst du schnell welcher Block welcher Zeile zugeordnet ist.

Merke dir unbedingt, dass du mit switch.value nicht abfrägst, ob der Taster gedrückt ist, sondern das Gegenteil.

Du kannst eine Bedingung übgrigens auch umkehren indem du das Keyword not vor eine Bedingen stellst. Der folgende Code tut das Gleiche, wie der obige:

if not switch1.value:
    print('pressed')
else:
    print('not pressed')

Überlege dir, wie man den PAP anpassen müsste.

Kommentieren Kommentare