![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Ich möchte folgendes erreichen: > 1.wenn der Taster gedrückt und wieder losgelassen wird soll das Rollo ganz nach unten/oben fahren. > 2. wenn der Taster länger gedrückt wird (mehr als 3 sec sollen alle Rollos im haus fahren ( es ist Nacht). > 3. wenn der Taster 2 x hintereinader gedrückt wird dann stop dieses Rollo an der aktuellen Position. > > so und hier ist mein problem > > ich schreibs mal so: > wenn das inputbyte befüllt ist < 255 dann zeitstempel und prozess1 füllen > wenn das inputbyte befüllt ist < 255 und prozess >0 ist und der beginn des Tastendrucks länger als 3 sec her dann soll die outputaktion alles zu / alles auf gestartet werden. > > wenn das inputbyte befüllt ist <255 und prozess >0 ist und innerhalb der 3 sec das zweite Mal das Inputbyte befüllt wurde dann stop der Outputaktion > PS ich muss das ganze so schreiben damit ich nacheinander 5 Inputkarten (Adressen) abfrage Und jede der Karten hat mehrere Taster? (Die 5. Karte hat 8?) Können verschiedene Taster gleichzeitig gedrückt werden und soll das Programm dann für jeden Taster obigen Algorithmus auswerten? Ich kenne das 1.1-Basic und den Wertebereich von den Variablen dort nicht, aber Du bräuchtest dann ggf. für jeden Taster eine Variable die den Timestamp hält. Man kann das natürlich auf viele verschiedene Arten machen. Nehmen wir mal an, Du speicherst das so, dass Du auch drei Wochen nach einem Tastendruck feststellen kannst, dass das vor drei Wochen und 2 Sekunden war, und nicht vor 2 Sekunden. Ansonsten musst Du natürlich entsprechend die Timestamps vor dem Überlauf auch wieder zurücksetzen, oder Du setzt nicht den Timestamp, sondern zählst die Sekunden seit Tastendruck. In der Annahme, dass Deine Routine mit dem inputbyte oben einen gehalteten Taster ständig meldet, musst Dir natürlich auch den letzten Zustand jedes Tasters merken und ob Du den Tastendruck > 3 Sekunden bereits erkannt hast. Dann könnte das für einen Taster skizziert so aussehen: gedrueckt_alt = off ' Initial Taster los gelassen timestamp_gedrueckt = 0 dauerdruck = off #loop gedrueckt = inputbyte < 255 'momentan gedrueckt? if not gedrueckt_alt and gedrueckt then gosub gedrueckt ' Taste wurde soeben gedrückt if gedrueckt_alt and not gedrueckt then gosub losgelassen ' Taste wurde soeben losgelassen gedrueckt_alt = gedrueckt ' neuen Zustand merken if gedrueckt and (now - timestamp_gedrueckt > 3) and not dauerdruck then gosub dauer ' laenger als 3 Sek gedr. goto loop #gedrueckt if (now - timestamp_gedrueckt <= 3) then gosub stop ' zweimal in 3 Sek gedr. timestamp_gedrueckt = now ' geeignet ermitteln und merken return #losgelassen if (now - timestamp_gedrueckt <= 3) then gosub rollo_rauf_runter ' weniger als 3 Sek gedr. dauerdruck = off ' bereit fuer nächsten Dauerdruck return #dauer dauerdruck = on ' nur einmal losrattern gosub alles_rauf_runter return HTH Bye Achim |
Antwort schreiben |