PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sehr wichtig:befehl stoppen,aber wie



alper
29.03.2007, 10:11
ich frage in einer do loop schleife permanent ab, ob eine taste an der tastatur gedrückt ist oder nicht und sende mit dem befehl die gedrückte taste als ziffer raus.halte ich nun meine handykamera an die led ,so sehe ich das sie

alper
29.03.2007, 10:36
hab das problem erstmal mit ner subroutine beseitigt

Ratber
29.03.2007, 14:49
ich frage in einer do loop schleife permanent ab, ob eine taste an der tastatur gedrückt ist oder nicht und sende mit dem befehl rc5send die gedrückte taste als ziffer raus.halte ich nun meine handykamera an die led ,so sehe ich das sie permanent am blinken ist.ich schätze, dass es eben an der do loop schleife liegt.sie sendet die ganze zeit das zeichen raus,ich möchte aber nur mit drücken der taste rausssenden. wie kann ich beipspielsweise nach 26ms (die zeit zum senden eines zeichens )den rc5send befehl stoppen.in der bascom hilfe finde ich nichts im forum auch nicht
hat jemand ne idee??


Ich verstehe das so das du "pro Tastendruck" das Zeichen "nur einmal" senden möchtest und nicht permanennt für die Dauer des Tastendruckes.

Du muß nicht nur das drücken der Taste erkennen sondern auch das loslassen,also beide Flanken.
Dazu brauchst du zwei "Merker".
Nennen wir sie mal "Taster" und "Senden"
Ist der Taster gedrückt wird "Taster" gesetzt.(1)
Wird der Taster wieder losgelassen dann wird "Taster" wieder gelöscht (0)
"Senden" wird gesetzt wenn noch nicht gesendet wurde und nach dem Senden wieder gelöscht.

Also in Pseudocode sähe das ungefähr so aus:
(Gedrückte Taste entspricht einer "1".Bei anderen Flanken entsprechend ändern)
(Die Merkernamen setze ich absichtlich in Anführunszeichen)



In der Abfrage steht:

Wenn Taste > "Taster" dann "Taster" = 1 : "Senden"=1 (Hier muß aber noch eine Entprellung dazwischen)
Wenn Taste < "Taster" dann "Taster" = 0

In der Senderoutine steht dann:

Wenn "Senden" = 1 dann Senden des Zeichens : "Senden"=0


Geh das mal in Gedanken durch.
Ist ganz einfach.


Bascoms "DEBOUNCE Px.y , state , label [ , SUB]" macht es im Grunde genauso,ist nur nicht so flexibel.

Erst wenn die gewünschte Flanke (0->1 oder 1->0) auftritt wird gesprungen.