Hallo! Ich möchte gerne mit BASCOM feststellen, ob eine Taste kurz oder lang gedrückt ist. Wenn die Taste weniger als 2 Sekunden gedrückt wurde, dann soll eine bestimmte Routine ausgeführt werden. Ist die Taste länger als 2 Sekunden gedrückt soll eine andere Routine abgearbeitet werden. Allerdings sollte dieses Sub schon bei 2 Sekunden Tastendrucklänge laufen und nicht erst, wenn die Taste wieder losgelassen wird. Wie kann ich das am einfachsten realisieren? Beispiele wären sehr gut. Danke schonmal an alle, Max
Nen Timer laufen lassen, der in ner Variable mitzählt, wenn die Taste gedrückt ist. Wird die Taste losgelassen und der Timer ist bei nem Wert < 2 Sekunden: Programmteil 1. Erreicht die Variable nen Wert >=2: Programmteil 2. (evtl hier noch Interrupt abschalten, weil nicht mehr nötig; nach Ende von Programmteil 2 wieder einschalten)
Meine bekannte C-Routine nach Bascom portiert: http://www.rn-wissen.de/index.php/Bascom_Debounce_ISR_in_Assembler#Beispiel_2:_Entprellung_einer_3_Tasten_Uhr_in_einer_Bascom-ISR_mit_Assembler-Unterst.C3.BCtzung Peter
Danke für die schnellen Antworten. Habe es jetzt mal so probiert:
1 | If taste = 0 Then |
2 | Waitms 25 |
3 | While taste = 0 |
4 | timer_taste_alt = timer_taste |
5 | If timer_taste_alt > 2 Then |
6 | Print "Taste lang gedrueckt" |
7 | End If |
8 | Wend |
9 | If timer_taste_alt < 2 Then |
10 | Print "Taste kurz gedrueckt" |
11 | End If |
12 | Bitwait taste , Set |
13 | End If |
Funktioniert soweit auch, jedoch will ich das der Printbefehl nur einmal gesendet wird, wenn die Taste lang gedrückt ist. In diesem Beispiel wird der Befehl aber solange gesendet, bis ich die Taste wieder loslasse. Kann mir da jemand helfen? Danke, Max
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.