I found this on the web recently and was wondering if this particular set up would work with the Arduino. If so, How would you program it to read the thing? I have not had enough experience with the Arduino to see how to program for this. I would basically want it to have an output (light a different led) for each of the 16 key presses.
It's not actually set up as a one shot timer. Here is the text from the article.
Looking at the figure, you'll notice a familiar 4x4 keypad with a single difference —each row and column are separated by a resistor. If key #1 is pressed, the resistance between nodes A and B (R1AB) is equal to 1.5R; for key #2—R2AB = 1.5R+R = 2.5R; and so on ... key #N—RNAB = N.5R. This variable resistor network is connected to a 555 timer (CMOS version), configured as an oscillator with the period of oscillation equal to T = 1.4RABC, directly proportional to RAB.
The oscillator runs only when a key is pressed, causing an interrupt request for the microcontroller. The INT0 pin is set up as edge-sensitive. The general algorithm can be described as: 1) after detecting the edge on the INT0 pin, wait 20 ms to eliminate ringing; 2) detect the next edge and start the internal timer; 3) the following edge stops the internal timer. The measured period (the time between two consecutive positive edges) will define the key number. Any microcontroller with a built-in timer (the vast majority of microcontrollers) can implement this idea.