Netduino home hardware projects downloads community

Jump to content

The Netduino forums have been replaced by new forums at This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.

How to push game controller buttons?

Relay Controller Button

  • Please log in to reply
2 replies to this topic

#1 Small Chair

Small Chair

    New Member

  • Members
  • Pip
  • 1 posts

Posted 02 December 2014 - 05:36 AM

Hello gurus! I am hoping I have a very simple question for you.


I am a software developer and want to create a project where I can "press" the various buttons on a game controller. I plan on opening the controller and closing the circuit of each button as needed, rather than building something that has to physically press down on the buttons.


Pressing buttons will be controlled by logic in the program. I think I'm okay with this part. It's the electronics part that I'm clueless about.


How can I acheive this? I think I need a relay, probably many? Do I need any resistors? There's 6-8 buttons on a controller and I'd like to control up to 4 controlllers. I have ordered a Netduino Plus 2.





#2 Zoot


    Advanced Member

  • Members
  • PipPipPip
  • 31 posts

Posted 13 December 2014 - 04:34 PM

To use relays, the circuitry would be quite complicated in order to protect the netduino from damage, though it could be done, it's probably overkill for what you're trying to do.  Not to mention costly.  Relays can be expensive.


Most of those types of controller buttons work by closing a circuit to ground.  If you look at the pads on the board where the buttons are, you can see they are split in half.  One side is usually ground, the other side is what's called the "active" side.  The circuit is activated (or the button "pushed") by connecting the two pads together.  This type of circuit can be fooled by providing a logic signal to the active side using the netduino and a transistor to connect the active side to the logic level required, most likely ground.


It's an ambitious project, and connecting four controllers would likely take a 74HC595 shift register or two to provide the necessary outputs to control all four controllers.  I'll see if I can whip together a circuit that explains how to drive the buttons.  Stay tuned.

#3 Zoot


    Advanced Member

  • Members
  • PipPipPip
  • 31 posts

Posted 13 December 2014 - 05:22 PM

I drew up a little circuit to explain what I meant in the previous post.  It's how to implement a Netduino button pusher:


Attached File  Button Capture.PNG   8.85KB   0 downloads

I'm assuming that the button on the controller closes to ground when pushed.  The ground of the Netduino circuit and the ground on the controller must be tied together for this to work.  The output pin of the Netduino goes into the base of transistor Q1 via a 4.7k resistor, and the transistor's output (the collector) is pulled to 3.3V or 5V (depending on the supply) by the 10k resistor.  The 10k resistor may not be needed if the active side of the button is already pulled up to the supply voltage on the controller.  In that case just omit it.
The circuit works by setting the Netduino pin to a high level, or "1".  This makes the transistor conduct causing the output of the transistor to connect to ground, activating the controller's button circuit as though you had pressed the button.  The connection to the active side of the button needs to be soldered to the button pad.
You would need a circuit like this for every button that you wanted to activate on the controller, and probably a shift register to handle all of the outputs.  That way, you can use a minimal amount of pins on the Netduino to run the circuit, and drive many buttons at the same time.
Hope this helps.

Also tagged with one or more of these keywords: Relay, Controller, Button

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.