Der Personenzähler als Automat
Modellierung der Funktionalität des Personenzählers
Beide Sensoren können nun feststelluen, ob eine Person in ihrem Erfassungsbereich ist. Dafür muss ein Schwellenwert (z.B. 80cm) festgelegt werden. Misst ein Sensor einen kleineren Abstandswert als den Schwellenwert, dann geht das System davon aus, dass gerade eine Person erfasst wird.
Für das System ist also nur relevant, ob die beiden Sensoren L und R gerade den Schwellenwert unterschreiten (oder eben nicht).
Damit muss das System insgesamt auf vier verschiedene Eingaben reagieren können:
- L_nah: Der linke Sensor meldet eine Distanz unter dem Schwellenwert
- L_weit: Der linke Sensor meldet eine Distanz über dem Schwellenwert
- R_nah: Der rechte Sensor meldet eine Distanz unter dem Schwellenwert
- R_weit: Der rechte Sensor meldet eine Distanz über dem Schwellenwert
Der Personenzähler als endlicher Automat
Wie im vorherigen Abschnitt festgestellt, müssen die möglichen Eingaben in einer fest vorgegeben Reihenfolge erfolgen. Sie führen dann jeweils zu einer Zustandsänderung des Systems. Es wartet dann auf die jeweils nächste erwünschte Eingabe. Dieses Verhalten lässt sich in der Informatik sehr gut mit endlichen Automaten modellieren. Im folgenden sollst du das Automatenmodell des Personenzählers immer genauer definieren.Diese Modellierung ist später die Grundlage für die Programmierung des Calliope mini mit MakeCode. Dort wird letztendlich das Modell nur noch 1:1 in ein Programm übersetzt.
Das Verhalten des Personenzählers kann mit einem Mealy-Automat simuliert werden. Klicke auf den grünen Pfeil und beobachte, wie der Automat bei den Eingaben seinen Zustand ändert. Wann erfolgt das Hochzählen der Personen als Ausgabe?
Ergänze den Automaten, damit bei Personen, die das System von rechts nach links passieren, die Personenzahl um eins heruntergezählt wird. Die Ein- und Ausgabemöglichkeiten sind schon vorhanden. Modelliere neue Zustände und Übergänge für das gewünschte Verhalten!
Sicherlich hast du bei der Simulation festgestellt, dass einige Zustandsübergänge noch nicht definiert sind. Was soll z.B. passieren, wenn im Zustand "links nah" das Ereignis "R_weit" eintritt?
Ergänze das Automatenmodell um alle fehlenden Übergänge! Einige neue Übergänge sind als Beispiel bereits modelliert.