Steuerung / Schleifen

wiederhole

wiederhole
Für Erklärung auf einzelne Komponenten klicken.

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:

beispiel-zum-wiederhole-block

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);
}