dem Data Anschluss am Sensor verbunden haben.
In Zeile 6 legen wir fest, dass wir am GPIO Pin 4 den Input messen wollen
und keinen Output geben werden.
Bevor wir mit dem richtigen Auslesen des Sensors anfangen können,
müssen wir erst noch zwei Variablen definieren und beide auf 0 setzen.
Einmal jetzigerStatus und vorherigerStatus. Wie oben schon erklärt, wissen
wir nur, ob sich etwas bewegt hat, wenn wir zuerst keinen Strom (0) und
dann Strom (1) vom Sensor messen.
In Zeile 11 kommt auch wieder try vor. Es wird also alles ausgeführt, was
eingerückt ist, solange nicht die except Bedingungen in Zeile 25 eingetreten
ist. Wenn das der Fall ist, wird alles ausgeführt, was in Zeile 26 und 27 steht.
Dann geben wir nur eine kleine Benachrichtigung für den User aus, dass das
Programm beendet wurde und räumen dann noch einmal die GPIO
Belegungen auf.
In Zeile 12 lesen wir solange den Input vom Sensor, bis wir Strom (1)
messen. Dadurch wissen wir, dass der Sensor bereit ist zum Messen und
legen den jetzigerStatus noch einmal auf 0.
Nach der Nachricht an den Benutzer in Zeile 14, dass wir jetzt wirklich
messen, machen wir das auch mit der While-Schleife in Zeile 15. Diese ist
so eingestellt, dass sie solange läuft, bis das Programm beendet wird. In
Zeile 16 wird der Variablen jetzigerStatus der Wert zugewiesen, den wir vom
Sensor mit gpio.input() messen. Das kann wieder nur eine 1 oder eine 0
sein.
In Zeile 17 startet die if Abfrage. Wenn die Variable jetzigerStatus 1 ist und
die andere Variable vorherigerStatus 0, wissen wir, dass es eine Bewegung
gab. Momentan geben wir einfach nur in Zeile 18 eine Nachricht aus. Hier
könnten wir aber zum Beispiel auch eine Funktion ausführen. Dann ist
wichtig, dass wir die Variable vorherigerStatus auf 1 setzen, damit wir
wissen, dass wir etwas gemessen haben und jetzt wieder darauf warten
müssen, dass der Sensor sich wieder "erholt". Das ist der Fall, wenn die
Bedingung in Zeile 20 erfüllt ist. Dann muss natürlich die Variable
vorherigerStatus gleich 0 sein. Nach der if Abfrage lassen wir das ganze
Programm für zehn Millisekunden pausieren, denn selbst wenn wir den
Sensor schneller abfragen, werden sich die Werte nicht verbessern.