The answer came from the Net, of course. Since the original input closes a mechanical contact, I need to reproduce the same function with an electronic control rather than a finger pressure. The simplest solution would be to build a matrix of relays, but it is noisy, large and requires a lot of I/Os. A complex solution puts the [Arduino] in sync with the original microcontroller keyboard scan rate and modifies [Arduino] outputs accordingly. The clever solution instead uses two analog multiplexers connected back to back.
The CD4051/74HC4051 is an 8-to-1 analog multiplexer with output enable. If two of them are connected together through the common I/O, 8+8 lines can be switched (64 combinations) with just 3+3 control lines (2^3 = 8). Plus one Arduino I/O for the Enable control, equivalent to the keypress.
With this setup timing is not critical, and I only need to find out how fast my Arduino can "type in" new numbers, either experimentally or by measuring the keypad scan rate through with the visual help of an oscilloscope. I have already experienced that keeping a key pressed does not lead to multiple readings.
After a quick test on the breadboard I am building the adapter board. Arduino code will follow.
Breadboard test of 74HC4051. |