The Controller as a User Interface
Remotely Controlling the Robot
We most often use remote controls to interact with our televisions. We press buttons that make the television display a channel or information/access screen that we want. Technically, your television's remote control is a UI. However, it is a much less sophisticated UI than the one that your smartphone uses. Because it's less sophisticated, it is usually electrical engineers, not UI engineers, that design television remotes. Because of their training, electrical engineers look at the problem of adding new features to a remote control as a circuit problem: how to add a new button to control some new feature on your television. They don't consider the usability of the new button in relation to the other buttons.
Programming your V5 Controller is much more sophisticated. During the Driver Controlled matches of a competition, you want your driver/team to have as many advantages as possible. So you can program the buttons and joysticks to do more than one simple behavior. And, you can program them to do complex behaviors when buttons/joysticks are used in combination-similar to how some gaming controllers work. As the programmer of your Controller, you consider-like a UI Engineer would-which buttons to use in combination by figuring out how your fingers and hands would need to be placed in order to reach all of the buttons involved. You wouldn't want the driver controlling your robot to end up with cramps in her hands.
The programming for your V5 Controller has it check repeatedly on which button(s) is being pressed so that they can have the robot perform the appropriate behavior(s). Consider that there could be very many nested conditional statements within the Controller's project when using combinations of presses, like the following example: If the A button is pressed and the B button is pressed, do this behavior. If the A button is pressed, the B button is pressed, and the left joystick is pushed downward, do this behavior. Else (only A is pressed), do this behavior. Consider how many more combinations of conditionals are needed to take into account all of the other buttons and their combinations that are available on the Controller.
Of course, as you program more complex behaviors into the functioning of the Controller, the project gets closer to having the robot be autonomous. So a competition team needs to figure out which are the best behaviors to program into their Controllers as complex sequences and which behaviors are best left decomposed into multiple parts so that the Controller lets the driver (user) have more control over the speed and accuracy of the behavior.