Wie man auf einen Tastendruck reagiert

Was du schon weißt

  • Wie man eine LED an den Arduino anschließt und einen Widestand verwendet.
  • Wie man einen Quelltext bzw. ein Programm auf den Arduino hochlädt.
Stecke niemals auf dem Steckbrett um, während der Arduino noch mit Strom versorgt wird.
Achte darauf, dass auf dem Steckbrett keine Kurzschlüsse entstehen.

Was kommt jetzt?

Um zu demonstrieren, wie man auf einen Tastendruck reagieren kann, brauchen wir einen Aufbau, der sowohl einen Taster als auch ein Objekt beinhält, mit dem man die Reaktion sichtbar machen kann. Wir wollen dazu den Aufbau mit der Leuchtdiode erweitern:

Vorsicht! Wenn in diesem Aufbau der Arduino mit Strom versorgt wird und der Taster gedrückt wird, kann in seltenen Fällen ein Kurzschluss entstehen. Dem kann man nur sicher entgehen, wenn man nach der Stromversorgung des Arduino und vor dem erstaligen Drücken des Tasters ein zum Aufbau passendes Programm aufgespielt wird.

Ein pssendes Programm wäre:

void setup() {
  pinMode(3, OUTPUT);
  pinMode(2, INPUT_PULLUP);
}
 
void loop() {
  if(!digitalRead(2)) {
    digitalWrite(3, HIGH);
    delay(250);
  }
}

Die Zeile

  pinMode(2, INPUT_PULLUP);

im setup-Teil teilt dem Arduino mit, dass er am Kontakt D2 erwarten soll, dass dort Strom in den Arduino fließt. Zudem schaltet er einen großen Widerstand in den Stromkreis, sodass selbst bei gedrücktem Taster kein Kurzschluss entsteht!

Die Zeilen

  if(!digitalRead(2)) {
    digitalWrite(3, HIGH);
    delay(250);
  }

im loop-Teil veranlassen den Arduino zu prüfen, ob Strom einfließt über den Kontakt D2. Falls ja, schaltet der Arduino die Leuchtdiode ein und wartet eine Viertelsekunde.

Problem: Der Arduino schaltet die Leuchtdiode zwar ein, aber nicht wieder aus!

Um das leisten zu können, müsste sich der Arduino „merken“, ob die Leuchtdiode schon eingeschaltet ist oder nicht. Dazu verwenden wir eine Merkvariable, die nur zwei Werte speichern kann: wahr bzw. falsch, oder gleichwertig: ein bzw. aus. Der Wert wahr lautet auf englisch true und ist mit HIGH gleichwertig. Der Wert falsch lautet auf englisch false und ist mit LOW gleichwertig.
Damit sollte der Quelltext wie folgt aussehen:

boolean status;
 
void setup() {
  pinMode(3, OUTPUT);
  pinMode(2, INPUT_PULLUP);
  digitalWrite(3, LOW);
  status = false;
}
 
void loop() {
  if(!digitalRead(2)) {
    status=!status;
    digitalWrite(3, status);
    delay(250);
  }
}

Die Zeile

  status = false;

setzt zu Beginn den Merker, ob die Leuchtdiode eingeschaltet ist, auf ausgeschaltet. Die Zeilen

    status=!status;
    digitalWrite(3, status);

ändern zuerst den Status von wahr auf falsch bzw. umgekehrt (je, nachdem). Zudem wird die Leuchtdiode dann ein- oder ausgeschaltet. (Wieder je, nachdem! Bedenke, statt HIGH kann man auch true beim Schalten schreiben, statt LOW auch false.)

Und wenn wir schon so weit sind, führen wir zwei weitere Merker ein: eine Variable (ledPin) soll sich merken, an welchem Kontakt die Leuchtdiode angeschlossen ist, die andere (tasterPin), wo der Taster zu finden ist.
Das hat den Vorteil, dass man sich bei mehreren verwendeten Kontakten nur die Namen merken muss. Das fällt den meisten Leuten einfacher, als sich Zahlen zu merken!

Damit sieht der Quelltext folgendermaßen aus:

vollständiges Programm mit Taster

int ledPin = 3;
int tasterPin = 2;
boolean status;
 
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(tasterPin, INPUT_PULLUP);
  digitalWrite(ledPin, LOW);
  status = false;
}
 
void loop() {
  if(!digitalRead(tasterPin)) {
    status=!status;
    digitalWrite(ledPin, status);
    delay(250);
  }
}

Ziel erreicht

Herzlichen Glückwunsch! Du weißt nun, wie man auf einen Tastendruck reagiert und z.b. eine Leuchtdiode einschaltet.

Weitere Ideen

Wenn du noch Zeit hast, kannst du folgendes ausprobieren:

  • Baue eine zweite Leuchtdiode ein. Lasse nur eine leuchten, bis der Taster gedrückt wird. Schalte dann die erste Leuchtdiode aus und die zweite für 3 Sekunden an. Dann schalte wieder die erste ein und die zweite aus!
  • Baue eine Ampelschaltung. Wenn du Anleitung brauchst, findest du hier welche.
  • Eine schwierige Sache: Baue eine Schaltung mit drei Leuchtdioden und einem Taster. Versuche ein Programm zu schreiben, bei dem bei jedem Tasterdruck „im Kreis“ die Leuchtdioden ein- bzw. ausgeschaltet werden.

Wie geht's weiter?