PS1 Controller Joysticks with Arduino by Finnio
Featured
P1000817.JPG
Idea: To take one of my old Playstation 1 controllers and extract the dual thumbstick setup so that it can be easily used in a microcontroller project (in my case: with the Arduino) without extra libraries or drivers that you would need if you want to use the entire controller.

Please let me know what you think or if you have questions/criticism for me! I'm always looking to learn new things.

Required materials:
              ~ Playstation 1 controller
              ~ Soldering Iron
              ~ Solder
              ~ Knife
              ~ Wire strippers/cutters
              ~ Electrical Tape
              ~ Small Phillips head screwdriver
              ~ Two mid-value resistors (for pushbutton cicuits)
              ~ Third Hand (not absolutely necessary but makes soldering small things much much easier)
              ~ 22 gauge wire

Video Demo:


Demo code (copy and paste the following text into the Arduino IDE):

const byte leftClick = 2; //assign the pins for the buttons
const byte rightClick = 3;
const byte leftVert = A2;
//assign the pins for the pots
const byte leftHor = A3;
const byte rightVert = A0;
const byte rightHor = A1;

int delayTime = 50;
//so the serial output is more readable

void setup(){

pinMode(leftClick, INPUT);
//set button pins to input
pinMode(rightClick, INPUT);

Serial.begin(9600);
//lets arduino send text to computer
}

void loop(){
//output formatted as leftHorizontal, leftVertical, leftButton, rightButton, rightHorizontal, rightVertical
Serial.print(analogRead(leftHor));
Serial.print(", ");
Serial.print(analogRead(leftVert));

Serial.print(" ");
Serial.print(digitalRead(leftClick));
Serial.print(" ");
Serial.print(digitalRead(rightClick));
Serial.print(" ");

Serial.print(analogRead(rightHor));
Serial.print(", ");
Serial.println(analogRead(rightVert));

delay(delayTime);
}

 

 
Remove these adsRemove these ads by Signing Up

Step 1: [Figuratively] Rip it Apart

P1000799.JPG
P1000781.JPG
P1000782.JPG
P1000783.JPG
The controller is really easy to take apart. First unscrew the 7 Phillips head screws on the outside of the controller. When you open it up, you'll see one more screw on the right of a clear plastic piece (the plastic piece just reflects a small LED that's mounted on the main PCB) which is necessary to screw everything back together (if you're not planning on using the controller case again, you can just toss it). Unscrew the last screw and cut the white wire ribbon holding the thumbsticks to the main PCB (cut it so that you have a lot of wire ribbon on your end--it makes the soldering much easier).

I could have desoldered the joysticks and buttons and used them individually, but I wanted them together as a whole since it's a good way to have really compact dual joysticks for a future project (most likely a wireless robot).


Some things to note: there are two different sized rumble motors you can salvage as well as the L1 and R1 shoulder buttons which are in their own casing. I took the motors but tossed the shoulder buttons because I don't plan on ever using them, but someone might find a use.
I haven't tried finding the specs for the motors yet, but I assume it must be around 5v. If anyone knows, let me know.
yash manian says: Aug 12, 2012. 3:00 AM
can i do the same with a PS2 dualshock 2 controller??
biomech75 says: Apr 19, 2012. 11:54 AM
It an awesome project but the connections are not clear for:

analog board connections
connection from analog to Arduino board

;)
emihackr97 says: Oct 31, 2011. 7:58 AM
Hi, just a little tip, did you know you can DIGITALLY interface the ps1 controller to your arduino?
it's really easy, there's even a library for it, and you need less pins and have info abaut ALL the buttons.
Google it
Finnio (author) says: Jan 21, 2012. 11:44 AM
The idea was to reverse engineer just the joysticks and their PCB so that they can be used in any project and on any platform without the need for special libraries.

It's only an arbitrary coincidence that I used the Arduino platform to demonstrate the results of figuring out which wires are connected to each component. I could have just as easily used a PIC microcontroller, or maybe created some sort of interactive LED art display in a purely analog circuit.

Even something as simple as two analog joysticks have infinite potential project implementations :)
atif khair says: Nov 17, 2011. 8:14 AM
Arduino chip are place inside the playstation joystick that understand what command is given by user.
Jaycon
TobaTobias says: Nov 11, 2011. 8:17 PM
Great projects! Very nicely done. I am going to give it a shot.
I would love to see what projects you do with the joysticks!
axeman911 says: Jun 17, 2011. 2:24 PM
hi, my controller is the H late version so my wires are a bit different and there are a total of 16 pins instead of 8 so should i just put two pins together to get a total of a wires?
PyroMonger says: Jun 13, 2011. 4:32 AM
This is the sort of project ive been looking for, for a while. Do u think this could be improvised into an RC project via arduino ethernet shield or somewhere along those lines?
Great Project!
Finnio (author) says: Jun 13, 2011. 8:05 AM
I would think so. I don't personally have experience with making the Arduino wireless, but it's definitely a topic of interest and something I'm planning on doing in the future so that I can finally put some of my motors to use in a fun way.

Part of why I only took the joysticks from the controller is so that they can be interfaced with anything that any other potentiometers could since it's just giving you analog signals in the end.
jrossetti says: Jun 10, 2011. 5:58 AM
Awesome work!
Finnio (author) says: Jun 10, 2011. 9:11 AM
Thanks! It was a little side project so that I could clear my mind before getting back to work on my current long-term project.
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!