Grundsätzlich führt der Arduino einfach nur lauter Befehle nacheinander aus. Möchte man aber, dass in bestimmten Situationen andere Befehle ausgeführt werden, muss man eine Fallunterscheidung programmieren. Man spricht auch von Verzweigungen oder if-Abfragen. Dabei prüft man zunächst, ob eine bestimmte Bedingung erfüllt ist, also z. B. ob gerade ein Taster gedrückt wird. Und nur, wenn das der Fall ist, dann werden bestimmte Befehle ausgeführt. Es ist also eine wenn-dann-Anweisung.
1 2 3 |
if (zahl == 1) { // Wenn zahl den Wert 1 hat digitalWrite(13, HIGH); // dann schalte die LED an } |
In dem kleinen Beispiel wird also zunächst geprüft, ob die Variable zahl den Wert 1 enthält (Achtung, für so einen Vergleich muss man zwei Gleichheitszeichen schreiben!). Der Befehl in Zeile 2, also das Einschalten der eingebauten LED, wird nur dann ausgeführt, wenn die Überprüfung erfolgreich war. Oder genauer gesagt: Wenn die Behauptung „zahl ist gleich 1“ wahr war. Für alle anderen Werte als 1 ist die Aussage falsch. Möchte man nun für alle Fälle, in denen zahl nicht 1 ist, die LED ausschalten, kann man das ganz einfach mit einer wenn-dann-sonst-Anweisung tun:
1 2 3 4 5 |
if (zahl == 1) { // Wenn zahl den Wert 1 hat digitalWrite(13, HIGH); // dann schalte die LED an } else { // sonst digitalWrite(13, LOW); // schalte die LED aus } |
Und was, wenn ich noch mehr Fälle unterscheiden möchte? Vielleicht ist an Pin 12 noch eine LED angeschlossen, die immer dann leuchten soll, wenn zahl == 2 gilt.
1 2 3 4 5 6 7 8 |
if (zahl == 1) { // Wenn zahl den Wert 1 hat digitalWrite(13, HIGH); // dann schalte die LED an Pin 13 an } else if (zahl == 2) { // sonst prüfe, ob zahl gleich 2 ist digitalWrite(12, HIGH); // und dann schalte LED an Pin 12 an } else { // sonst digitalWrite(12, LOW); // schalte LED an Pin 12 aus digitalWrite(13, LOW); // schalte LED an Pin 13 aus } |
In Zeile 3 wird also noch einmal nachgefragt. Das geschieht allerdings nur, wenn die erste Bedingung ( zahl == 1) nicht erfüllt war. Und nur, wenn die zweite Bedingung auch nicht erfüllt ist, wird der Block nach dem else ausgeführt, sozusagen die „Resterampe“. Und wie du siehst, darf man zwischen die geschweiften Klammern { ... } auch gleich mehrere Befehle schreiben.
Zum Ausprobieren empfehle ich dir, den folgenden Quelltext auf deinen Arduino zu laden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int zahl; // einfach nur eine Variable int ledPin = 13; // die eingebaute LED void setup() { pinMode(ledPin, OUTPUT); // Pin 13 wird als Ausgang definiert zahl = 1; // zahl erhält hier den Wert 1 } void loop() { if (zahl == 1) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); // dann schalte die LED aus } } |
Ändere auch mal den Wert für die Variable zahl in Zeile 6 und lade das Programm erneut hoch. Das ist natürlich etwas umständlich und nicht besonders sinnvoll, aber stell dir einfach vor, der Wert würde von einem Taster kommen. 1 bedeutet: Taster gedrückt. 0 bedeutet: Taster nicht gedrückt. Dann könntest du mit dem Taster die LED ein- und ausschalten.
Schreibe eine Antwort