# How to programatically simulate a click on a capacitance-sensitive button?

I am tearing apart a SONY HT-XT1, which has capacitive buttons to put it in a different case for a project:

see here http://icdn2.digitaltrends.com/image/sony-ht-xt1-front-corner-buttons-1500x1000.jpg?ver=1

I've taken it apart already and am now met with a motherboard with 3 pads on it. Touch the pad and the switch flips. I want to be able to control these buttons with an arduino, but I'm not sure how exactly to proceed. If you touch it with anything like a long wire or a cherry switch terminal, it flips the switch. I'd rather have some electronic way to control this over some mechanical contraption. I've never worked with capacitive buttons before so I have no idea where to start. Any thoughts would be appreciated, thanks!

• At some part in the circuit (not to far away from the switch) the switch action will be converted to some form of logic signal (voltage step). That's a lot easier to simulate/hack. – JIm Dearden Feb 6 '15 at 17:20
• That could be done inside the SoC, where it is infeasible to access. – alex.forencich Mar 8 '15 at 20:53

It depends on the internal circuit, but what might be possible is to short (for safety with some current limiting resistor like 300$\Omega$) the two terminals of the capacitive switch.

A short can be seen as an infinite capacitor, which would make the circuit think that someone pushed the button (increase in capacity).

If that doesn't work you can use an analog switch to switch an additional capacity in parallel, which would increase the capacity as well. Touch sensors have a very small capacity, so some picofarad should be enough to trigger the button.

That being said, fiddling with the circuit might break it quite fast (it again depends on the circuit and the algorithm used for detection), and make the button always pressed.

Whatever input pin the switch is connected to, find the memory address, and write a "1" to it.

For example, if it's connected to PORT A, and PORT A is located at $1000 (hex), Then read in the value stored at$1000, do an OR operation with that number and \$01, and send that value to your program instead of the real value of port A.

Also, you could just call the function that would execute in the event the switch was depressed, as opposed to checking the switch or calling the interrupt, or however you planned on reacting to the switch.

• I think OP is trying to interface with an unknown SoC by triggering these button presses. If the SoC could be modified, then this would not be necessary. – alex.forencich Mar 8 '15 at 20:54

You might be able to get away with connecting each pad to an io pin with a capacitor, then switching the io pin direction, input for released and output for pressed. This should do the same thing as a cmos switch, without needing any additional parts.