Bernd schrieb:
> Danke für Eure Antworten.
>
> Rufus, ja, die Verzögerung soll bei Tastendruck aktiv sein. Während die
> Verzögerung läuft muß die Taste gedrückt bleiben; wird sie losgelassen,
> soll die Verzögerung unterbrochen werden.
Dann ist das aber keine Verzögerung im eigentlichen Sinne, sondern eine
Begrenzung der Dauer eines Tastendrucks. Fast wie ein Monoflop.
> Karl Heinz, genau das ist das Problem. Wie kann ich das
> programmtechnisch verhindern?
Indem du die nächste Wartezeit zb erst dann zulässt, wenn die Taste
zwischendurch auch wieder mal auf 1 war. Erst dann kann die nächste
Verzögerung starten.
Oder: was gleichnbedeutend ist:
du stellst fest, ob deine Taste einen 1->0 übergang gemacht hat. Es
reicht nicht, wenn die Taste auf 0 (also gedrückt IST) ist, damit die
Verzögerung wirksam wird. Sie muss genau jetzt niedergedrückt worden
sein!
Dazu kannst du dir zb immer den Tastenzustand in einer zusätzlichen
Variablen merken, so dass du im nächsten Durchgang durch die Do-Loop
Schleife vergleichen kannst, ob die Taste kurz vorher 1 war und jetzt 0
ist (denn dann ist die Taste jetzt gerade niedergedrückt worden) oder ob
sie beim letzen mal nachsehen auch schon 0 war (dann ist sie zwar
gedrückt, war aber vorher auch schon gedrückt - der Benutzer ist auf der
Taste eingeschlafen)
1 | ...
|
2 |
|
3 | prevTaster = Taster
|
4 |
|
5 | Do
|
6 | Poti = Getadc(7) 'Wert von ADC1 wird in Variable Poti gespeichert
|
7 |
|
8 | nowTaster = Taster
|
9 |
|
10 | If nowTaster = 1 Then
|
11 | Led = 0
|
12 | End If
|
13 |
|
14 |
|
15 | If nowTaster = 0 AND prevTaster = 1 Then
|
16 | Wait Poti
|
17 | Led = 1
|
18 | End If
|
19 |
|
20 | prevTaster = nowTaster
|
21 | Loop
|
Sprich: Die Verzögerung wird nur dann wirksam, wenn du eine Flanke
gefunden hast.
Das löst jetzt aber diesen Teil ...
> wird sie losgelassen, soll die Verzögerung unterbrochen werden.
... noch nicht.
Dazu muss die ganze Warterei umgedreht werdenb und auf Timer umgestellt
werden.
Wait ist zwar einfach, aber es ist zu einfach. Auf Dauer kommst du damit
nicht weiter.
> die scheinbar garnicht so einfach zu programmieren ist.
Wenn man ein wenig Übung hat, ist es nicht schwer.