Your controller is the only interface between your driver and the robot. Every match depends on it being charged, mapped, and in your hands — not your pocket.

Wireless: The V5 Brain has a built-in radio. Power on the Brain, power on the controller — they pair automatically when set to the same robot.
Wireless: The V5 Brain has a built-in radio. Power on the Brain, power on the controller, and they pair automatically if set to the same robot. At competitions, the field control system manages pairing.
Tethered: Connect a Smart Cable from the controller's Smart Port to the Brain. Useful for testing in the pit, debugging, or when wireless signal is unreliable.
Common connection mistakes:
Neither is strictly better — pick what your driver is most comfortable with after testing, and then do not change it before competition.
The controller layout is directly tied to your code. Programmers and drivers must review the control map together before finalizing it. After any change to the map, document it in the notebook and run a full practice session before competition.
master.get_digital(DIGITAL_R1). See the Driver Tuning Guide for input curves, deadband, and macro setup.| Problem | Likely Cause | What to Check | Quick Fix |
|---|---|---|---|
| Controller not connecting | Wrong robot selected, or Brain not fully booted | Controller LCD — does it show your robot name? Is the Brain fully on? | Power-cycle Brain, wait 10 s, then power on controller |
| Robot not responding to joystick | Controller paired but driver control not running | Is the competition switch set to "Driver Control"? Is autonomous still running? | Confirm competition mode is active; re-run opcontrol if testing |
| Wrong buttons doing wrong actions | Code doesn't match the agreed control map | Compare the code button assignments against your documented layout | Fix the code and re-upload; update the notebook if the map changed |
| Joystick drift (robot moves when stick is centered) | Physical wear or firmware deadband too small | Check Brain screen joystick values at rest — should be near 0 | Add deadband in code: if(abs(axis) < 10) axis = 0; |
| Low battery warning during match | Controller not charged before competition | LCD battery % — below 20% causes disconnects under load | Charge immediately; have a second controller ready as backup |
| Tether cable loose / no wired connection | Smart cable not fully seated | Click the Smart cable firmly into both ports | Seat the cable until you feel the click; try a different cable if no click |
| Driver confusion during match | Control map changed recently, or driver under-practiced | Is this the same map they practiced with all week? | After match: re-review the map together, run button drills before the next round |
| Screen blank or not updating | No code running display updates, or firmware mismatch | Check if pros::lcd or custom Brain screen code is in the program |
Verify firmware version; re-upload and test outside of competition mode |
Controller decisions are part of the engineering design process. The notebook should show that you made intentional choices — not just "this is where the buttons ended up."
Controller mapped and pre-match routine solid — now tune your input curves and build advanced control logic.
🏎 Driver Control Tuning →