Forum: Mikrocontroller und Digitale Elektronik Problem bei Tastenzustandserkennung


von H. G. (ledi)


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?

von Route_66 H. (route_66)


Lesenswert?

H. G. schrieb:
> Einmal drücken = OFF, ein
>
> weiteres mal = OFF usw.

????

von H. G. (ledi)


Lesenswert?

Route 66 schrieb:
> H. G. schrieb:
>> Einmal drücken = OFF, ein
>>
>> weiteres mal = OFF usw.
>
> ????

Ahhhhhhhh! Sorry! Da hab ich mich verschrieben!

Muss heißen OFF und ON.

Aber danke, ich habe das Problem schon gelöst

von Karl H. (kbuchegg)


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.

von Thomas E. (thomase)


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.

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
Noch kein Account? Hier anmelden.