While our robot is able to do a lot autonomously, more often than not we need, or want, to input commands using a gamepad. There is a wide variety of gamepads that are compatible with the Driver Hub. For this tutorial we will be focusing on a generic PS4 controller, such as the, REV USB PS4 Compatible Gamepad, or an Etpark Wired Controller.
To initialize the gamepad that will act as User 1 (gamepad1, in code) press the options button and the Cross/A button on the gamepad at the same time. To initialize User 2 ( gamepad2, in code) press the options button and the Circle/B button at the same time.
All buttons on a gamepad can be programmed to a specific task or behavior. Let's take a look at the breakdown of each button, their associated block name, and the type of data they output:
The gamepad outputs two types of data back to the Control Hub to be used within the program:
Boolean data has two possible values: True and False. These two values can also be represented by On and Off or 1 and 0.
The buttons, bumpers, and triggers on the gamepad provide boolean data to our robot! For example, a button that is not pressed will return a value of False (or 0) and a button that is pressed will return the value True (or 1).
Float data is a number that can include decimal places and positive or negative values.
On the gamepad, the float data returned will be between 1 and -1 for the joystick's position on each axis. Some examples of possible values are 0.44, 0, -0.29, or -1.
PS4 Controllers | Generic USB Gamepad | Blocks | Data Type |
---|---|---|---|
Cross
a
Boolean
Circle
b
Boolean
Triangle
y
Boolean
Square
x
Boolean
Dpad Up
Dpad Up
Boolean
Dpad Down
Dpad Down
Boolean
Dpad Left
Dpad Left
Boolean
Dpad Right
Dpad Right
Boolean
Left Bumper
Left Bumper
Boolean
Right Bumper
Right Bumper
Boolean
Left Trigger
Left Trigger
Float
Right Trigger
Right Trigger
Float
PS
Home
Boolean
Options
Start/Options
Boolean
Share
Back/Share
Boolean
Left Stick Button
Left Stick Button
Boolean
Left Stick X Axis
Left Stick X Axis
Float
Left Stick Y Axis
Left Stick Y Axis
Float
Right Stick Button
Right Stick Button
Boolean
Right Stick X Axis
Right Stick X Axis
Float
Right Stick Y Axis
Right Stick Y Axis
Float