
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Problem ist, die Abfrage bzw. die Verwendung des internen Timers der CC. Ich möchte sagen wir mal, eine Ampelanlage steuern und die Schaltphasen unter Zuhilfenahme des Timers realisieren. Das Ganze sollte so Ablaufen dass die oder mehrere Ampelanlagen unabhängig von anderen Schaltaufgaben funktioniert. > Mein Gedanke hierbei wäre z.B. eine Unterroutine, in der der Timer eingebunden ist und mit Gosub oder Goto ausgelesen wird. In meinem Handbuch zur Unit steht leider nicht sehr viel darüber. Wenn es gleich mehrere Ampelanlagen sein sollen, wo dann auch noch die unterschiedlichen Richtungen unterschiedliche Grün- und Rot-Zeiten haben sollen, könnte es natürlich knapp mit den CC-Variablen werden, um das alles zu verwalten. Um Dir mal aufzuzeigen, wie das grundsätzlich geht, ein kleines ungetestes Beispiel. define sekunde_alt byte ' Merker fuer Sekunden-Wechsel define ampelStatusIndex byte ' Index in Tabelle AmpelPhasen define ampelFarbe byte define ampelSekunden byte ' Zeit bis nächste AmpelPhase define ROT 1 define GELB 2 define GELB_ROT 3 define GRUEN 4 define TAB_END 5 define ROT_PHASE 15 ' in Sekunden define GELB_PHASE 3 ' in Sekunden define GELB_ROT_PHASE 1 ' in Sekunden define GRUEN_PHASE 10 ' in Sekunden 'Init ampelStatusIndex = 0 looktab ampelPhasen, ampelStatusIndex, ampelFarbe looktab ampelZeiten, ampelStatusIndex, ampelSekunden gosub AmpelAnzeige sekunde_alt = -1 ' Sekunden-Wechsel erzwingen #loop ' interne Uhr auslesen if second = sekunde_alt the goto Mach_was _anderes ' immer noch in der selben Sekunde ' neue Sekunde gosub AmpelSchaltung gosub AmpelAnzeige ... ' andere Sachen, die einmal pro Sekunde laufen ... #mach_was_anderes ... ' andere Sachen, die bei jedem Durchlauf laufen ... goto loop ' von vorne #AmpelSchaltung ampelSekunden = ampelSekunden - 1 ' Timer runterzaehlen if ampelSekunden > 0 then return ' Phase läuft noch - nix zu tun 'Timer abgelaufen: Schalten ampelStatusIndex = ampelStatusIndex +1 looktab ampelPhasen, ampelStatusIndex, ampelFarbe ' neue Farbe holen looktab ampelZeiten, ampelStatusIndex, ampelSekunden ' neue Phasendauer holen if ampelFarbe <> TAB_END then return ' alles klar ' ampelFarbe ist 0, Ende Tabellen erreicht. Von vorne ampelStatusIndex = 0 looktab ampelPhasen, ampelStatusIndex, ampelFarbe looktab ampelZeiten, ampelStatusIndex, ampelSekunden return ' # ampel_schaltung #AmpelAnzeige ' Hier ueber Ports geeignete LEDs schalten if ampelFarbe = ROT then print "ROT" if ampelFarbe = GELB then print "GELB" if ampelFarbe = GELB_ROT then print "GELB_ROT" if ampelFarbe = GRUEN then print "GRUEN" return ' # AmpelAnzeige table AmpelPhasen ROT, GELB_ROT, GRUEN, GELB, TAB_END tabend table AmpelZeiten ROT_PHASE, GELB_ROT_PHASE, GRUEN_PHASE, GELB_PHASE, TAB_END tabend HTH Bye Achim |
| Antwort schreiben |