Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   C/C++ (http://www.chiefdelphi.com/forums/forumdisplay.php?f=183)
-   -   Gamepad help (http://www.chiefdelphi.com/forums/showthread.php?t=104417)

Camren 10-03-2012 10:45

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.

Jay Meldrum 12-03-2012 15:52

Re: Gamepad help
 
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)

Alexander Meyer 12-03-2012 18:11

Re: Gamepad help
 
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/sh...ad.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.

Code:

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.


All times are GMT -5. The time now is 17:38.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi