4 ms·
> The internal electronics on the SideWinder X4 use a variant of resistive multitouch technology. Each key has a screen printed resistor in series with its swit
by comex 13y ago
> The internal electronics on the SideWinder X4 use a variant of resistive multitouch technology. Each key has a screen printed resistor in series with its switch. This allows the internal electronics to read the state of each key switch independently for very large multiple-key combinations.
This is pretty vague. How exactly does this disambiguate which keys are being pressed?
- click170 13y agoGiven the detail that was put into describing the problem I too was disappointed with that last paragraph, though I wouldn't be surprised if that is all the author was able to get away with.
- MikeAmelung 13y agoThe resistors change the voltage of the resulting signal. So the Microsoft keyboard probably checks whether the circuit is closed and the voltage to determine which keys are actually pressed.
- userbinator 13y agoThe idea is that by using resistors (which are much cheaper than diodes), any "indirect paths" that go through more than 1 switch between the rows and columns will decrease the voltage sensed on those, while the voltage on the ones that go through only 1 switch is higher. They say they've patented this technology but in fact it's been used for (smaller) keypads with microcontrollers for a long time before that; I remember reading some application notes that showed this technique.
- moron4hire 13y agoThis is exactly (minus the "screen printed" part) how I built this bugger: http://www.youtube.com/watch?v=oIFA7msO_x0 http://www.youtube.com/watch?v=oIFA7msO_x0 The key electrical concept is a voltage divider: http://en.wikipedia.org/wiki/Voltage_divider http://en.wikipedia.org/wiki/Voltage_divider Each row of three buttons is in parallel with each other, each with a different value of resister. When a switch closes, it allows current to flow through that switch's resistor. The final voltage at the end of the row of buttons is directly related to which buttons are pressed. Given the right selection of resistors, you can tell exactly what combination of button presses have occurred. A diagram I had drawn to explain it to a project mate: https://raw.github.com/capnmidnight/GeblinkenKiosk/master/doc/analog%20button%20encoder.png https://raw.github.com/capnmidnight/GeblinkenKiosk/master/do... And the (can't remember if it's accurate, but certainly close enough to get the concept) diagram of the full circuit: https://raw.github.com/capnmidnight/GeblinkenKiosk/master/doc/mp3-kiosk.png https://raw.github.com/capnmidnight/GeblinkenKiosk/master/do... The spreadsheet I wrote to figure out the voltage thresholds for given resister values: https://github.com/capnmidnight/GeblinkenKiosk/blob/master/src/analog%20button%20encoder.xlsx https://github.com/capnmidnight/GeblinkenKiosk/blob/master/s... And the code that read the analog pins on the Arduino to figure out the state: https://github.com/capnmidnight/GeblinkenKiosk/blob/master/src/GeblinkenKiosk/kiosk.cpp#L49-L92 https://github.com/capnmidnight/GeblinkenKiosk/blob/master/s...