www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM: Taste lang oder kurz gedrückt?


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: MeinerEiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine bekannte C-Routine nach Bascom portiert:

http://www.rn-wissen.de/index.php/Bascom_Debounce_...


Peter

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnellen Antworten.

Habe es jetzt mal so probiert:

If taste = 0 Then
  Waitms 25
  While taste = 0
    timer_taste_alt = timer_taste
    If timer_taste_alt > 2 Then
      Print "Taste lang gedrueckt"
    End If
  Wend
  If timer_taste_alt < 2 Then
    Print "Taste kurz gedrueckt"
  End If
  Bitwait taste , Set
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.