PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Taster mit mehreren Funktionen belegen ?



Getaco
30.05.2005, 05:53
Hallo erstmal.
Ich suche einen code der es mir ermöglicht , drei Functionen mit einem taster zu erledigen;d.h. Taster einmal kurz = function 1,taster 2x kurz = function 2;taster gedrückt halten = function 3. Mit 1xkurz hab ich keine probleme aber die anderen 2 bereiten mir sorgen.

Danke schon mal.

PicNick
30.05.2005, 06:10
Zweimal kurz ist auch gemein. Ist das zweimal Funktion 1 oder einmal Funktion 2 ?

Getaco
30.05.2005, 16:47
Zweimal kurz ist auch gemein. Ist das zweimal Funktion 1 oder einmal Funktion 2 ?

:-) jaja ist richtig gemein !

Also ist schon so dass ich da 3 funtionen oder zumindes 2 functionen brauche, ich hab schon dran rumgetüftel aber ich bekomme das einfach nicht so hin wie ich das will.

tobimc
30.05.2005, 16:53
Hi!

Ich empfehle eins: Mach lieber ne Porterweiterung, als einen Taster doppelt und dreifach zu belegen!

Das Ladegerät ISL-6-xxx von Schulze Elektronik (chamäleon, das mit den zwei Tastern) hat nur 2 Taster. Alles wird über diese beiden Taster bedient. Also ... ... Kennt ihr das?
Bis das Ding weis was man will, hat man schon aufgegeben... :D
Sonst ists aber gut!!

Grüße,
Tobi

Gerhard
30.05.2005, 17:14
Ich suche einen code der es mir ermöglicht , drei Functionen mit einem taster zu erledigen;d.h. Taster einmal kurz = function 1,taster 2x kurz = function 2;taster gedrückt halten = function 3.

wie wäre es denn wenn Du für Dein Vorhaben einen AD-Port in Verbindung
mit Spannungsteilern benutzt.

Ein Beispiel dazu habe ich im ProgForum.com gefunden:
20 Taster an einem Port.
http://www.progforum.com/showthread.php?t=4202&highlight=matrix

Auch die Folientastatur zum App-Board der c-control arbeitet nach diesem
Prinzip.

mfg Gerhard

Getaco
30.05.2005, 17:18
@Gerhard
hmm vielen dank für die idee doch dein Vorschlag würd mir nur was nützen wenn ich mehrere Taster Benötigen würde. Ist bei meinem Vorhaben aber nicht erwünscht. Ich habe nur einen Taster und der soll 3 functionen erfüllen.

Marco78
30.05.2005, 20:15
Wie wäre es damit?

Wenn der Taster gedrückt wird, etwa 150ms warten und schauen ob er immer noch gedrückt ist.
Wenn ja, nochmal etwa 150ms warten. Wenn er dann immer noch gedrückt ist, ist es einmal lang.
Wenn nein, war es einmal kurz.
Dann wieder abfragen.
Und auswerten, ob das zweite mal, kein Tastendruck war, ein kurzer oder langer.

Die Zeiten für kurz, 2 X kurz, lang und die Pause zwischen 2 X kurz müssen dann der Praxis angepasst werden.

Die maximale Zeit, die eine Aktion dauern darf (1 sec für lang oder 400ms für kurz + 200ms für Pause zwischen den kurzen + 400ms für zweiten kurz) muss dann ermittelt werden.
Der taster löst ein INT aus und in der ISR wird ein Timer mit der max. Zeit aktiviert.
Vor beginn der ISR wird ein Merker gesetzt. Nur wen eine Tastenaktion bei gesetzem Merker erfolgt, gehört sie zu einer Gruppe (2 X kurz) nach ablauf der Zeit wird der Merker gelöscht und es kann von vorne beginnen.

Oder

Taste gedrückt. Schauen ob nach Zeitablauf für kurz immer noch gedrückt. Wenn ja, GOSUB Taste_lang.
Wenn nein, GOSUB "_X_kurz. Dort die minimale Pausenzeit zwischen 2 mal kurz warten und nochmal schauen ob Taste gedrückt.
Wenn nein, die maximale Pausenzeit warten und nochmals schauen.
Wenn Taste erneut gedrück, denn war's 2 X kurz. Ansonsten RETURN zu einmal kurz.