Step 7: Finalizing It All

In this instructable you learned how a keypad is read, directly connected to your microcontroller, and also through a 16-key encoding IC. I showed you how to reduce the I/O burden on your MCU through the use of the chip, and gave several code examples (and the code itself) for you to try out and practice at home (or work, or wherever you're reading this).

I hope you enjoyed it! You are always welcome to email me, or if you find yourself on irc, pop over to irc.freenode.net #instructables.

Keep on instructing!

<p>Where can I get the Eagle schematic?</p>
<p>I didn't realize I only included a PDF of the schematic and not the eagle sch/brd. If you're still wanting them drop me an email and I'll look for them and send them to you.</p><p>Cheers! </p>
If anyone else is interested in using the MM74C922 IC, I have to warn you:<br><br>The diagram shown above confuses more than it helps, as the IC is setup differently - at least the datasheet tells me this: Column X1 + X2 is NOT on the left side. Or in general: the layout of the IC is not comparable to the layout above.<br><br>Just a friendly reminder to others :)
<p>Heyas,</p><p>I think there is some confusion here. The diagram (technically, the schematic symbol I use for the 74C922 is only that: a schematic diagram. Just as a logic diagram does not map one-to-one with the physical pinout of the IC, many schematic symbols also choose to place the pins where it makes the most <em>semantic</em> difference and not how they are physically setup. This is done to help alleviate the rats nest some schematics become when attaching passives and such. The 555 timer is a great example; the physical pinout and the symbol are totally different and this is to allow engineers the ability to follow a common design pattern on the schematic that would otherwise be ugly and messy (as mine looks above).</p><p>Hope I understood your question and this helps to clear things up.</p>
Hello, Nice project and code I think : was just looking for something like this for making a code lock. My question: for what type of AVR have you written the C-code ? Can I use it without changes for my ATMega88 ?
Hi,<br/>Thanks. I've written it for an ATmega328P. You will need to edit the Makefile and change MCU to atmega88 and F_CPU to whatever speed at which you have your '88 running. You may need to change the AVRDUDE settings in the Makefile to reflect your programmer and port. Further, note which pins I have things on and either match those in your setup or change them in the code to match yours.<br/><br/>Also, if you're going to read the key value, you will need to make some sort of translation table or compare how the values are sent when checking a keycode. That's because the actual value of the key (ie 1 or 3 or B) doesn't get sent, but instead a number (hex) starting from 0 at key 1 and ending at F at key D. Make sense? The keypad values vs the value sent from a keypress is like this:<br/><pre>[ 1 2 3 A ] [ 0 1 2 3 ][ 4 5 6 B ] [ 4 5 6 7 ][ 7 8 9 C ] [ 8 9 A B ][ * 0 # D ] [ C D E F ]</pre>So you'll need to make sure you're translating/comparing the right maps.<br/>Good luck!<br/>
Please, do you have some of these IC 74C922 yet?<br>Could sell some to me?
Sorry, I wish I could. I found just a couple at a local electronics shop. They've gotten pretty scarce recently. I don't know of a replacement part for it.<br><br>Good luck!
Hey Nevdull <br>- cool name by the way! :)<br><br>I am starting out a project tomorrow, using the 74C922 IC.<br>Would it be possible to use this IC on a 12 keypad-setup?<br>And is it difficult to translate your code to arduino-readable code?<br><br>I really could like to use this IC, as I need as many I/O ports as possible.

About This Instructable


42 favorites


Bio: Gian is a computational biologist and is the Managing Director at Open Design Strategies, LLC. He holds a BA in Molecular/Cellular Biology and an ... More »
More by nevdull: Create A Custom Medieval-/Fantasy-Style Calligraphy Quill Practical DACs Using Enumerated Types as Bitflags
Add instructable to: