Steuerung


Inhaltsübersicht      

Verzögerung

Verzögert die Ausführung des nächsten Code Blocks um eine angegebene Zeit.

await delay()

Beispiel:
- 2 Sekunden Verzögerung

async function startProgram() {
setSpeed(100);
await delay(2);
setSpeed(0);
}
Schleifen

Die for Schleife verwenden wir, wenn die Anzahl der Durchläufe bekannt ist. Das heißt es ist eine Zähler-gesteuerte Schleife. Wir benötigen also immer eine Variable, welche wir zum Zählen der Durchläufe verwenden.

for (Startwert der Zählvariablen; Durchlauf-Bedingung; Operation auf Zählvariable){
// CODE
}

Beispiel:
- 8 Drehungen um 90 Grad mit einer Verzögerung von 0.25 Sekunden

async function startProgram() {
for (var count_1 = 0; count_1 < 8; count_1++) {
await speak('Drehung', true);
setHeading((getHeading() + 90));
await delay(0.25);
}
}
Dauerschleife

Die Dauerschleife wiederholt den Code Abschnitt, solange bis du das Programm beendest.

while (true)
{
// CODE
}

Beispiel:
- Roboter hört sich nicht auf zu Drehen.
while (true)
{
setHeading((getHeading() + 90));
await delay(0.25);
}
Schleife bis

Eine Schleife, die (eigentlich) niemals endet. Bei falscher Verwendung kann sie den Computer völlig auslasten und das Programm zum Absturz bringen. 

while ( !bedingung ) {
// Code wird solange ausgeführt bis "bedingung" wahr ist.
}

Beispiel:
- Beschleunigt bis Geschwindigkeit 80.0 und bremst bei erreichen der Geschwindigkeit ab.

async function startProgram() {
setSpeed(20);
while ( !(getSpeed() === 80.0) )
setSpeed((getSpeed() + 20));
await delay(1.5);
}
setSpeed(0.0);
}
Wenn dann

Programmabschnitt wird ausgeführt, wenn eine gegebene Bedingung wahr ist.

if(bedingung){
//Code
}


Beispiel 1:
- Roboter soll erkennen, dass er geschüttelt wurde.
async function startProgram() { setStabilization(false); setBackLed(255); while (true) { if ((Math.sqrt((getAcceleration().x ** 2) + (getAcceleration().y ** 2) + (getAcceleration().z ** 2)) > 1.4)) { await speak("Shake", false); setMainLed({ r: 0, g: 255, b: 0 }); await delay(1); } await delay(0.025); } }


Beispiel 2:
- Roboter soll erkennen, dass er geschüttelt wurde. (Mit || OR-Operator)
async function startProgram() {
setStabilization(false);
setBackLed(255);
while (true) {
if (((Math.sqrt((getAcceleration().x ** 2) + (getAcceleration().y ** 2) + (getAcceleration().z ** 2)) > 1.4) || (getOrientation().pitch < -45))) {
await speak("Shake or Pitch", false);
setMainLed({ r: 0, g: 255, b: 0 });
await delay(1);
setMainLed({ r: 0, g: 0, b: 0 });
}
await delay(0.025);
}
}


Beispiel 3:
- Roboter soll erkennen, dass er geschüttelt wurde. (Mit && UND-Operator)
async function startProgram() {
setStabilization(false);
setBackLed(255);
while (true) {
if (((Math.sqrt((getAcceleration().x ** 2) + (getAcceleration().y ** 2) + (getAcceleration().z ** 2)) > 1.4) && (getOrientation().pitch < -45))) {
await speak("Shake or Pitch", false);
setMainLed({ r: 0, g: 255, b: 0 });
await delay(1);
setMainLed({ r: 0, g: 0, b: 0 });
}
await delay(0.025);
}
}
Wenn ansonsten

Ähnlich wie die If-Schleife (Wenn dann), doch diesmal können wir eine Alternative mittels „else“ setzen, wenn die Bedingung nicht erfüllt wird.

if(bedingung){
//Code wenn Bedingung erfüllt
} else {
//Code wenn Bedingung nicht erfüllt
}

Beispiel 1:
- Farbe je nach Ausrichtung

async function startProgram() {

if( getHeading() > 180 ) {
setMainLed({ r: 255, g: 0, b: 0 });
} else {
setMainLed({ r: 0, g: 255, b: 0 });
}
}

Beispiel 2:
- Farbe je nach Ausrichtung (if else Verschachtelung)

async function startProgram(){

if( getHeading() > 180 ){
setMainLed({ r: 255, g: 0, b: 0 });
} else {
if ( getHeading() > 90) {
setMainLed({ r: 0, g: 255, b: 0 });
} else {
setMainLed({ r: 0, g: 0, b: 255 });
}
}
}
Programm schließen

Beendet das Programm. Ähnlich wie das Berühren der stop Taste.

exitProgram()

Beispiel:

async function startProgram(){
await delay(1);
await speak("Programm wird beendet", true);
exitProgram();
}