Every console has a different style of controller. So the exact way that you connect to the controller will depend on the system that you are working with. But in general, most buttons are wired up the same way. The button is a normally open momentary switch. One side of the switch is wired to ground. The other side of the switch is wired to a pull-up resistor
and to a pin on the controller's IC chip. When the button isn't being pressed, the pull-up resistor makes the output of the switch HIGH
. But when the button is pressed, the switch connects to ground and brings the output LOW
. We can simulate the effect of the button being pressed by connecting an Arduino to the switch's output pin and sending a LOW signal to the controller. The controller's IC chip will register this LOW signal the same as if the button had been pressed.
So we need to find a way to connect the output pin of each switch to the Arduino. Open up the controller housing and observe how the circuit is laid out. Look for locations that are connected to the output of the button where it would be easy to solder a wire. If you are lucky, you might find unused through-hole points already on the board. But most likely you will either need make surface mount connects or make your own through-hole connection locations.
On my controller I found that there where large contacts at the output of every button. This was most likely used to compliance testing in the factory. I thought that these would make good points to make connections. To make it easier to connect to these points, I drilled holes in each one to turn them into through-hole connectors. This also made the solder joints more secure.