Was bedeutet IF und Else Arduino?

Das Programm soll die LED einschalten, wenn der Taster gedrückt wird und abschalten, wenn der Taster nicht mehr gedrückt wird. Ich schlage vor, wir starten mit unserem Blink-Beispiel.

int ledPin = 9;

void setup(){
  pinMode(ledPin, OUTPUT);
}

void loop(){
  digitalWrite(ledPin, HIGH);
  delay(200);
  digitalWrite(ledPin, LOW);
  delay(200);
}

Das Programm kennst du ja bereits (siehe Lektion 7). Wir werden es jetzt einfach umbauen.

Ich schlage vor, dass wir die Pin-Nummer, an welche der Taster angeschlossen ist, wieder in einer Variable speichern.

int tasterPin = 11;

Dann müssen wir dem Arduino-Board sagen, dass wir den Pin als Eingabe verwenden wollen. Der Befehl dafür lautet:

pinMode(tasterPin, INPUT);

Du hast es schon gemerkt, oder? Der Befehl ist der gleiche wie der für die LED. Wir sagen einfach nur, dass wir jetzt keinen OUTPUT, sondern einen INPUT verwenden wollen.

Um herauszufinden, ob der Taster gedrückt (HIGH) oder nicht gedrückt (LOW) ist, können wir den folgenden Befehl verwenden:

digitalRead(tasterPin);

Bisher haben wir nur Befehle verwendet, die keine Ergebnisse liefern. Dieser hier sagt aber HIGH oder LOW, wenn wir ihn verwenden. Das nennt man den Rückgabewert.

Schwer? Na gut. Stell dir vor, es würde eine Methode geben, die summe (a, b) heißt. Die Parameter a und b wären zwei Zahlen, die wir zusammen rechnen wollen. Das Ergebnis wird von der Methode als Rückgabewert übertragen. Um nun herauszufinden, wie das Ergebnis ist, müssen wir das Ergebnis auslesen. Das geht so: c = summe (a, b);. Jetzt ist das Ergebnis in der Variable c gespeichert.

Der Befehl digitalRead(tasterPin); liefert entweder HIGH oder LOW zurück. Aber wie finden wir denn nun heraus, ob das Ergebnis HIGH oder LOW ist? Dafür gibt es eine der wichtigsten Konstruktionen in der Programmierung: die if-Abfrage.

Die if-Abfrage

Mit dieser Abfrage können wir testen, ob eine Aussage wahr oder falsch ist. Nehmen wir an, du hast rote und blaue Bausteine vermischt und du willst sie in zwei Boxen sortieren. Wie würdest du das machen?

Was bedeutet IF und Else Arduino?

Vielleicht so:

  1. nimm einen Baustein
  2. prüfe, ob der Baustein rot ist
  3. wenn er rot ist, packe den Stein in Box A

Genau so benutzt man die if-Abfrage. Es ist also eigentlich ganz einfach. So wird sie geschrieben. Achte auf die zwei Gleichheitszeichen hintereinander. Das ist bei einer if-Abfrage sehr wichtig.

if (Baustein==rot) {
  packe Stein in Box A
}

So, jetzt könnten wir alle roten Bausteine in Box A packen, würden aber alle blauen Steine nach der Überprüfung einfach liegen lassen. Wie kommen die jetzt in Box B? Ein Vorschlag:

  1. nimm einen Baustein
  2. prüfe, ob der Baustein rot ist
  3. wenn er rot ist, packe den Stein in Box A
  4. sonst packe ihn in Box B

Gut, oder? Und so könnten wir das programmieren:

if (Baustein==rot) {
  packe den Stein in Box A
} else {
  packe den Stein in Box B
}

Wir benutzen also das Wort else. Das trifft sich gut, denn else heißt auf Deutsch sonst.

Was bedeutet IF und Else Arduino?

Hast du den grünen Stein gesehen? Der wandert auch in Box B, denn wir fragen ja nicht, ob der Baustein blau ist, sondern nur: Ist er rot oder ist er nicht-rot? ;-)

Nun aber zurück zu unserem Programm. Das sieht bisher so aus und muss verändert werden:

int ledPin = 9;
int tasterPin = 11;

void setup(){
  pinMode(ledPin,OUTPUT);
  pinMode(tasterPin,INPUT);
}

void loop(){
  digitalWrite(ledPin, HIGH);
  delay(200);
  digitalWrite(ledPin, LOW);
  delay(200);
}

Die if-Abfrage für den Button fragt, ob der Button HIGH ist:

if (digitalRead(tasterPin)==HIGH){

}

Wenn der Button HIGH ist, soll die LED eingeschalten werden:

if (digitalRead(tasterPin)==HIGH){
  digitalWrite(ledPin, HIGH);
}

Ansonsten (else) soll sie ausgeschaltet werden:

if (digitalRead(tasterPin)==HIGH){
  digitalWrite(ledPin, HIGH);
} else {
  digitalWrite(ledPin, LOW);
}

Hier noch mal das ganze Programm:

int ledPin = 9;
int tasterPin = 11;

void setup(){
  pinMode(ledPin,OUTPUT);
  pinMode(tasterPin,INPUT);
}

void loop(){
  if (digitalRead(tasterPin)==HIGH){
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

Funktioniert es? Super. Jetzt versuche das Programm so umzuschreiben, dass die LED aus geht, wenn der Taster gedrückt ist. Die Lösung findest du hier unten:

Hier zwei von vielen Vorschlägen:

int ledPin = 9;
int tasterPin = 11;

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(tasterPin, INPUT);
}

void loop(){
  if (digitalRead(tasterPin)==LOW){
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

Oder:

int ledPin = 9;
int tasterPin = 11;

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(tasterPin, INPUT);
}

void loop(){
  if (digitalRead(tasterPin)==HIGH){
    digitalWrite(ledPin, LOW);
  } else {
    digitalWrite(ledPin, HIGH);
  }
}

Das war jetzt aber gar nicht so einfach. Schön, dass du es trotzdem geschafft hast. Jetzt kennst du schon die wichtigsten Dinge beim Programmieren: Variablen, Schleifen und if-Abfragen. Weiter so! Von jetzt an wird alles viel einfacher. Versprochen.

Was bedeutet IF bei Arduino?

Beschreibung. Das if -Statement checkt, ob eine Bedingung true ist und führt dann den Code aus, der innerhalb der Klammern steht.

Was bedeutet Int bei Arduino?

Int speichert negative Zahlen mit einer Technik namens (Zweierkomplement). Das höchste Bit, manchmal auch als "Vorzeichen" bezeichnet, kennzeichnet die Zahl als negative Zahl. Die restlichen Bits werden invertiert und 1 wird hinzugefügt.

Was bedeutet void loop in Arduino?

Void“ heisst auf Deutsch „Lücke“ und „Loop“ wird mit „Schleife“ übersetzt. Die Befehle, die zwischen den geschweiften Klammern „{ }“ stehen werden ständig wiederholt, sobald alle Befehle durchlaufen sind. Jeder Arduino-Sketch ist ist seinem Aufbau gleich.

Was ist eine for Schleife Arduino?

Das for -Statement wiederholt die in Klammern nachfolgenden Anweisungen. Meistens wird eine Zählervariable verwendet, welche hochgezählt wird und die Schleife irgendwann beendet. Das for -Statement wird häufig zur Iteration über Arrays oder Listen von Daten oder Pins verwendet.