The 4x4 membrane keypad
When you wire a 4x4 (or similar) membrane keypad to your Arduino using a single analog data wire, like in the schematic below, most people readily understand the purpose of the resistors.
The resistors are used to create a voltage ladder, a circuit that produces multiple voltage reference points that can be measured by the Arduino. The sketch that is running in the Arduino can figure out which key was pressed by measuring the voltage on the sampling pin.
But what about the diodes? What is their purpose?
Diodes in the 4x4 keypad circuit
If you can somehow ensure that only one key can be pressed at any given time (perhaps through mechanical means), the diodes are not needed. Try it out, and you should see that the keyboard works fine.
But if you happen to press multiple keys on a matrix keypad (like when you hold down Shift-Cmd-S in a computer keyboard), an effect called "ghosting" comes into play.
When ghosting occurs, then usually a key that wasn't pressed is read by the host (the Arduino, in our case).
In many keyboard designs, diodes are added to deal with ghosting.
If you are curious to know more about this, I have found two useful resources:
Jump to another article.
1. Pull-up & pull-down resistors
2. What is a bypass/decoupling capacitor?
3. What is the purpose of the diodes in a keypad circuit?
4. Logic level shifting
5. Why should you use a diode in a relay driver circuit?
6. Why use a voltage divider with a photoresistor?
7. Optoisolator: a simple way to electrically separate parts of a circuit
8. Use MOSFETs to drive large(ish) loads
The Tech Explorations Subscription program
Subscribe and access all of our video courses immediately.
With a catalog of 25+ premium video courses (and growing), this subscription gives you an amazing resource to boost your learning.
New to the Arduino?
Arduino Step by Step Getting Started is our most popular course for beginners.
This course is packed with high-quality video, mini-projects, and everything you need to learn Arduino from the ground up. We'll help you get started and at every step with top-notch instruction and our super-helpful course discussion space.
Done with the basics? Looking for more advanced topics?
Arduino Step by Step Getting Serious is our comprehensive Arduino course for people ready to go to the next level.
Learn about Wifi, BLE and radio, motors (servo, DC and stepper motors with various controllers), LCD, OLED and TFT screens with buttons and touch interfaces, control large loads like relays and lights, and much much MUCH more.