Events#

When Started#

The When Started block is used to run the attached stack of blocks when the project is started.

VEXcode blocks stack of code containing a when started block.#
    when started :: hat events

A when started event will run when the project is started from the start button in VEXcode.

All new projects will automatically include a when started block.

In this example, the When Started block is used to start the project. When the start button is selected, the robot will drive forward, turn right, and drive forward again.

VEXcode blocks stack of code containing a when started block, a drive forward for 200 mm block, a turn right for 90 degrees block, and a drive forward for 200 mm block.#
    when started :: hat events
    drive [forward v] for (200) [mm v] ▶
    turn [right v] for (90) degrees ▶
    drive [forward v] for (200) [mm v] ▶

When Bumper#

The When Bumper block is used to run the attached stack of blocks when the selected Bumper Switch sensor is pressed or released.

VEXcode blocks stack of code containing a BumperB pressed block.#
    when [BumperB v] [pressed v] :: hat events

Choose which Bumper to use.

A yellow notched block labeled 'when BumperB pressed' with a dropdown menu open showing 'BumperB' selected.

Select which action will trigger the event - pressed or released.

A yellow notched block labeled 'when BumperB pressed' with a dropdown menu open showing 'pressed' selected, and 'released' as an option.

In this example, when the Bumper Switch sensor is pressed, a message will be printed on the Brain.

VEXcode blocks stack of code containing a when BumperB pressed block, and a print Bumper has been pressed. on Brain and set cursor to next row block.#
    when [BumperB v] [pressed v] :: hat events
    print [Bumper has been pressed.] on [Brain v] ◀ and set cursor to next row

When Touch LED#

The When Touch LED block is used to run the selected VEX IQ Touch LED is pressed or released.

VEXcode blocks stack of code containing a TouchLED11 pressed block.#
    when [TouchLED11 v] [pressed v] :: hat events

Choose which Touch LED to use.

A yellow notched block labeled 'when TouchLED11 pressed' with a dropdown menu expanded to show the selected option 'TouchLED11' under the sensor selection.

Select which action will trigger the event - pressed or released.

A yellow notched block labeled 'when TouchLED11 pressed' with a dropdown menu expanded to show options 'pressed' and 'released,' with 'pressed' selected.

In this example, when the Touch LED is pressed, a message will be printed on the Brain.

VEXcode blocks stack of code containing a when TouchLED11 pressed block, and a print Touch LED was pressed. on Brain and set cursor to next row block.#
    when [TouchLED11 v] [pressed v] :: hat events
    print [Touch LED was pressed.] on [Brain v] ◀ and set cursor to next row

When Controller Button#

The When Controller Button block is used to run the attached stack of blocks when the selected IQ (1st gen) Controller Button is pressed or released.

VEXcode blocks stack of code containing a when Controller button E Up pressed block.#
    when Controller button [E Up v] [pressed v] :: hat events

Choose which IQ (1st gen) Controller Button to use.

A yellow notched block labeled 'when Controller button E Up pressed' with a dropdown menu expanded, showing various button options such as 'E Up,' 'E Down,' 'F Up,' 'F Down,' 'L Up,' 'L Down,' 'R Up,' and 'R Down,' with 'E Up' selected.

Select which action will trigger the event block: pressed or released.

A yellow notched block labeled 'when Controller button E Up pressed' with a dropdown menu expanded, showing options 'pressed' and 'released,' with 'pressed' selected.

In this example, pressing the R Up Button on the IQ (1st gen) Controller will print a message to the Brain’s screen.

VEXcode blocks stack of code containing a when Controller button R Up pressed block, and a print R Up button was pressed! on Brain and set cursor to next row block.#
    when Controller button [R Up v] [pressed v] :: hat events
    print [R Up button was pressed!] on [Brain v] ◀ and set cursor to next row

When Controller Axis#

The When Controller Axis block is used to run the attached stack of blocks when the selected IQ (1st gen) Controller joystick axis is moved.

VEXcode blocks stack of code containing a when Controller axis A is changed block.#
    when Controller axis [A v] is changed :: hat events

Choose which IQ (1st gen) Controller joystick axis to use.

A yellow notched block labeled 'when Controller axis A is changed,' with a dropdown menu open, showing options A, B, C, and D, with A selected.

In this example, moving the D joystick axis on the IQ (1st gen) Controller will print a message.

VEXcode blocks stack of code containing a when Controller axis D is changed block, and a print Axis D has changed. on Brain and set cursor to next row block.#
    when Controller axis [D v] is changed :: hat events
    print [Axis D has changed.] on [Brain v] ◀ and set cursor to next row

When Brain Button#

The When Brain Button block is used to run the attached stack of blocks when the selected IQ (1st gen) Brain Button is pressed or released.

VEXcode blocks stack of code containing a when Brain Up button pressed block.#
    when Brain [Up v] button [pressed v] :: hat events

Choose which IQ (1st gen) Brain Button to use.

A yellow notched block labeled 'when Brain Up button pressed' with a dropdown menu open under 'Up,' showing options 'Up,' 'Down,' and 'Check.'"

Select which action will trigger the event block: pressed or released.

A yellow notched block labeled 'when Brain Left button pressed' with a dropdown menu open under 'pressed,' showing options 'pressed' and 'released.'"

In this example, pressing the right Brain Button will print a message to the Brain’s screen.

VEXcode blocks stack of code containing a when Brain Up button pressed block, and a print Up Brain Button was pressed. on Brain and set cursor to next row block.#
    when Brain [Up v] button [pressed v] :: hat events
    print [Up Brain Button was pressed.] on [Brain v] ◀ and set cursor to next row

When Timer#

The When Timer block is used to run the attached stack of blocks when the Brain’s timer is equal to the given value.

VEXcode blocks stack of code containing a when timer > 1 second block.#
    when timer > (1) seconds :: hat events

The Brain’s timer begins at the beginning of each project or whenever the Brain’s timer is reset.

Choose an amount of time. The when timer event will run once the Brain’s timer is equal to the entered amount.

VEXcode blocks stack of code containing a when timer > 3.25 seconds block.#
    when timer > (3.25) seconds :: hat events

In this example, after 5 seconds have passed, the robot will print the message to the Print Console.

VEXcode blocks stack of code containing a when timer > 5 seconds block, and a print 5 seconds have passed block.#
    when timer > (5) seconds :: hat events
    print [5 seconds have passed.] ▶

When I Receive#

The When I Receive block is used to run the attached stack of blocks when the selected message is received from a broadcasted message.

VEXcode blocks stack of code containing a when I receive message1 block.#
    when I receive [message1 v] :: hat events

Choose which message to listen for. A new message can also be created.

A yellow notched block labeled 'when I receive message1' with a dropdown menu open showing options 'New message' and 'message1,' with 'message1' selected.

In this example, the code will continuously check if the Left Sensor Bumper was pressed. Once pressed, the When I Recieve block will trigger once the bumper_press message is received.

VEXcode blocks stack of code containing a when started block, a forever block, an if LeftBumper pressed? then block, and a broadcast bumper_press block.#
    when started :: hat events
    forever
    if <[LeftBumper v] pressed?> then
    broadcast [bumper_press v]
    end
    end
VEXcode blocks stack of code containing a when I receive bumper_press block, and a print Bumper has been pressed block.#
    when I receive [bumper_press v] :: hat events
    print [Bumper has been pressed.] ▶

Broadcast#

The Broadcast block is used to broadcast a message to activate any stacks that begin with a When I Receive block listening for the broadcasted message.

VEXcode blocks stack of code containing a broadcast message1 block.#
    broadcast (message1 v)

The stack that sends the broadcast will continue to run blocks at the same time as other stacks that receive the broadcasted message.

Choose which message to broadcast. A new message can also be created.

A yellow notched block labeled 'broadcast message1' with a rounded dropdown menu expanded, showing options for 'New message' and 'message1,' with 'message1' selected.

In this example, the code will continuously check if the Left Sensor Bumper was pressed. Once pressed, the Broadcast block will trigger the When I Receive block with the message bumper_press.

VEXcode blocks stack of code containing a when started block, a forever block, an if LeftBumper pressed? then block, and a broadcast bumper_press block.#
    when started :: hat events
    forever
    if <[LeftBumper v] pressed?> then
    broadcast [bumper_press v]
    end
    end
VEXcode blocks stack of code containing a when I receive bumper_press block, and a print Bumper has been pressed block.#
    when I receive [bumper_press v] :: hat events
    print [Bumper has been pressed.] ▶

Broadcast and Wait#

The Broadcast and Wait block is used to broadcast a message to activate any stacks that begin with a When I Receive block listening for the broadcasted message while also pausing the rest of the stack.

This block broadcasts a message to activate any stacks that begin with a when I receive block listening for the broadcasted message while also pausing the rest of the stack.

VEXcode blocks stack of code containing a broadcast message1 block.#
    broadcast (message1 v) and wait

The stack that sends the broadcast and wait will pause until the other stacks that receive the broadcasted message have completed.

Choose which message to broadcast. A new message can also be created.

A yellow notched block labeled 'broadcast message1' with an oval-shaped dropdown menu set to 'message1.' The dropdown menu is expanded, showing two options: 'New message' and 'message1,' with 'message1' selected.

In this example, the code will continuously check if the Left Sensor Bumper was pressed. Once pressed, the Broadcast and Wait block will trigger the When I Receive block with the message bumper_press. No code underneath the When Started block will execute until everything underneath the bumper_press When I Receive block is finished.

VEXcode blocks stack of code containing a when started block, a forever block, an if LeftBumper pressed? then block, and a broadcast bumper_press block.#
    when started :: hat events
    forever
    if <[LeftBumper v] pressed?> then
    broadcast [bumper_press v] and wait
    end
    end
VEXcode blocks stack of code containing a when I receive bumper_press block, and a print Bumper has been pressed. block.#
    when I receive [bumper_press v] :: hat events
    turn [right v] for (90) degrees ▶

When Optical Sensor#

The When Optical Sensor block is used to run the attached stack of blocks when the selected Optical Sensor detects or loses an object.

VEXcode blocks stack of code containing a broadcast message1 and wait block.#
    when [Optical7 v] [detects v] an object :: hat events

Choose an Optical Sensor.

A yellow notched block with a dropdown menu open under 'Optical7' showing that 'Optical7' is selected. The block reads 'when Optical7 detects an object,' indicating a trigger for when the Optical7 sensor detects an object.

Choose whether the When Optical detects/loses event is triggered when the sensor detects an object, or loses an object.

A yellow notched block with a dropdown menu open under 'detects' showing that 'detects' is selected. The block reads 'when Optical7 detects an object,' indicating a trigger for when the Optical7 sensor detects an object. The dropdown menu offers the option to switch to 'loses' instead of 'detects.'"

In this example, once the Optical Sensor has detected an object, a message will be printed to the Brain.

VEXcode blocks stack of code containing a when I receive bumper_press block, and a turn right for 90 degrees block.#
    when [Optical7 v] [detects v] an object :: hat events
    print [Optical Sensor has detected an object.] on [Brain v]  ◀ and set cursor to next row