[Lauri Pirttiaho] from the [Swiss Knife of Electronics] channel explains how to simplify your resistive divider keypad design on Hackaday.io.
The usual method involves building a resistive ladder that gives unique and equally spaced voltages for each keypress. If you have just four or five discrete buttons, it isn’t terribly difficult, but if you have a 12- or 16-keypad matrix, things get complicated. [Lauri] looked into the past to come up with a better way, specifically a 646 page, 1 kg textbook from 1990 — Analogue Ic Design: The Current-Mode Approach by Toumazou, Lidgey, and Haigh. He learned that sometimes what’s hard to do in the voltage domain is easy in the current domain.
Normally you’d throw in some resistors to form different voltage dividers depending on which key is pressed, and read the resulting voltage off of a voltage divider with an ADC. But that means using the voltage divider equation, and the difference in voltage between keys can get very small. Dropping the voltage divider and measuring the current through a current mirror generates a linear voltage across its output load resistor that can be easily read by your microprocessor. And [Lauri] has posted an example of just such a program on his GitHub repository for an Arduino.
Heavy analog electronics, for sure, but something to keep in mind if you’re reading more than 12 keys. Do you have any examples of solving problems by looking into old and/or less-common techniques? Let us know in the comments below.