Gamepad help

Hello

Im semi new to using wind-river though i do a bit of visual studio work so I understand the terminology. My current project is programming a gamepad to work im pretty sure it is a logitech f310 but i can adapt code to work for which ever one i have. So can anyone give me some example code so i can see what i need to work on.

First you have to declare them in the main class


class BuiltinDefaultCode : public IterativeRobot
{
        //Declare Controllers
        Joystick *m_Gamepad1;
        Joystick *m_Gamepad2;
}

Then initialize them in the main function


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/WPILib/class_joystick.html


 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


//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)

If you do have the F310, I wrote a class a while back to make using it easier. You can find it here:

http://www.chiefdelphi.com/forums/showthread.php?t=90022

If you’d like to write your own code, you can at least use it for the axis and button mappings. If not, usage is very similar to a regular WPILib Joystick.


F310 *gamepad = new F310(1);
float leftX = gamepad->GetX(F310::kLeftStick);
float rightY = gamepad->GetY(F310::kRightStick);

bool leftTrigger = gamepad->GetButton(F310::kLeftTrigger);

delete gamepad;
gamepad = NULL;

jsmeldru, perhaps we have different versions of the F310? I’m able to read all 12 buttons as well as both DPad axes.