0
\$\begingroup\$

I have a serial keyboard that has 24 pins and works via one of the top 11 pins shorting to one of the bottom 13 pins when you press a button (top and bottom membranes touch) and this is picked up by an interface board. I would like to simulate this with an Arduino. There are potentially 143 different combinations but I only need to simulate 50. Normally I would use a relay to act as a switch (i.e. pin 1 and 12 are connected to relay, arduino renergizes relay and these pins get connected) but I don't want to buy/connect 50 different relays along with diodes, transistors, etc. to control them. Is there another way to do this?

I have tried shorting both pins to ground and this is not read by the interface board and I have tried just using a regular transistor but since these pins aren't energized the transistor doesn't conduct.

\$\endgroup\$
  • \$\begingroup\$ What kind of keyboard? PS2? USB? \$\endgroup\$ – Voltage Spike Sep 26 '19 at 20:11
  • 1
    \$\begingroup\$ I'm wondering if it might be easier to skip this entirely and just spoof the signals that the interface board sends to whatever it's interfacing with. \$\endgroup\$ – Hearth Sep 26 '19 at 20:13
  • \$\begingroup\$ I actually do have a solution that spoofs the serial signals but I've found if I try to send more than 1 keypress without waiting around 300ms then it might not get registered and I think this will probably let me do this faster, which is my goal \$\endgroup\$ – joshua0823 Sep 26 '19 at 20:24
  • 1
    \$\begingroup\$ Normally there is a pullup R to some voltage to detect contact closure \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Sep 26 '19 at 20:45
  • \$\begingroup\$ if I try to send more than 1 keypress without waiting around 300ms then it might not get registered .... what happens if you press 4 or more keys per second? \$\endgroup\$ – jsotola Sep 27 '19 at 0:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.