Block
Der wiederhole
Block zählt zu den Schleifen. Anders jedoch als die wiederhole fortlaufend
Schleife besitzt die wiederhole
Schleife eine Abbruchbedingung.
Diese wird dem Block als mal
Parameter übergeben.
Der mal
Parameter gibt an, wie of die Schleife durchlaufen werden soll und ist damit auch deren Abbruchbedingung.
Der Code, welcher in dem Befehle
Teil dem Block übergeben wird, wird entsprechend oft durchlaufen.
mal
In den mal
Parameter kann eine positive ganze Zahl oder Variable eingesetzt werden.
Befehle
In den Befehle
Abschnitt kann eine Folge von weiteren Blöcken zu Anweisung von Befehlen eingefügt werden.
Dies kann zum Beispiel ein digitalWrite
Block sein, der einen Pin auf HIGH
oder LOW
schält oder eine Variable, die gesetzt werden soll
, oder sogar weitere wiederhole
Blöcke. Jedoch empfiehlt es sich nicht mehrerer dieser Blöcke zu verschachteln, da die Rechenzeit sich erheblich verlängern kann.
Beispiel
Als Beispiel soll eine analoge Variable von 0 auf 50 hochgezählt und im seriellen Monitor ausgegeben werden. Vor dem wiederhole
Block wird die Variable
als zaehler
initalisiert.
Achtung: Hier wird die Variable nicht zähler
genannt, da Variablen keine Umlaute (ä, ö oder ü) enthalten sollten.
Für den Parameter mal
wird 50 eingetragen. Bei jedem Durchlauf wird erst das Wort "Zähler: " und dann der aktuelle Wert der zaehler
Variable in den
seriellen Monitor geschrieben. Anschließend wird der zaehler
um 1 erhöht. Der Serial print
Block ist so eingestellt, dass nach jeder Ausführung eine neue Zeile im seriellen
Monitor begonnen wird. Jeder Wert wird in eine neue Zeile geschrieben.
In ArduBlock könnte das so aussehen:
Code
Der folgende Abschnitt ist etwas komplizierter als der Block an sich und muss für dessen Anwendung nicht verstanden worden sein.
Im Code für den Arduino wird der Baustein mit for(mal){Befehle}
umgesetzt.
Für den mal
Parameter werden im Code drei Parameter in die for
Schleife gegeben. Die Initialisierung (initialization
),
die Bedingung (condition
) und die Information wie hochgezählt werden soll (increment
). Die Parameter werden mit einem Semikolon ;
getrennt.
Hier wird zunächst eine neue Variable initalisiert (erschaffen). Diese wird Laufvariable genannt und bekommt im Programm häufig den Namen i
, j
, k
oder temp
.
Die Varieble existiert nur solange die for
Schleife ausgeführt wird.
Dann benötigt man noch eine Abbruchbedingung. Wenn die Laufvariable also nur bis 100 hochgezählt werden soll, wäre die Bedingung beispielsweise i <= 100
.
Solange diese Bedingung erfüllt ist wird die Variable weiter bei jedem Durchlauf erhöht und der entsprechende Code ausgeführt.
Wenn die Bedingung nicht mehr erfüllt ist, wird die Schleife vor dem nächsten Durchlauf sofort verlassen.
Zuletzt muss noch angegeben werden, wie sich die Laufvariable bei jedem Durchgang ändern soll. Sie kann um jede beliebige Zahl erhöht, verringert, durch diese geteilt oder mit dieser multipliziert werden.
Zur Vereinfachung wird hier allerdings nur betrachtet, dass die Laufvariable sich bei jedem Durchgang nur um 1 erhöhen soll. Wenn die Laufvariable als i
initialisiert wurde, dann
wäre der entsprechende Befehl der Variablenname mit zwei + dahinter.
Also i++
ist die Operation, die die Variable i
um 1 hochzählt.
Man kann mit i--
die Variable auch um 1 verringern.
Beispiel: Eine Schleife soll von 1 bis 100 immer um 1 hochzählen. Dann würde der Funktionskopf folgendermaßen aussehen:
for( int i = 1; i <=100; i++ ){Befehle}
.
Wenn wir einen Countdown bauen wollen, dann können wir auch zum Beispiel eine Variable von 10 auf 0 im Sekundentakt herunterzählen lassen und den aktuellen Wert im seriellen Monitor ausgeben lassen:
for(int i = 10; i >= 0; i--){
delay(1000);
Serial.print(i);
Serial.print();
}
Im Code würde das Beispiel von oben dann folgendermaßen aussehen:
for (int i = 0; i < 50; i++) {
Serial.print("Zähler: ");
Serial.print(zaehler);
Serial.println();
zaehler = (zaehler + 1);
}