Reading switches without a common ground from Arduino

arduinobutton

I'm trying to interface a steering wheel control interface with an Arduino.

The interface connector has 6 pins, A to F.
These pins are interconnected with 8 push buttons, SW1 to SW8:

schematic

simulate this circuit – Schematic created using CircuitLab

These buttons don't have a common ground, so I can't connect them directly to the Arduino.

How can I interface these with the Arduino, in order to know which button is pressed?

What came to my mind is creating a network of resistors, injecting +5V somewhere, and reading an analog value that would be dependent on which button is pressed, but I'm not sure how to do that, or even if it is the best solution.

Best Answer

Hoping that only one button will be pressed at a time, I have a software solution based on polling :

Let A is connected to Pin1, B is connected to Pin2 and so on..

First configure Pin1 as output port and all others as inputs. And out a logic '1' at Pin1. Read the values at Pin2 to Pin6.

  • if Pin2 = '1' then SW1 is pressed.
  • if Pin4 = '1' and then SW5 is pressed.

Now repeat the above steps with Pin2 as output port and others as input ports (Change the conditions accordingly).

EDIT: As Spehro Pefhany commented, this will work for upto two switches pressed simultaneously.