This software provides an easy solution for computing resistors required for a keyboard/resistor network used for an A/D input.
Compared to scanned keyboards, 1 Wire keyboards offer lower EMI and require fewer ESD protection components to implement. The software requires only one pin on a microcontroller, which can be further reduced by replacing the ground with a second pin configured as an open drain output. Excessively long key presses can be prevented by allowing the pin to float except when reading the keypad.
The software has a user-friendly interface where the keyboard size can be entered at the top left with the number of rows and columns needed. This generates a rectangular array of keys, which can be easily customized by removing or adding keys. The A/D converter specifications are found near the middle top, where the worst case A/D count error must be entered in the A/D accuracy field. It is crucial to use "counts" rather than "bits" to facilitate the user's job.
The maximum allowable A/D input impedance should also be indicated, and the specifications for the family of resistors should be entered at the right. Users can select the set of resistor values and modify the typical tolerance as needed. If the keyboard is small, it may be possible to achieve the desired performance with only three different resistor values. However, for larger keyboards, enhanced distinction between keys may be required.
If the A/D inaccuracy and resistors conspire against the user, some pink highlighted keys may appear on the software interface. Selecting enhanced distinction between keys, as shown in the 16 key example, may help solve the problem. However, for larger keyboards, it may be necessary to perform additional work. The user can also name the keys, a feature that may be useful for C code generation.
Version 1.0: N/A