X. Besser (ran)tasten

In der Regel sind zur Steuerung des Mikrocontrollers von außen Taster besser geeignet als Schalter.

Daher soll das Blinkprogramm nun derart abgeändert werden, dass der Programmzustand mit Hilfe eines Tasters beeinflusst werden kann.

Besondere Herausforderung ist, dass der Taster kurzzeitig ein Signal am Eingang des Arduino anlegt. Um die Funktionsweise eines Schalters nachzuempfinden, muss eine zusätzliche Variable eingeführt werden. In ihr speichert man sich den alten Schaltzustand, um eine Flankenerkennung zu realisieren (Wechsel von LOW -> HIGH):

int letzterTasterZustand=LOW;
int tasterPinNr = 10;
int ledPinNr = 13;
int ledZustand = LOW;

void setup() {
    pinMode(tasterPinNr, INPUT);
    pinMode(ledPinNr, OUTPUT);
}

void loop() {
    int aktuellerTasterzustand = digitalRead(tasterPinNr);

    if(aktuellerTasterzustand==HIGH && 
                              letzterTasterZustand==LOW) {
        letzterTasterZustand = aktuellerTasterzustand;
        if(ledZustand == LOW) {
            ledZustand = HIGH;
        } else {
            ledZustand = LOW;
        }
    }
    digitalWrite(ledPinNr, ledZustand);
}

Diese einfache Lösung verhindert noch nicht die mehrfache Erkennung von Flanken aufgrund von typischen Tasterprellen.

Schreibe einen Kommentar