Block
Der sonst falls
Block kann als Erweiterung des falls
Blocks gesehen werden. Er kann nur direkt im Anschluss an einen zuvor gesetzten falls
oder sonst falls
Block gesetzt werden. Die Positionierung unnter anderen Blöcken ist in ArduBlock zwar grundsätzlich möglich, jedoch wird der Compiler der Arduino IDE hier einen Fehler melden
und den Code nicht auf den Microcontroller laden können.
Der sonst falls
Block funktioniert im Prinzip genau wie der falls
Block.
Daher ist es hilfreich sich, falls noch nicht geschehen, zuerst mit diesem auseinander zu setzen.
Auch der sonst falls
Block hat eine Bedingung, die im teste
Parameter vorgegeben werden kann und die entweder wahr (true
) oder falsch (false
) sein kann.
Wenn die Bedingung wahr ist, dann werden Befehle, die im dann
Feld eingetragen wurden ausgeführt, wenn die Bedingung jedoch falsch ist werden diese Befehle übersprungen.
Es können beliebig viele sonst falls
Blöcke unter einen falls
Block gehängt werden.
Die Blöcke werden dann von oben nach unten abgearbeitet. Wenn eine Bedingung nicht erfüllt ist, dann wird die nächste Bedingung getestet und so weiter.
Achtung: Wenn eine Bedingung erfüllt ist, dann werden die nachfolgend angehängten sonst falls
Blöcke übersprungen. Aus einer Kette eines falls
und
einem oder mehreren sonst falls
Blöcken kann immer nur höchstens ein dann
ausgeführt werden.
teste
In den teste
Parameter wird eine Bedingung eingesetzt. Diese kann nur zwei mögliche Zustände haben. Entweder die Bedingung ist wahr (true
) oder falsch (false
).
Es kann ein digitaler Eingang abgefragt, an dem entweder ein Signal anliegt, dann ist dieser wahr und der Code wird ausgeführt oder wenn kein Signal anliegt und die Bedingung nicht erfüllt ist
der Code dann eben übersprungen wird.
Es können auch zwei Variablen oder eine Variable mit einem festen Wert verglichen werden. Zum Beispiel, dass die Temperatur eines Sensors über 28°C liegen muss um einen Pin umzuschalten, der dann einen
Ventilator steuert. Weiter unten wird dies in einem Beispiel erklärt.
dann
In den dann
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 HIGH
oder LOW
schält oder eine Variable, die gesetzt werden soll
oder sogar weitere falls
Blöcke, wobei sich hier auch die Verwendung eines sonst falls
Blocks anbietet.
Beispiel
Für dieses Beispiel ist es hilfreich den analogWrite
Block und den sonst
Block bereits zu kennen.
Nun soll das Beispiel aus der falls
Block-Referenz wieder heran gezogen werden. Wir gehen davon aus, dass eine Variable namens temperatur
angelegt wurde, die die
aktuelle Temperatur in °C angibt.
Es soll ein Ventilator über die Temperatur gesteuert werden.
Der Pin 3 steuert den Ventilator. Dieser soll als analoger Ausgang verwendet werden. Wenn der Pin 3 auf einen Wert von 50 gesetzt wird läuft der Ventilator auf der Stufe 1,
wenn er auf 100 gesetzt wird dann läuft der Ventilator auf der Stufe 2. Wenn der Ausgang auf 0 gesetzt wird ist der Ventilator aus.
Nun hat der Ventilator drei Zustände. Stufe 1, Stufe 2 und aus.
Bei einer Temperatur von über 28°C soll der Ventilator auf der Stufe 2 laufen. Bei einer Temperatur von 24°C bis einschließlich 28°C soll der Ventilator auf der Stufe 1 laufen und
bei einer Temperatur von unter 24°C soll er aus sein.
Für die Zweite Bedingung wird ein sonst falls
Block verwendet.
So könnte das Beispiel in ArduBlock aussehen:
Code
Im Code für den Arduino wird der Baustein mit der Funktion else if(teste){dann}
umgesetzt. ("else if" ist Englisch und heißt übersetzt "sonst wenn" oder "sonst falls").
Wo hier teste
eingetragen wurde müsste dann natürlich die zu überprüfende Bedingung eingetragen werden.
Wo hier dann
eingetragen ist müssen dann natürlich die auszuführenden Befehle eingetragen werden.
Im Code würde das Beispiel dann folgendermaßen aussehen:
if (( temperatur > 28 )) {
analogWrite(3 , 100);
}
else if(( ( temperatur <= 28 ) && ( temperatur >= 24 ) )) {
analogWrite(3 , 50);
}
else {
analogWrite(3 , 0);
}