Steuerung
Inhaltsübersicht
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);
}
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);
}
}
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);
}
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);
}
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);
}
}
Ä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 });
}
}
}
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();
}