.. | ||
.github | ||
examples | ||
test | ||
.arduino-ci.yml | ||
AnalogKeypad.cpp | ||
AnalogKeypad.h | ||
CHANGELOG.md | ||
keywords.txt | ||
library.json | ||
library.properties | ||
LICENSE | ||
README.md |
AnalogKeypad
Library for (Robotdyn) 4x4 and 4x3 analog keypad.
Description
AnalogKeypad is a simple library to read the keys from a (Robotdyn) 4x4 or 4x3 keypad. No other keypads are tested, but they should work with this library after adjusting the MAGIC NUMBERS in the function rawRead().
Related
Interface
#include "AnalogKeypad.h"
Constructor
- AnalogKeypad(const uint8_t pin, const uint8_t bits = 10) constructor, pin is typical A0 etc. Bits has a default of 10, but need to be set to match the platform. If bits < 8 then the internal shift would be large causing all reads to return 0 or so.
polling interface
- uint8_t pressed() returns 0 if no key pressed, otherwise returns key pressed (may fluctuate).
- uint8_t read() read the key pressed returns 0 .. 16 where 0 means NOKEY.
event interface
- uint8_t event() checks if a change has occurred since last time.
- uint8_t key() returns the key involved with last event.
uint8_t e = AKP.event();
switch (e)
{
case PRESSED:
Serial.print("press\t");
Serial.println(AKP.key());
break;
case RELEASED:
Serial.print("release\t");
Serial.println(AKP.key());
break;
case REPEATED:
Serial.print("repeat\t");
Serial.println(AKP.key());
break;
case CHANGED:
Serial.print("change\t");
Serial.println(AKP.key());
break;
default: // NOKEY
break;
}
Event | value |
---|---|
PRESSED | 0x80 |
RELEASED | 0x40 |
REPEATED | 0x20 |
CHANGED | 0x10 |
NOKEY | 0x00 |
Operation
The simplest usage is to use the read() function. This will return a 0 (NOKEY) when no key is pressed and a number 1 to 16 for the keys pressed. Note the return value may fluctuate randomly when multiple keys are pressed.
The pressed() function is a bit more robust. It returns the key pressed first, so multiple key presses simultaneously are less likely to disturb your program.
See Examples
Future
Must
Should
- more examples
- self-learning example?
Could
- make internal mapping array runtime adaptable?
- store in RAM, accessor functions
- version for external ADC
- see ADC712
- derive class for 4x3, 4x2 and 4x1 analog keypads?
Wont
Support
If you appreciate my libraries, you can support the development and maintenance. Improve the quality of the libraries by providing issues and Pull Requests, or donate through PayPal or GitHub sponsors.
Thank you,