Old Keypad Help


I am having a hell of a time trying to interface with an old telephone keypad. There are 7 wires coming out of the unit, and I am pretty sure I’ve identified ground and source voltage. For the remaining 5, I’ve connected each to an analog pin and to ground via a 220 resistor. Running the following code I was expecting some of the values to change when I pushed the buttons on the keypad:

void setup() {

void loop() {
  p("%d, %d, %d, %d, %d\n", analogRead(A0), analogRead(A1), analogRead(A2), analogRead(A3), analogRead(A4));

(the function p is basically just a clone of printf)

The output for all 5 of the interesting wires remains constant whether any buttons are pressed or not with values: 82, 658, 535, 0, 0. They fluctuate maybe +/- 2 but I assume that’s just noise, it does not seem to be correlated with button presses.

I originally believed the keypad interface was a matrix interface. In the picture below you can see the component affected by the keypad—there are 12 unique conductive strips and pressing a key looks like it activates exactly two of the strips. (attached image)

I also made a crude diagram of which buttons activated which strips, which seemed to confirm the matrix theory. I just mapped the places where the button presses make contact to the 12 pins on the circuit board, and when I tried to treat those 12 pins as though each was part of a a standard 3 by 4 matrix arrangement the pattern seemed to fit. (image also attached)

Anyway, my goal is to read the output on these 5 wires and determine what button was pressed. Any advice you have to offer would be appreciated, thank you!


I have identified one of the chips on the keypad’s circuit board as a DTMF Tone Generator (http://www.ic72.com/pdf_file/s/65988.pdf) in case that helps.