Controls#

Introduction#

The Control blocks in VEXcode AIR manage the flow of a project by handling loops, conditions, delays, and stopping execution. Below is a list of available blocks:

  • wait — Pauses execution for a specific duration.

  • wait until — Pauses execution until a specified condition is met.

  • repeat — Repeats enclosed blocks a specific number of times.

  • forever — Repeats enclosed blocks indefinitely.

  • repeat until — Repeats enclosed blocks until a condition is met.

  • while — Repeats enclosed blocks while a condition remains true.

  • if — Runs enclosed blocks if a condition is true.

  • if / else — Runs one set of blocks if a condition is true, otherwise runs another.

  • if / else if / else — Runs different sets of blocks depending on multiple conditions.

  • break — Exits a loop immediately.

  • stop project — Ends the execution of the project.

wait#

The wait block pauses for a specific amount of time before moving to the next block.

wait stack block#
    wait (1) seconds

Parameters

Description

time

The amount of time to wait, as a positive integer or decimal in seconds.

Example

    when started :: hat events
    [Fly for 1 second.]
    take off to (500) [mm v] ▶
    wait [1] seconds
    land ▶

wait until#

The wait until block pauses execution until a specified condition is met before proceeding to the next block.

wait until stack block#
    wait until <>

Parameters

Description

condition

The condition that must be met before moving on to the next block. If it evaluates as:

  • False - The wait continues
  • True - The wait stops and move on to the next block

Example

    when started :: hat events
    [Hover at 200 mm.]
    take off to [500] [mm v] ▶
    climb [down v]
    wait until <(distance [downward v] range in [mm v]) [math_less_than v] [200]>
    hover
    wait (3) seconds
    land ▶

repeat#

The repeat block runs the blocks inside it a set number of times.

repeat c block#
    repeat [10]
    end

Parameters

Description

times

A whole number that sets how many times the repeat block runs.

Example

    when started :: hat events
    [Move back and forth four times then land.]
    take off to [500] [mm v] ▶
    repeat (4)
        move [forward v] for (500) [mm v] ▶
        wait (1) seconds
        move [backward v] for (500) [mm v] ▶
        wait (1) seconds
    end
    land ▶ 

forever#

The forever block keeps running the blocks inside it again and again without stopping.

forever c block#
    forever
    end

Parameters

Description

This block has no parameters.

Example

    when started :: hat events
    [Move with controller.]
    take off to [500] [mm v] ▶
    forever
        move with controller
    end

repeat until#

The repeat until block executes the enclosed blocks repeatedly while the condition evaluates as False.

repeat until block#
    repeat until <>
    end

Parameters

Description

condition

An expression or variable that is evaluated before each iteration. If it evaluates as:

  • False - The loop continues
  • True - The loop stops

Example

    when started :: hat events
    [Move with controller until button 7 is pressed.]
    take off to [500] [mm v] ▶
    repeat until <controller button [7 v] pressed?>
    move with controller
    end
    land ▶

while#

The while block executes the enclosed blocks repeatedly while the condition evaluates as True.

while c block#
    while <>
    end

Parameters

Description

condition

An expression or variable that is evaluated before each iteration. If it evaluates as:

  • True - The loop continues
  • False - The loop stops

Example

    when started :: hat events
    [Hover at 200 mm.]
    take off to [500] [mm v] ▶
    while <(distance [downward v] range in [mm v]) [math_greater_than v] [200]>
        climb [down v]
    end
    hover
    wait (3) seconds
    land ▶

if#

The if block executes the enclosed block of code if the condition evaluates as True.

if block#
    if <> then
    end

Parameters

Description

condition

An expression or variable that is evaluated when the statement runs. If it evaluates as:

  • True - The code inside the if block executes
  • False - The block is skipped

Example

    when started :: hat events
    [Take a picture when button 5 is pressed.]
    take off to [500] [mm v] ▶
    forever
        move with controller
        if <controller button [5 v] pressed?> then
            capture image on [forward v] camera
        end
    end

if / else#

The if / else block determines which enclosed block of code runs based on whether the condition evaluates as True or False.

if then else block#
    if <> then
    else
    end

Parameters

Description

condition

An expression or variable that is evaluated when the statement runs. If it evaluates as:

  • True - The code inside the if block executes
  • False - The code inside the else block executes instead

Example

    when started :: hat events
    [Climb when the left joystick is moved up.]
    take off to [500] [mm v] ▶
    forever
        if <(controller axis [1 v] position) [> v] [0]> then
            climb [up v]
        else
            hover
    end

if / else if / else#

The if / else if / else block structure selects which enclosed block of code runs based on conditions:

  • if runs its block of code if the condition evaluates as True.

  • else if checks additional conditions only if all previous conditions evaluated as False. Multiple else if statements can be used.

  • else runs its block of code only if none of the previous conditions evaluated as True.

if else if else block#
    if <> then
    else if <> then
    else 
    end

Parameters

Description

condition

An expression or variable that is evaluated when the statement runs. The first condition that evaluates as:

  • True - Determines which block of code executes
  • False - If none are True, the else block of code runs

Example

    when started :: hat events
    [Move the drone up or down based on the position of the joystick.]
    take off to [500] [mm v] ▶
    forever
    if <(controller axis [1 v] position) [math_greater_than v] [0]> then
        move [forward v]
    else if <(controller axis [1 v] position) [math_less_than v] [0]> then
        move [reverse v]
    else
        hover
    end
    end

break#

The break block exits a loop immediately.

Loops include:

break stack block#
    break

Parameters

Description

This block has no parameters.

Example

when started :: hat events
    [Land when button 5 is pressed.]
    take off to [500] [mm v] ▶
    forever
        move with controller
        if <controller button [5 v] pressed?> then
            break
        end
    end
    land ▶

stop project#

The stop project block ends a running project.

stop project block#
    stop project :: control cap

Parameters

Description

This block has no parameters.

Example

when started :: hat events
    [Stop motors after landing.]
    take off to [500] [mm v] ▶
    wait [1] seconds
    land ▶
    stop project