driving with an xbox360 controller

Hello there! My team, 3753, just got back from our regionals, so naturally some of us have lots of thoughts and questions about plans for next year! Our current programmer is a senior and I’m going to be replacing him next year as (probably) our team’s only programmer (it’s a pretty small team – about 12 people total).
This was my first competition so I went around asking all the questions I could think of, and one thing I was told was that in order to use an xbox 360 controller, you have to install a separate driver. What exactly is the driver, where can I get it, does it cost anything, what would I need to do to set it up, etc? Is it a file I just download and put somewhere and we’re good, or does it make things entirely different from joysticks and the ps2-like controllers? Can you use a regular wired x360 controller (and a wireless with the wired attachment thing) or do you have to buy a special one?

P.S. If anyone has any advice on different types of controls (joysticks vs ps2-like controllers vs x360 vs who knows what else), that would also be greatly appreciated. Thanks!

In labview controllers are treated just like joysticks and windows seems to auto install all the drivers you need when you plug in the controller. Just be aware that wireless controllers are not legal.

So I won’t need to do anything? That’s awesome :smiley: What if I program the robot in c++ instead of labview? Is the connection window I saw everyone using labview no matter what the robot’s programmed in?

I know wireless controllers are illegal, but is it legal to use a wireless controller attached wired with this? It treats it just like a wired controller and I could just use one of mine from home, but since we’ve never used controllers, we’re unfamiliar with the rules.

1675 started using Xbox controller this year. I just put an inital commit of our code on Github last night (WARNING: SUPER GROSS, NEEDS CLEANING AND REORGANIZING). Here’s a link to our wrapper class for the controller. We use Java but it is essentially the same for C++.


  • The trigger buttons are their own axis. It stays at 0.0, one trigger makes it go up, one makes it go down. So you can’t really tell whether a number is a mix of the 2 triggers or not. We don’t use them on the robot right now but this code treats a push of the trigger as a boolean button based on whether the axis went up or down. If you use this the triggers will have to be pushed mutually exclusively for intended functionality. (If both are pushed the same amount, neither will evaluate to true).
  • The D-pad has left and right as an axis, and we couldn’t seem to access the up/down D-pad buttons. Our code uses them like buttons because pressing the D-pad buttons makes the axis go to 1.0 / -1.0
  • We found it more intuitive to make up on the Y axis be positive, so all Y axes are flipped in this class.
  • We have an implicit 10% deadzone on all analog stick axes.
  • The “bumpers” are the shoulder buttons.
  • We didn’t program in the Start/Back/Center(XBox Logo) buttons, I just realized.

Except it does not when you don’t have the drivers. You need the standard xbox 360 driver from microsoft’s website: http://www.microsoft.com/hardware/en-us/p/xbox-360-controller-for-windows#support

I do not know anything about the xbox drivers. I believe that the logitech game pad on the andymark site will work fine.

And as far as coding. I believe LabVIEW and C++ treat it just like a Joystick and KNOW Java does, have worked with other Joysticks from many brands on it. (occasional glitch with some types, but overall great performance)