Problem bei Tastenzustandserkennung

OP #2936337
Lesenswert?
• ▲
▼
Hallo! Ich stehe vor dem Problem, dass ich eine Tastenauswertung machen 
muss, wo ich die Signale (den Tastenwert) über Funk bekomme.

Der Tastendruck (ON / OFF) am Sender = Tastenwert 8 wird alle 200ms 
gesendet. Auf der Empfangsseite muss ich nun eine Auswertung machen, die 
erkennen soll ob die Taste betätigt wurde. Einmal drücken = OFF, ein 
weiteres mal = OFF usw.
1
else if (Taste == 8)
2
{           
3
    if ((Taste == 8) && (offcounter == 0))
4
    {
5
        OCR0SA = valuetable[0];    // red = 0
6
        OCR1SA = valuetable[0];    // blue = 0
7
        OCR1SB = valuetable[0];    // green = 0
8
  
9
        offcounter = 1;
10
    }
11
    if ((Taste == 8) && (offcounter == 1))
12
    {
13
        OCR0SA = valuetable[255];    // red = 100%
14
        OCR1SA = valuetable[255];    // blue = 100%
15
        OCR1SB = valuetable[255];    // green = 100%
16
  
17
        offcounter = 0;
18
    }
19
}

Mit diesem Code toggle ich nur zwischen den beiden Zuständen hin und 
her!
Kann mir da bitte jemand helfen?
#2936518
Lesenswert?
• ▲
▼
H. G. schrieb:
> Hallo! Ich stehe vor dem Problem, dass ich eine Tastenauswertung machen
> muss, wo ich die Signale (den Tastenwert) über Funk bekomme.

Ändert ja am Prinzip nichts.

> gesendet. Auf der Empfangsseite muss ich nun eine Auswertung machen, die
> erkennen soll ob die Taste betätigt wurde. Einmal drücken = OFF, ein
> weiteres mal = OFF usw.

ALso. Wenn ich in Gedanken aus dem zweiten OFF ein ON mache, dann hast 
du wahrscheinlich das gleiche gedankliche 'Problem', wie so viele vor 
dir:
Du unterscheidest nicht zwischen
* ist eine Taste gedrückt
* wird eine Taste jetzt, genau in diesem Moment, gedrückt.

Das sind 2 verschiedene Dinge.
Das erste erlebst du zb bei einem Rollo. Solange du den Taster 
niedergedrückt hältst, fährt das Rollo. Lässt du los, bleibt auch der 
Motor stehen.
Das zweite hast du zb bei einem Garagentor. Du drückst einmal drauf und 
der Motor setzt sich in Bewegung. Du drückst nochmal drauf und der Motor 
bleibt stehen.


Der Unterschied zwischen den beiden besteht darin, dass im zweiten Fall 
der Taster auch wieder LOSGELASSEN werden muss, ehe dann das nächste 
Niederdrücken eine nächste Aktion auslösen kann.
#2936522
Lesenswert?
• ▲
▼
H. G. schrieb:
> Der Tastendruck (ON / OFF) am Sender = Tastenwert 8 wird alle 200ms
> gesendet.
D.h. die Taste wird gedrückt und solange sie gedrückt ist, wird alle 
200ms der Status gesendet?
Und was passiert, wenn die Taste losgelassen wird?
Wird dann etwas anderes gesendet oder wird einfach einfach gar nichts 
gesendet?

Für ersteres ist die Auswertung ja wohl nicht besonders schwierig. Bei 
letzterem ist das Losgelassen-Kriterium, daß 200ms nichts gesendet 
wurde. Das musst du auswerten.

mfg.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.