VEX Controller
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
| Axis | Physical Input | Common Use |
|---|---|---|
| Axis 3 | Left stick up/down | Forward/back drive |
| Axis 1 | Right stick left/right | Turning |
| Axis 2 | Right stick up/down | Lift or secondary mechanism |
| Axis 4 | Left stick left/right | Strafe (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:
| Input | Action |
|---|---|
| Left stick up/down | Drive forward/back |
| Right stick left/right | Turn |
| L1 | Intake spin forward |
| L2 | Intake spin reverse |
| R1 | Lift up |
| R2 | Lift down |
| A | Score sequence macro |
| B | Lift emergency stop |