Interfacing with the Pi can be done using a driver that is available called xboxdrv at http://pingus.seul.org/~grumbel/xboxdrv/. This driver takes care of reading raw controller input, but doesn't provide a useful interface for scripting. I've created a Python class that makes it easy to read all of XBox controller inputs in real-time. Digital inputs, such as the A, B, X, and Y buttons return 1 when pressed (True) or 0 when not pressed (False). Analog inputs return floating point values between -1.0 and 1.0. Here's a simple example of how to use the class:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import xbox | |
joy = xbox.Joystick() #Initialize joystick | |
if joy.A(): #Test state of the A button (1=pressed, 0=not pressed) | |
print 'A button pressed' | |
x_axis = joy.leftX() #X-axis of the left stick (values -1.0 to 1.0) | |
(x,y) = joy.leftStick() #Returns tuple containing left X and Y axes (values -1.0 to 1.0) | |
trigger = joy.rightTrigger() #Right trigger position (values 0 to 1.0) | |
joy.close() #Cleanup before exit |
Source code, setup instructions and more sample code for my xbox.py module are available on github
Note: xboxdrv will require sudo privileges to access the USB device. There are workarounds to this, which can be found if you Google around.
Hello. Thank you for sharing this, it's very useful for a project I'm working on. I have run into a problem whereby the right joystick doesn't output between -1 and 1, but between 1 and 1 instead. This is a pain because I need to use the joystick for steering a robot. Do you know why this might be happening?
ReplyDeleteThanks.
Hi George. Sorry about the bug. It was an error I noticed some time ago, but the fix never made it back to github. I've made the update on github now, so give that a try.
DeleteSteve
It works! Thanks for fixing the bug.
DeleteThanks for your reply. I'll have a look on github.
ReplyDeleteThis saved me. Thank you very much for your effort.
ReplyDeleteHello, when I try to run the script appears to me the following error message: module 'xbox' has no attribute 'Joystick'.
ReplyDeleteThe casino you want the most? | DrMCD
ReplyDeleteIf you're looking to enjoy 계룡 출장마사지 slots and casino games, The Casino has 논산 출장마사지 the 김해 출장샵 For many years, it's operated by the 서산 출장마사지 Microgaming group, 안성 출장안마