|
AufgabeDie Ampel soll im Normalfall auf Grün stehen. Wird der Taster E1 von einem Fußgänger gedrückt, soll die Ampel 3 Sekunden (3000 MilliSekunden) später auf Gelb und nach weiteren 4 Sekunden auf Rot wechseln. Die Rotphase soll 10 Sekunden dauern, die anschließende Rot-Gelb-Fhase 3 Sekunden, dann soll es wieder Grün werden. Soweit der "Computing Starter" Text von 3.2 Ampel. Hinweise : Die rote Lampe an M1, die gelbe an M2 und die grüne an M1 schalten. An E1 den Taster für die Anforderung der Fußgängerphase. AnwendungskonstantenmRot = 1; mGelb = 2; Beschriftung der Textfelder clblTitel = 'Ampel 1'; fishMainbegin Was passiert da? ErweiterungenAnzeige des Betriebszustandes in der Statuszeile durch printStatus. Variable Zeiten. Anlegen eines Steuerwertes Faktor mit dem die Wartezeit beeinflußt werden kann (man muß dann beim Test nicht mehr solange warten. etwa so : Const wFaktor = 1; und in der Source von fishMain werden dann die entsprechende Zeilen geändert : ftiWaitForTime(300 * Werte(wFaktor)); usw. Aufgabe 2Modell wie bisher. Es soll jetzt aber noch eine (Nachts)Gelb-Blinken-Phase geben. Das geht über eine Abfrage des Tasters E2 (dem Schiebeschalter).modifiziertes fishMainbegin Neu in der Schleife ist das If ftiGetInput(eBlinken) mit einem "Blinken"-Teil und dem bisherigen Befehlen. Auch neu ist die Sub Blinken : procedure Blinken(); Sie enthält die Befehle für das Blinken. Auch wieder Lampe Ein/Aus, Warten. Man sollte wieder die printStatus und den Faktor einfügen. Aber wie ist denn das mit dem Umschalten zwischen Blinken (Nachtbetrieb) und Normalbetrieb, wenn eBlinken beim Start des Programms gedrückt ist, blinkt es schön. Wenn man im laufenden Betrieb eBlinken schaltet nicht immer, man muß dann auf eAnforderung drücken um das Blinken einzuleiten. Kann man das noch ändern. Etwa durch ein weiteres If anstelle des ftiFinish(0)? |