8Programmablaufpläne
Du wirst schon bemerkt haben, dass sich jedes Programm bisher stets gleich gliedert. Am Anfang kommen die Import-Anweisungen. Dann folgen einige Deklarationen, in denen Objekte erzeugt und an Variablen zugewiesen werden und schließlich die Endlosschleife mit teils verschachtelten Anweisungen und Kontrollstrukturen.
Der Start des Codes wird durch einen rechteckigen Block mit abgerundeten Ecken angezeigt. Alle Import-Anweisungen können in einem Programmablaufplan (kurz PAP) als Rechteck dargestellt werden. In den meisten Fällen lässt man diesen Block aber ganz weg!
Im zweiten Teil werden benötigte Objekte, die man benötigt (z.B. von der Klasse DigitalInOut
) erzeugt (man sagt dazu Instanziieren). Dazu werden neue Variablen (z.B. led_red
) angelegt (man sagt dazu Deklarieren) und die Objekte werden an diese Variablen gebunden (man sagt dazu Initialisieren).
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.
led_blue = digitalio.DigitalInOut(board.D12)
led_blue.direction = digitalio.Direction.OUTPUT
button = digitalio.DigitalInOut(board.D13)
button.switch_to_input(pull=digitalio.Pull.DOWN)
Aber auch diese Blöcke können weggelassen werden, da es in einem Programmablaufplan um den Hauptteil des Programms geht!
Jetzt kommt der spannende Teile. Wenn du den PAP mit dem Code vergleichst, siehst du schnell welcher Block welcher Zeile zugeordnet ist.
while True:
led_green.value = not button.value
if led_green.value:
led_red.value = False
else:
led_red.value = True
Der Profi hat natürlich schon erkannt, dass auch hier die if-Bedingung eigentlich nicht nötig ist.
Kannst du den Code entsprechend anpassen?