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
Druckbare Version
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
hab das problem erstmal mit ner subroutine beseitigt
Zitat:
Zitat von alper
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)
Geh das mal in Gedanken durch.Code: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
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.