Overview

The VEX controller is the handheld device your driver uses to control the robot during the driver control period. It connects wirelessly to the VEX Brain and sends joystick positions and button presses in real time.

Why does this matter?

Understanding the controller’s inputs helps you design a control scheme that is fast, comfortable, and easy for your driver to use under competition pressure.

VEX IQ Controller

The VEX IQ controller has:

  • 2 joysticks (left and right) — each with an up/down axis and a left/right axis
  • 4 directional buttons (left side) — Up, Down, Left, Right
  • 4 action buttons (right side) — E-Up, E-Down, F-Up, F-Down
  • L buttons (two on the back left) — LUp and LDown
  • R buttons (two on the back right) — RUp and RDown

The joysticks return a value from -100 to +100:

  • 0 = centered (not touched)
  • +100 = fully pushed forward or right
  • -100 = fully pushed back or left

Reading IQ Controller Inputs (Python)

# Joystick axes
left_updown  = controller.axis3.position()   # Left stick up/down
left_lr      = controller.axis4.position()   # Left stick left/right
right_updown = controller.axis2.position()   # Right stick up/down
right_lr     = controller.axis1.position()   # Right stick left/right

# Buttons — returns True if pressed, False if not
l_up    = controller.buttonLUp.pressing()
l_down  = controller.buttonLDown.pressing()
r_up    = controller.buttonRUp.pressing()
r_down  = controller.buttonRDown.pressing()
e_up    = controller.buttonEUp.pressing()
e_down  = controller.buttonEDown.pressing()

Common VEX IQ Axis Assignments

AxisPhysical InputCommon Use
Axis 3Left stick up/downForward/back drive
Axis 1Right stick left/rightTurning
Axis 2Right stick up/downLift or secondary mechanism
Axis 4Left stick left/rightStrafe (H-drive or mecanum)

VEX V5 Controller

The VEX V5 controller has:

  • 2 joysticks — left and right, each with two axes
  • 4 trigger buttons on the back — L1, L2 (left shoulder), R1, R2 (right shoulder)
  • 4 face buttons — A, B, X, Y
  • Directional pad — Up, Down, Left, Right
  • Rumble motor — can vibrate to alert the driver during a match

The joystick axes return -100 to +100, same as VEX IQ.

Reading V5 Controller Inputs (C++)

// Joystick axes
int leftUpDown  = Controller1.Axis3.position();  // Left stick up/down
int leftLR      = Controller1.Axis4.position();  // Left stick left/right
int rightUpDown = Controller1.Axis2.position();  // Right stick up/down
int rightLR     = Controller1.Axis1.position();  // Right stick left/right

// Buttons — returns true if pressed
bool l1 = Controller1.ButtonL1.pressing();
bool l2 = Controller1.ButtonL2.pressing();
bool r1 = Controller1.ButtonR1.pressing();
bool r2 = Controller1.ButtonR2.pressing();
bool a  = Controller1.ButtonA.pressing();
bool b  = Controller1.ButtonB.pressing();

Rumble Alerts (V5 only)

You can make the controller vibrate to alert your driver — useful for endgame countdowns or when the robot picks up an object.

// Rumble pattern: "." is short, "-" is long
Controller1.rumble(".-");  // short-long pattern
Controller1.rumble("...");  // three short buzzes

This is very helpful for the last 30 seconds of a match when the driver needs to focus on the field, not the Brain screen timer.

Wireless Connection

The VEX controller connects wirelessly to the Brain using a VEXnet radio (V5) or a built-in radio (IQ). The connection is:

  • Established automatically when both the controller and Brain are powered on and paired
  • Lost if the controller goes out of range, the battery dies, or the Brain is unpowered
  • Indicated by the signal strength icon on both the controller and Brain screens

At competition, field control cables plug directly into the Brain — but the controller still communicates wirelessly to the robot during driver control.

Controller Battery

Keep the controller charged before every competition and practice session. A low-battery controller can:

  • Introduce input lag (delayed response)
  • Drop the wireless connection mid-match
  • Produce noisy joystick readings

The VEX IQ controller uses AA batteries. The V5 controller has a built-in rechargeable battery charged via USB.

Designing a Control Scheme

A control scheme maps every button and joystick axis to a robot function. Design yours before you start coding.

Tips for a good control scheme

  • Most-used actions go on trigger buttons (L1, L2, R1, R2) — these are easy to press while also moving the joystick.
  • Quick-access actions go on face buttons (A, B, X, Y) — easy to hit fast but harder to reach while driving.
  • Infrequently used actions go on the D-pad — slower to reach.
  • Write it down. Create a reference card your driver can study before matches.

Example V5 control scheme:

InputAction
Left stick up/downDrive forward/back
Right stick left/rightTurn
L1Intake spin forward
L2Intake spin reverse
R1Lift up
R2Lift down
AScore sequence macro
BLift emergency stop