First you have to declare them in the main class
Code:
class BuiltinDefaultCode : public IterativeRobot
{
//Declare Controllers
Joystick *m_Gamepad1;
Joystick *m_Gamepad2;
}
Then initialize them in the main function
Code:
BuiltinDefaultCode(void)
{
//Initialize Controllers
m_Gamepad1 = new Joystick(1);
m_Gamepad2 = new Joystick(2);
}
You then can call the joystick button/axis using various commands. We tend to use the GetRawAxis/Button Function.
WPILib Joystick Doxygen
http://www.virtualroadside.com/WPILi..._joystick.html
Code:
void TeleopDrive(void)
{
m_robotDrive->ArcadeDrive((-m_Gamepad1->GetRawAxis(LEFT_Y)), -(m_Gamepad1->GetRawAxis(RIGHT_X)));
}
void TeleopArmPosition(void)
{
if(m_Gamepad1->GetRawButton(BUTTON_1))
{
ArmPosition(ARM_BRIDGE);
}
}
Just for ease we #define all the different axis/buttons
Code:
//Define Buttons
#define BUTTON_1 1
//Define Axis
#define LEFT_X 1
For reference, here is a map for using GetRawButton/Axis with the Logitech F310:
-Buttons 1-8 are used. They are not labeled, you can try reading all 8 and seeing what maps to what. I know that 9-12 are not used.
Axis 1 -> Left X
Axis 2 -> Left Y
Axis 3 -> Sum of L2 and R2 analog triggers - One is positive, the other is negative, both or neither is 0.
Axis 4 -> Right X
Axis 5 -> Right y
Axis 6 -> D-Pad X (binary like above - Note that you can't read D-Pad Y)