About the circuit
The keypad has 13 connections. One for each key and one common. One side of each of the keypad switches goes to common and the other to one of the 12 key connections. I elected to build a resistor network as seen in the enclosed schematic. Click on the schematic to see a larger version that’s actually readable or visit http://fayettedigital.com/images/GDO.png in a separate window or tab. Thanks to Britton Kerin for the Arduino schematic symbol.
R13, the 15K resistor is present to assure that when nothing is pressed the returned ADC value is near 5 volts. Q1 is shown as a 2N2222 but any NPN silicon general purpose transistor will work. The diode across the coil of the relay should be a Schottky device, but I’ve gotten away with using normal diodes like a 1N914 or 1N4148. The relay I’m using is a Radio Shack 275-0241 12VDC Relay. Current draw is about 40 ma. It’s not shown on the schematic due to space constraints but the normally open contact and the common contact on the relay go to the opener. My original opener connected the wires briefly to open/close the door so this device will do the same. SW1 is the program switch. When the switch is closed and the Arduino is reset the software is placed into program mode. To return to normal mode open the switch and reset the Arduino. In the pictures you won’t see the switch. There are two reasons. In this reroll of the project, I’ve substituted a jumper wire for the switch. The other reason is that on version 1 of this project I rolled my own processor board and the switch is on it.