Python error


I'm new to the world of Arduino, so when I found a cool project where the a USB joystick can control a servo via "python 2.7". Thinking that it would be eazy. I jumped right in.

Two weeks later, and countless "Google" searches. I'm still wonder what the hell is

pygame.joystick.init() AttributeError: 'module' object has no attribute 'joystick'

Anyone here have any idea how to resolve this?

I tried the following - re-installing Python - copying the file to Lib - Different PC and ver of software

Any advice would be appreciated.

just a thought but I usually get this message if I did not import all necessary modules. Do you have something like:

import pygame

in your code?

Is pygame in the python path. Take a look at:


Here the code in “red” :-/

#!/usr/bin/env python

created 19 December 2007

copyleft 2007 Brian D. Wendt

code adapted from:

NOTE: This script requires the following Python modules:

pyserial -

pygame -

Win32 users may also need:

pywin32 -

import serial
import pygame

allow multiple joysticks

joy =

Arduino USB port address (try “COM5” on Win32)

usbport = “COM8”

define usb serial connection to Arduino

ser = serial.Serial(usbport, 9600)

handle joystick event

def handleJoyEvent(e):
if e.type == pygame.JOYAXISMOTION:
axis = “unknown”
if (e.dict[‘axis’] == 0):
axis = “X”

if (e.dict[‘axis’] == 1):
axis = “Y”

if (e.dict[‘axis’] == 2):
axis = “Throttle”

if (e.dict[‘axis’] == 3):
axis = “Z”

if (axis != “unknown”):
str = “Axis: %s; Value: %f” % (axis, e.dict[‘value’])

uncomment to debug

#output(str, e.dict[‘joy’])

Arduino joystick-servo hack

if (axis == “X”):
pos = e.dict[‘value’]

convert joystick position to servo increment, 0-180

move = round(pos * 90, 0)
if (move < 0):
servo = int(90 - abs(move))
servo = int(move + 90)

convert position to ASCII character

servoPosition = chr(servo)

and send to Arduino over serial connection


uncomment to debug

#print servo, servoPosition

elif e.type == pygame.JOYBUTTONDOWN:
str = “Button: %d” % (e.dict[‘button’])

uncomment to debug

#output(str, e.dict[‘joy’])

Button 0 (trigger) to quit

if (e.dict[‘button’] == 0):
print “Bye!\n”

print the joystick position

def output(line, stick):
print “Joystick: %d; %s” % (stick, line)

wait for joystick input

def joystickControl():
while True:
e = pygame.event.wait()
if (e.type == pygame.JOYAXISMOTION or e.type == pygame.JOYBUTTONDOWN):

main method

def main():

initialize pygame

if not pygame.joystick.get_count():
print “\nPlease connect a joystick and run again.\n”
print “\n%d joystick(s) detected.” % pygame.joystick.get_count()
for i in range(pygame.joystick.get_count()):
myjoy = pygame.joystick.Joystick(i)
print "Joystick %d: " % (i) + joy*.get_name()*

  • print “Depress trigger (button 0) to quit.\n”*
  • run joystick listener loop*

  • joystickControl()*
    # allow use as a module or standalone script
    if name == “main”:
  • main()*

If this code is from 2007 it's possible that Pygame was refactored into different submodules and pygame.joystick went away. Maybe you can try installing a version of Pygame from 2007, though there's no guarantee that will work.

Either that or start digging into the documentation, see what happened to pygame.joystick (maybe it got buried into something like pygame.devices.joystick) and make the necessary modifications.

Just a thought...2007 is eons ago in the world of software libraries.

-- Check out our new shield:

Thanks all