Control#

Introduction#

Control includes functions for timing, program flow, conditional logic, and project termination. These controls let you pause execution, create loops, define logic paths, and end a program.

Functions and Keywords#

Below is a list of available controls, including API functions and C++ keywords:

  • wait – Pauses the project for a set amount of time.

  • for – Repeats a block of code a set number of times.

  • if – Runs a block of code if a condition is true.

  • if/else – Runs one block of code if a condition is true, or a different block if it is false.

  • if/else if/else – Checks multiple conditions in order and runs the first block whose condition is true.

  • while – Repeats a block of code while a condition remains true.

  • break – Exits the current loop immediately.

  • programStop – Ends the project immediately.

wait#

Pauses the project for a specific amount of time before moving to the next line of code.

Available Functions
void wait(
  double time,
  timeUnits units );

Parameters

Parameter

Type

Description

time

double

The amount of time to wait, as a positive double.

units

timeUnits

The unit to represent the time: msec (default) – Milliseconds or seconds

Return Values

This function does not return a value.

Examples
// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();

for#

Repeats a block of code. The counting form runs a set number of times; the range-based form runs once for each item in a collection.

Syntax

1 Counting loop — runs a fixed number of times.

for (int i = 0; i < count; i++) {
   // code block
}

2 Range-based loop — runs once for each item in a collection.

for (type element : collection) {
   // code block
}

Parameters

Parameter

Type

Description

count

int

The number of times that the code block will be repeated.

type

Type Name

The data type of each item in the collection (e.g. int, double).

element

variable

The name of the variable to hold the value of the current item of the loop.

collection

array

The Array (or vector) that holds the items that will be looped through.

Return Values

This control structure does not return a value.

Examples
// Drive in a square
for (int i = 0; i < 4; i++) {
  Drivetrain.driveFor(forward, 100, mm);
  Drivetrain.turnFor(right, 90, degrees);
}

// Drive forward different distances
int distances[] = {100, 150, 200};
for (int d : distances) {
  Drivetrain.driveFor(forward, d, mm);
  wait(0.5, seconds);
}

if#

Runs the enclosed block of code if the condition is true.

Syntax
if (condition) {
  // code block
}

Parameters

Parameter

Type

Description

condition

bool

An expression or variable that is evaluated when the statement runs. If it is true, the code inside the if block runs; if it is false, the block is skipped.

Return Values

This control structure does not return a value.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Display a message once the screen is pressed
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Screen pressed!");
    break;
  }
  wait(5, msec);
}

if/else#

Determines which enclosed block of code runs based on whether the condition is true or false.

Syntax
if (condition) {
  // code block if true
}
else {
  // code block if false
}

Parameters

Parameter

Type

Description

condition

bool

An expression or variable that is evaluated when the statement runs. If it is true, the code inside the if block runs; if it is false, the code inside the else block runs instead.

Return Values

This control structure does not return a value.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Turn the screen green when pressed
    Brain.Screen.clearScreen(green);
  } else {
    Brain.Screen.clearScreen();
  }
}

if/else if/else#

Selects which enclosed block of code runs based on multiple conditions.

Syntax
if (condition) {
  // code block if first condition is true
}
else if (condition) {
  // code block if second condition is true
}
else {
  // code block if no conditions are true
}

Parameters

Parameter

Type

Description

condition

bool

An expression or variable that is evaluated when the statement runs. The first condition that is true determines which block runs; if none are true, the else block runs.

Return Values

This control structure does not return a value.

Notes
  • if runs its block if the condition is true.

  • else if checks additional conditions only if all previous conditions are false. Multiple else if statements can be used.

  • else runs its block only if none of the previous conditions are true.

Examples
while (true) {
  // Turn screen blue if pressed on the left half
  if (Brain.Screen.pressing() && Brain.Screen.xPosition() < 240) {
    Brain.Screen.clearScreen(blue);

  // Turn screen green if pressed on the right half
  } else if (Brain.Screen.pressing() && Brain.Screen.xPosition() > 240) {
    Brain.Screen.clearScreen(green);

  } else {
    Brain.Screen.clearScreen();
  }

  wait(20, msec);
}

while#

Repeatedly runs code as long as the condition is true.

Syntax
while (condition) {
  // code block
}

Parameters

Parameter

Type

Description

condition

bool

An expression or variable that is evaluated before each iteration. If it is true, the loop continues; if it is false, the loop stops.

Return Values

This control structure does not return a value.

Notes
  • It can also be used like a “Wait until” by adding ! before the condition, as shown in the examples below.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Turn the screen green whenever it's pressed
    Brain.Screen.clearScreen(green);
  } else {
    Brain.Screen.clearScreen();
  }
}

// Wait until the screen is pressed to turn it green
while (!Brain.Screen.pressing()) {
  wait(20, msec);
}

Brain.Screen.clearScreen(green);

break#

Exits the current loop immediately. If in a nested loop, break exits the innermost loop.

Syntax
break;

Parameters

This statement does not accept any parameters.

Return Values

This statement does not return a value.

Examples
while (true) {

  // Press the screen to pause on a color
  Brain.Screen.clearScreen(red);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    break;
  }

  Brain.Screen.clearScreen(green);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    break;
  }
}

programStop#

Ends a project immediately.

Syntax
Brain.programStop();

Parameters

This statement does not accept any parameters.

Return Values

This statement does not return a value.

Examples
while (true) {

  // Press the screen to end the project
  Brain.Screen.clearScreen(red);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    Brain.programStop();
  }

  Brain.Screen.clearScreen(green);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    Brain.programStop();
  }
}