-         

Ergebnis 1 bis 8 von 8

Thema: tasten oder gedrückt halten

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    340

    tasten oder gedrückt halten

    Anzeige

    Hallo zusammen,

    ich versuche schon die ganze Zeit heraus zu finden wie es möglich ist, abzufragen ob ich einen Taster nur kurz taste oder ob er gedrückt gehalten wird?

    Gibt es dafür evtl. eine fertige Funktion? Oder hat sowas schonmal jemand selber programmiert?

    Danke für euere Hilfe!

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Alter
    21
    Beiträge
    355
    Ganz einfach, du fragst einfach den Pin an dem der Taster angeschlossen ist 2 mal ab. Wenn der Taster gedrückt wird, wird z.B. 5 sekunden gewartet, wenn der Taster dann immernoch gedrückt ist, wird ein eine bestimmte Aktion ausgeführt, wenn er nicht mehr gedrückt sein sollte wird eine andere aktion ausgeführt.

    MfG

    Torrentula
    MfG Torrentula

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hallo,

    ich hatte mal einen ähnlichen Fall, habe mir dann so beholfen:
    Code:
    Config Pind.2 = Input
    Portd.2 = 0
    ...
    ...
    While Pind.2 = 1
    Waitms 1
    Incr Taster_counter
    Wend
    If Taster_counter > xxx Then
    'lange gedrückt
    Else
    'kurz gedrückt
    End If
    Taster_counter = 0
    Evtl. hilfts dir ja

    Gruß
    Chris

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    340
    Hi
    danke
    hat funktioniert!

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Du musst aber bedenken, dass du damit den Rest deines Programms sehr lange blockierst. Evtl. wäre es besser, das Problem mittels Timer und Int zu lösen.

    Gru0
    Chris

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.380
    ich wollte schon eine alternative präsentiern, weil ich selber eine lösung gebaut habe die aber nur auf einen taster zur gleichen zeit reagiert, wenn das reicht !?

    einfach den Taster an einen der Interrupteingänge hängen, auf die Flanke des drückens reagieren und einen Timer starten, der erst nach 10mS überläuft (TCNT Register voreinstellen) und dann alle 100-500mS (je nach Geschmack) überläuft und dann den Zustand des Taster prüft, ist der Taster aus, wird der Timer schlafen gelegt, ist der Taster an, wird irgendetwas ausgelöst!

    das geht auch mit mehreren Tastern und demselben Timer, einfach alle Taster zusammen über Dioden an den Interrupt-Pin hängen und jeden Taster einzeln an einen Pin deiner Wahl, in der Timerroutine werden dann alle Taster gleichzeitg abgefragt, aber er reagiert halt nur auf einen einzelnen Tasterdruck!

    Aber in einem anderen Topic bin ich schon dran auch das Problem zu lösen!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    340
    Hi, ja hab das auch mit nem Timer gelöst!
    hatte nur nen Denkanstoß gebraucht.
    Der Timer zählt einen Wert hoch den ich dann auswerte.
    Der Timer wird beim drücken des Tasters gestartet und fängt an zu zählen.
    Wird er losgelassen stoppt der Timer.
    Wird während des gedrückthaltens ein bestimmter Wert überschritten führt er eine Funktion aus.
    Ist während des loslassens der Wert noch unterschritten, führt er eine andere Funktion aus.

    Funktioniert bestens.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.380
    ich hab BMS sei gedankt jetzt ne Lösung
    http://www.roboternetz.de/community/...Puls-umwandeln
    Klicke auf die Grafik für eine größere Ansicht

Name:	tastatur.png
Hits:	18
Größe:	23,2 KB
ID:	19834

    im Interrupt starte ich dann den Timer der nach 10mS das erste mal abfragt (entprellen) und dann alle 100mS wieder, bis keine Taste mehr gedrückt wird, dann geht der Timer wieder offline.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Ähnliche Themen

  1. Atmega16, STK500: Switch X gedrückt => LED X soll leuchten
    Von Kesandal im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 1
    Letzter Beitrag: 28.04.2011, 21:44
  2. Tastenabfrage (Kur/Lang gedrückt)
    Von DerSchatten im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 13.01.2010, 13:53
  3. Antworten: 1
    Letzter Beitrag: 19.03.2009, 15:09
  4. Wenn Taster gedrückt, hoher Stromverbrauch
    Von Pitt1986 im Forum Elektronik
    Antworten: 23
    Letzter Beitrag: 10.09.2006, 22:52
  5. Antworten: 15
    Letzter Beitrag: 30.08.2005, 22:45

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •