Читать книгу Mit Arduino die elektronische Welt entdecken - Erik Bartmann - Страница 147

Den Code verstehen

Оглавление

Ich möchte an diesem Beispiel zeigen, was ich über ein Warteschleifenverfahren realisiert habe. Zu Beginn der loop-Schleife wird immer der gerade vorherrschende Tastenpegel in die Variable tasterStatusActual eingelesen. Der gerade vorherrschende Zeitstempel seit Sketch-Start wird über die millis-Funktion in die Variable currentTime eingelesen. Wenn sich der aktuelle Tasterstatus vom vorherigen unterscheidet, wird die Debounce-Zeit auf den neuesten Stand gebracht. Diese wird in der folgenden Abfrage benötigt, um darüber zu entscheiden, ob das vorgegebene Intervall abgelaufen ist:

if(currentTime - lastDebounceTime > debounceInterval){...}

Ist das der Fall, wird der aktuelle Tasterstatus mit dem Debounced-Tasterstatus verglichen und erst wenn sie unterschiedlich sind, kommt es zur Abfrage, ob ein HIGH-Pegel zur Statusänderung vorliegt. Denn erst dann soll die LED in ihrem Status geändert werden, was über die Invertierung des Status in der Variablen ledStatus erfolgt:

if(debouncedTasterStatus == HIGH) ledStatus = !ledStatus;

Abschließend muss lediglich die LED über eben diese Variable ledStatus angesteuert werden:

digitalWrite(ledPin, ledStatus);

... und der aktuellen Tasterstatus in den vorherigen Status überführt werden:

prevTasterStatus = tasterStatusActual;

Das Spiel beginnt von vorn.

Mit Arduino die elektronische Welt entdecken

Подняться наверх