Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: zeitschaltprogramm Kategorie: Programmierung Basic (von hecktor - 26.08.2005 14:52)
 Als Antwort auf Re: zeitschaltprogramm von Achim - 26.08.2005 1:13
hecktor nutzt:  CC1-M-Unit V1.1

>
> > Das ist nun mein testprogramm,  aber wie mache ich das nun, das wenn ich schaltert1 (port7) betätige das dann led3/oder 4 für einen gewissen zeitraum unterbrochen werden. (vibrationssicherheitsschalter)
>
> Das heisst, die Unterbrechung soll über mehrere "Zyklen" hinweg erfolgen, wenn wir einen Durchlauf von #loop bis goto loop mal als einen Zyklus bezeichnen? Oder nur innerhalb eines Zyklus



> Ist denn die Betätigung von Schalter1 eher kurz oder eher lang? Muss man zu jedem Zeitpunkt innerhalb eines Zyklus die Betätigung abtesten, oder reicht es, pro loop einmal zu prüfen? Erfolgt die Betätigung von Schalter1 vielleicht nur zu bestimmten Zeitpunkten? Ein Zyklus dauert ja ca. 20 Sekunden wenn ich richtig gerechnet habe.
>
> Wie lange kann denn zwischen Lösen von Schalter1 und erneutem Drücken vergehen? Soll dann die "gewisse Zeit" in jedem Fall erneut gestartet werden?
>
> Was ist, wenn die "gewisse Zeit" inmitten der Zeit abläuft, wo LED3 oder 4 normalerweise leuchten würden? Sollen die dann für den Rest der regulären Zeit noch kurz leuchten?
>
> Kann die "reguläre Zeit" kürzer sein als die von "pause 200" abgedeckten 4 Sekunden? Kann also LED3 und 4 quasi blinken?
>
> Sorry, aber eine allgemeine Lösung ist oft unnötig kompliziert, wenn durch ein paar Rahmenbedingungen die Sache wesentlich vereinfacht werden kann.
>
> Im Prinzip musst Du jede pause 200 ersetzen durch so was wie:
>
> start = timer
> #loopX
> if NOT (NOT schalter1Old and schalter1) then goto loopXCont ' Flankenwechsel low -> high
>   schalter1Old = ON ' Wechsel erkannt
>   schalter1Timer = timer
>   schalter1TimerRunning = ON
> #loopXCont
> if NOT (schalter1Old and NOT schalter1) then goto loopXCont1 ' Flankenwechsel high -> low
>   schalter1Old = OFF ' Wechsel erkannt
> #loopXCont1
> if abs(start - timer) <= 200 then goto loopX
>
>
> mit den X in loopX durchlaufend nummeriert oder einem entsprechends gosub und die Stelle z. B. bei LED3 durch
>
>
> start = timer
> #loopX
> if NOT (NOT schalter1Old and schalter1) then goto loopXCont ' Flankenwechsel low -> high
> ... ' wie oben
> if schalter1TimerRunning then goto TimerRunning
>   led3 = ON
>   goto Check200
> #TimerRunning
> if NOT (abs(schalter1Timer - timer) > gewisseZeit) then goto check200
>  TimerRunning = OFF
> #check200
> if abs(start - timer) <= 200 then goto loopX
>
>
> Das nur als grobe Skizze, die sicher noch diverser Deklarationen bedarf und vielleicht auch Fehler enthält. Wie Du vielleicht an Manfreds Website gesehen hast, ist eine allgemeine Lösung für Parallelverarbeitung nicht so ganz trivial, und für Einsteiger nicht unbedingt geeignet.
>
> Bye
>  Achim
>

 Der schalter1 wird nur betätigt werden wenn schrled3(schreddermotorrechts) oder schlled4(schreddermotorlinks) vibrationen erzeugen die wiederumm einen schalter (schalter1) KURTZ
betätigt. Das heisst es muss alle/40mlsek oder so geprüft werden wärend der jeweilige (Port 3/4)motor läuft ob vibrationen auftreten, wenn ja den schreddermotor  nur 5 sek strom wegnehmen,in diesen 5 sek soll weiter gemessen werden ob  weitere vibrationen auftreten, wenn signal ja dann werden dem  motor weitere 5 neue  sek der strom abgestellt. . Also wenn nach der 3 abgestellten sek neues signal dann  von  da  ab weitere 5 sek strom wegnehmen  also total 8 in diesem Beispiel . Dieses kann mehrfach in diesen ca.  30 sek passieren.Die zeit wo abgeschaltet wird  kann hinten an die 30 sek  angehängt werden oder auch nicht. Die zeiten in meinem misslungenem testprogramm stimmen so nicht. Eigendlich sind es  statt 200    ca.  1500 /2000für 30 sek und statt 50    ca. 500 für 10 sek. 15sek max, aber ich wollte nicht so lange warten.


                                                  danke an alle  wie Achim/Manfred u.s.w




                                                                                              Danke dir achim

 Antwort schreiben

Bisherige Antworten: