Reverse Matrix Keypad

Hello,

I am trying to interface a door intercom to our current telephone system.

I have dismantled the telephone and worked out the pin outs for the keypad matrix but I am stumped as to how to programmaticly wire it up to the arduino. I essentially want the arduino to become the matrix keypad so I can program it to dial numbers.

I have 7 pins in total (3 horizontal and 4 vertical across the rows). They are 3.3v with very little milliamps.

I know vaguely how it should work but not sure on how to set up the pullup resistors and joint ground.

Any suggestions?
Thanks

So you basically want to simulate the keypad from the Arduino?

The first thing that springs to mind is to do just that. Recreate the matrix using transistors or mosfets for the switches and then have 12 arduino pins controlling them, instead of your fingers.

Just neednto make sure any Arduino 'press' is long enough in duration to replicate a human press and give the scanning routine time to see it as it scans the rows and colums on the matrix.

You'd have to set a test up to see if it would work, but I think it may do.

If you can't afford 12 pins then you could control the transistor bases via a couple of 595 shift registers. You could just have a value that corresponds to the shift register output for a particular key 'press' and then ShiftOut the high and low byte to enact.

Thanks for the reply.

I opted for the transistor method but thanks for letting me know about the shifter that is something I will try in the future.

Thanks

I have it set up and its recognising button presses.. But I am getting switch bounce. it always recognises the the button press twice, I have had the arduino on a scope and its a bit messy but not sure if thats what triggering it.

Any suggestions?

Thanks

So it looks like on further inspection that its triggering a button press when the signal goes low as well as when it initially goes high.

Have you got a schematic of how you've wired it up?

How long are you turning the transistor on for , to simulate a keypress?

That's how it is currently wired up. Very simple.

https://dl.dropboxusercontent.com/u/55617926/schematic.jpg

I have tried 10ms, 50ms even 500ms. It's not time based as it doesn't register multiple pressed while the line is high, only when it first goes high and again when set low.

The top grid is the signal from the arduino and the bottom from the output for the transistor.

There's no significant bounce that I can see.

Can you wire up the original matrix keypad and see what the output is like from that?

What you are describing would logically suggest that a keypress down/up should be interpreted the same.

There must be some debouncing in there somewhere for the manual keypad. You wouldn't need that with transistor switching as it is a clean on/off, unlike a mechanical switch.

If you can scope the button press then maybe it might actually be a case of simulating bounce with the transistor. Since we don't have acccess to the code reading the "keypad" it's going to be a measure of guesswork.