
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
manfred gab den entscheidenden hinweis schon: merker ein bit, das man setzt und das im weiteren programmablauf zur verhinderung anderer aktionen abgefragt werden kann. aktuell bastle ich gerade an einer zeitgesteuerten, langsamen auf- und abdimmung für eine terrarienbeleuchtung. weil zur vermeidung von überhitzung vor allem im sommer der dimmer ggf. am tag heruntergeregelt werden muss, muss ausserhalb der "sonnenauf- und abgänge" ebenfalls weiterer eingriff in den ausgabewert möglich sein. es war ohne merker nicht machbar: das programm im anhang ist nur der dimmerbezogne teil. wenn du versuchst, die funktionsweise zu durchschauen, achte auf die beiden merker (flags) dimtarget und diminproc define dimtimeconst 51 'Dimstufenzeit in 20-ms-Steps define dimhightime 0700 'Einschaltzeit Dimmer in hhmm define dimlowtime 0703 'Auschaltzeit Dimmer in hhmm define timerini word define i byte 'Schleifenzaehler define j byte 'Auslesepuffer define dimlev byte 'Dimmerpegel (nur 0...20 zulaessig!) define dimtarget bit[191] 'Flag: aktuelles Dimmer-Endziel define diminproc bit[192] 'Flag: on = ein Dimm-Prozess laeuft define dimport port[14] dimport = off #main 'Hauptschleife gosub DIM goto main #DIM if diminproc then dimtest if hour * 100 + minute = dimhightime then set_dimup if hour * 100 + minute = dimlowtime then set_dimdown return #set_dimup dimtarget = on diminproc = on goto dimup #set_dimdown dimtarget = off diminproc = on goto dimdown #dimtest if abs (timer - timerini) < dimtimeconst then return if dimtarget then dimup #dimdown if dimlev > 0 then dimlev = dimlev - 1 goto dimendend #dimup if dimlev < 20 then dimlev = dimlev + 1 #dimendend sys &h12c,dimlev 'Dimmerausgabe setzen if dimlev = 0 then diminproc = off if dimlev = 20 then diminproc = off timerini = timer return allen, die mit dem dimmer vertraut sind und sich über meine umgangsweise mit ihm wundern, sei gesagt: ich habe einen anderen treiber gebastelt. warum und wie, werde ich innerhalb eines mittlerweile recht alten threads hier dieser tage noch genau beschreiben. |
| Antwort schreiben |