Mit dem Zylonenauge @ 1MHz soll die Simulation einer Garagentorsteuerung erstellt werden:
Taster
T2
T1
T0
Funktion
Handsender
Zu
Auf
Beschreibung
Stopp-Auf-Stopp-Zu...
Tor schließen
Tor öffnen
Das Tor wird mit einem Leuchtband LED15..LED0 dargestellt. Bei Tor zu leucht LED15, bei Tor offen leuchtet LED0.
Die LED blinken beim Fahren des Tors. Beim Fahren ist die PositionsLED 30ms aus und 40ms an. Nach 4 Zustandswechseln wird eine LED weiter geschaltet, je nach Fahrrichtung.
An PD1 und PD0 ist ein Schlüsselschalter angeschlossen, mit dem das Tor geschlossen und geöffnet werden kann. Wird bei fahrendem Tor der Schalter in die Gegenrichtung betätigt stoppt das Tor, erst bei erneuter Betätigung läuft es in die Gegenrichtung.
An PD2 ist ein Handsenderempfänger angeschlossen. Bei Betätigung wird ein fahrendes Tor gestoppt. Ein gestopptes Tor wird in die Gegenrichtung der vorherigen Fahrt gestartet.
Vorgaben (mittels Klassendiagramm)
Zur Erleichterung einer systematischen Problemlösung sei gegeben:
Eine globale Variable zustand, die die Zustände STOPP,AUF,ZU annehmen kann.
Eine globale Variabel richtung, die den Wert AUF oder ZU annehmen kann.
Eine globale VariablesOrt, für die Position des Tors: 0=offen; 15=zu
Die globale Variable blinker soll beim Fahren alle 70ms um 1 erhöht werden.
Die Operation fahren() erhöht den blinker, lässt die sOrt-LED blinken und verändert bei jedem 4. Aufruf die Postion des Tors entsprechend der Richtung.
Zustandsdiagramm (mit Schülern entwickeln)
Aufzählungsdatentyp enum
Der Quellcode ist besser lesbar wenn statt Zahlen 0,1,2 für zustand aussagekräftige Namen vergeben werden. Mit dem Aufzählungsdatentyp enum ist dies möglich. Es kann sogar ein eigener wiederverwendbarer Datentyp mittels typedef definiert werden.