mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
.. | ||
.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