5 Sekunden ist vielleicht zu lang gewählt? Ich könnte mir vorstellen, dass das eine Byte-Variable ist. Also wäre 255 das Maximum.
Debounce einfach manuell:
Falls das Programm gleichzeitig eh nix machen soll, Frage den Wert ab, warte 5 Sekunden und frage nochmal ab. Wenn Wert A und B gleich sind, dann gilt die Taste als gedrückt.
Eleganter ist bestimmt, einen Timer mit Interrupt zu verwenden... der fragt den Taster ab und springt alle X Millisekunden in eine Sub, die den Taster erneut abfragt und bei positivem Ergebnis einen Zähler erhöht, dann nach 5 Sekunden das Ereignis auslöst.
Außerdem würde ich die Variable DIRECTION einfach als Bit dimensionieren und mit TOGGLE umschalten - spart CPU-Power und Codespace.
Lesezeichen