This Instructable shows the steps required to attach a PS3 controller to an Atari 8 bit home computer
The standard Atari joystick can't be beaten for the full on retro gaming experience. Or can it? Controller technology has moved on a bit in the last 35 years. How hard is it to use a PS3 contoller? Will my pet human still suck at Defender?
There's two sides to this; reading the PS3 controller and then telling the Atari what's going on.
The idea here is that the old Atari joystick works by switching on whatever pins correspond to a movement in a particular direction.
All we need to do is replicate this with the Arduino using digitalWrite. Reading the PS3 controller is done by the USB shield.
If anyone's getting a sense of deja vu about this, it's the same technology as the optical mouse instructable
Arduino USB shield
Wires. I'm using Dupont connectors as they plug straight into the USB shield
Female 9 pin D connector
Atari 8 bit computer. I'm using an 800 XL but I expect it to work with anything with a suitable joystick port. It'd be interesting to know if it works with a video consol...
Step 1: Attach the USB Shield
Mount the USB shield on the Arduino as shown in the image. That's it!
During the initial development stages of the Optical Mouse Instructable I tried a cheap knock-off USB shield from Ebay and some other piece of junk from Hobbytronics. Learn from my mistakes; buy the proper components. They might cost a few pounds/dollars more but you save so much aggravation.
Step 2: Program the Arduino
I'm assuming that you know how to program an Arduino. If not, learn! It's a great micro processor and your life will be much better. There's tons of support on the internet, and
https://www.arduino.cc/ is the starting point.
The Arduino Code is attached. I'm going to own up to some 'standing on the shoulders of giants' and not claim this as all my own work. I just hacked a demo file a bit.
You'll also need some libraries
Also take a look at this site
The Atari is a bit slower than the Arduino so the code reduces the sensitivity of the joystick movement and delays the main loop by 15ms. I'm only using the left stick, L2 and R2, but the other PS3 controller buttons and sticks are available with a tiny bit of re-coding.
There are a few limiting factors.
The old Atari joystick is the first as it only has movement and a fire button, so unlike modern controllers, we can't have too many tricks.
I haven't used the PS3 controller shakers; I don't know how much current they draw and there's a risk of damaging the PIA in the Atari. Experiment at your own risk!
Step 3: Add Some Wires
Using the Dupont wires,
connect Arduino pin 3 to pin 6 on the Atari
connect Arduino pin 4 to pin 1 on the Atari
connect Arduino pin 5 to pin 2 on the Atari
connect Arduino pin 6 to pin 3 on the Atari
connect Arduino pin 7 to pin 4 on the Atari
Now plug in the PS3 controller
Step 4: Further Development
I haven't included it, but you could change the Arduino code to have auto fire, use the right stick, or the buttons.
The USB shield doesn't only work with PS3 controllers. You can also plug in other game controllers, USB storage, optical mice, blue tooth dongles, all of which could then be added to your Atari...