22 DBG(
"bus data access error");
31 i <
sizeof(initRegisterArray) /
sizeof(initRegisterArray[0]); i++) {
32 writeReg(initRegisterArray[i][0], &initRegisterArray[i][1], 1);
38int MatrixGesture::setNormalOrGamingMode(eRateMode_t mode) {
44 for (uint16_t i = 0; i <
sizeof(gestureDescriptionsTable) /
45 sizeof(gestureDescriptionsTable[0]);
47 if (gesture == gestureDescriptionsTable[i].gesture) {
60 DBG(
"Wave1 Event Detected");
66 if (!_gestureHighRate) {
80 DBG(
"Right Event Detected");
84 DBG(
"Left Event Detected");
88 DBG(
"Up Event Detected");
92 DBG(
"Down Event Detected");
96 DBG(
"Forward Event Detected");
97 if (!_gestureHighRate) {
105 DBG(
"Backward Event Detected");
106 if (!_gestureHighRate) {
114 DBG(
"Clockwise Event Detected");
118 DBG(
"anti-clockwise Event Detected");
126 DBG(
"Wave2 Event Detected");
130 DBG(
"LeftRight Wave Event Detected");
133 DBG(
"UpDown Wave Event Detected");
136 DBG(
"ForwardBackward Wave Event Detected");
140 DBG(
"Wave Disorder Event Detected");
150 int gestureResult = 0;
196 return gestureResult;
200int MatrixGesture::selectBank(eBank_t bank) {
205void MatrixGesture::writeReg(uint8_t reg,
const void *pBuf,
size_t size) {
207 DBG(
"pBuf is null pointer");
210 uint8_t *_pBuf = (uint8_t *)pBuf;
212 _pWire->beginTransmission(_deviceAddr);
214 for (uint16_t i = 0; i < size; i++) {
217 _pWire->endTransmission();
220uint8_t MatrixGesture::readReg(uint8_t reg,
void *pBuf,
size_t size) {
222 DBG(
"pBuf is null pointer");
225 uint8_t *_pBuf = (uint8_t *)pBuf;
227 _pWire->beginTransmission(_deviceAddr);
229 if (
_pWire->endTransmission() != 0) {
230 DBG(
"Wire Read Error");
233 _pWire->requestFrom(_deviceAddr, (uint8_t)size);
234 for (uint16_t i = 0; i < size; i++) _pBuf[i] =
_pWire->read();
235 _pWire->endTransmission();
240 MatrixGesture::gestureDescriptionsTable[] = {
249 {8,
"Anti-Clockwise"},
251 {10,
"WaveSlowlyDisorder"},
252 {11,
"WaveSlowlyLeftRight"},
253 {12,
"WaveSlowlyUpDown"},
254 {13,
"WaveSlowlyForwardBackward"}
258const uint8_t MatrixGesture::initRegisterArray[219][2] = {
259 {0xEF, 0x00}, {0x32, 0x29}, {0x33, 0x01}, {0x34, 0x00}, {0x35, 0x01},
260 {0x36, 0x00}, {0x37, 0x07}, {0x38, 0x17}, {0x39, 0x06}, {0x3A, 0x12},
261 {0x3F, 0x00}, {0x40, 0x02}, {0x41, 0xFF}, {0x42, 0x01}, {0x46, 0x2D},
262 {0x47, 0x0F}, {0x48, 0x3C}, {0x49, 0x00}, {0x4A, 0x1E}, {0x4B, 0x00},
263 {0x4C, 0x20}, {0x4D, 0x00}, {0x4E, 0x1A}, {0x4F, 0x14}, {0x50, 0x00},
264 {0x51, 0x10}, {0x52, 0x00}, {0x5C, 0x02}, {0x5D, 0x00}, {0x5E, 0x10},
265 {0x5F, 0x3F}, {0x60, 0x27}, {0x61, 0x28}, {0x62, 0x00}, {0x63, 0x03},
266 {0x64, 0xF7}, {0x65, 0x03}, {0x66, 0xD9}, {0x67, 0x03}, {0x68, 0x01},
267 {0x69, 0xC8}, {0x6A, 0x40}, {0x6D, 0x04}, {0x6E, 0x00}, {0x6F, 0x00},
268 {0x70, 0x80}, {0x71, 0x00}, {0x72, 0x00}, {0x73, 0x00}, {0x74, 0xF0},
269 {0x75, 0x00}, {0x80, 0x42}, {0x81, 0x44}, {0x82, 0x04}, {0x83, 0x20},
270 {0x84, 0x20}, {0x85, 0x00}, {0x86, 0x10}, {0x87, 0x00}, {0x88, 0x05},
271 {0x89, 0x18}, {0x8A, 0x10}, {0x8B, 0x01}, {0x8C, 0x37}, {0x8D, 0x00},
272 {0x8E, 0xF0}, {0x8F, 0x81}, {0x90, 0x06}, {0x91, 0x06}, {0x92, 0x1E},
273 {0x93, 0x0D}, {0x94, 0x0A}, {0x95, 0x0A}, {0x96, 0x0C}, {0x97, 0x05},
274 {0x98, 0x0A}, {0x99, 0x41}, {0x9A, 0x14}, {0x9B, 0x0A}, {0x9C, 0x3F},
275 {0x9D, 0x33}, {0x9E, 0xAE}, {0x9F, 0xF9}, {0xA0, 0x48}, {0xA1, 0x13},
276 {0xA2, 0x10}, {0xA3, 0x08}, {0xA4, 0x30}, {0xA5, 0x19}, {0xA6, 0x10},
277 {0xA7, 0x08}, {0xA8, 0x24}, {0xA9, 0x04}, {0xAA, 0x1E}, {0xAB, 0x1E},
278 {0xCC, 0x19}, {0xCD, 0x0B}, {0xCE, 0x13}, {0xCF, 0x64}, {0xD0, 0x21},
279 {0xD1, 0x0F}, {0xD2, 0x88}, {0xE0, 0x01}, {0xE1, 0x04}, {0xE2, 0x41},
280 {0xE3, 0xD6}, {0xE4, 0x00}, {0xE5, 0x0C}, {0xE6, 0x0A}, {0xE7, 0x00},
281 {0xE8, 0x00}, {0xE9, 0x00}, {0xEE, 0x07}, {0xEF, 0x01}, {0x00, 0x1E},
282 {0x01, 0x1E}, {0x02, 0x0F}, {0x03, 0x10}, {0x04, 0x02}, {0x05, 0x00},
283 {0x06, 0xB0}, {0x07, 0x04}, {0x08, 0x0D}, {0x09, 0x0E}, {0x0A, 0x9C},
284 {0x0B, 0x04}, {0x0C, 0x05}, {0x0D, 0x0F}, {0x0E, 0x02}, {0x0F, 0x12},
285 {0x10, 0x02}, {0x11, 0x02}, {0x12, 0x00}, {0x13, 0x01}, {0x14, 0x05},
286 {0x15, 0x07}, {0x16, 0x05}, {0x17, 0x07}, {0x18, 0x01}, {0x19, 0x04},
287 {0x1A, 0x05}, {0x1B, 0x0C}, {0x1C, 0x2A}, {0x1D, 0x01}, {0x1E, 0x00},
288 {0x21, 0x00}, {0x22, 0x00}, {0x23, 0x00}, {0x25, 0x01}, {0x26, 0x00},
289 {0x27, 0x39}, {0x28, 0x7F}, {0x29, 0x08}, {0x30, 0x03}, {0x31, 0x00},
290 {0x32, 0x1A}, {0x33, 0x1A}, {0x34, 0x07}, {0x35, 0x07}, {0x36, 0x01},
291 {0x37, 0xFF}, {0x38, 0x36}, {0x39, 0x07}, {0x3A, 0x00}, {0x3E, 0xFF},
292 {0x3F, 0x00}, {0x40, 0x77}, {0x41, 0x40}, {0x42, 0x00}, {0x43, 0x30},
293 {0x44, 0xA0}, {0x45, 0x5C}, {0x46, 0x00}, {0x47, 0x00}, {0x48, 0x58},
294 {0x4A, 0x1E}, {0x4B, 0x1E}, {0x4C, 0x00}, {0x4D, 0x00}, {0x4E, 0xA0},
295 {0x4F, 0x80}, {0x50, 0x00}, {0x51, 0x00}, {0x52, 0x00}, {0x53, 0x00},
296 {0x54, 0x00}, {0x57, 0x80}, {0x59, 0x10}, {0x5A, 0x08}, {0x5B, 0x94},
297 {0x5C, 0xE8}, {0x5D, 0x08}, {0x5E, 0x3D}, {0x5F, 0x99}, {0x60, 0x45},
298 {0x61, 0x40}, {0x63, 0x2D}, {0x64, 0x02}, {0x65, 0x96}, {0x66, 0x00},
299 {0x67, 0x97}, {0x68, 0x01}, {0x69, 0xCD}, {0x6A, 0x01}, {0x6B, 0xB0},
300 {0x6C, 0x04}, {0x6D, 0x2C}, {0x6E, 0x01}, {0x6F, 0x32}, {0x71, 0x00},
301 {0x72, 0x01}, {0x73, 0x35}, {0x74, 0x00}, {0x75, 0x33}, {0x76, 0x31},
302 {0x77, 0x01}, {0x7C, 0x84}, {0x7D, 0x03}, {0x7E, 0x01}};
304void MatrixGesture::i2cMUXSelect() {
308 _pWire->endTransmission(1);
309 delayMicroseconds(300);
A library for interfacing with the MATRIX Gesture Seneor PAJ7620 via I2C.
#define ERR_IC_VERSION
IC version mismatch.
#define PAJ7620_ADDR_GES_PS_DET_FLAG_1
#define PAJ7620_ADDR_GES_PS_DET_FLAG_0
#define GES_ENTRY_TIME
When you want to recognize the Forward/Backward gestures, your gestures' reaction time must less than...
#define PAJ7620_ADDR_PART_ID_LOW
#define ERR_DATA_BUS
Error in Data Bus.
#define PAJ7620_REGITER_BANK_SEL
String gestureDescription(int gesture)
Get the string descritpion corresponding to the gesture number.
void setGestureHighRate(bool b)
Set gesture detection mode.
int getGesture(void)
Get gesture.
eGesture_t
gesture information
@ eGestureWaveSlowlyUpDown
@ eGestureWaveSlowlyDisorder
@ eGestureWaveSlowlyForwardBackward
@ eGestureWaveSlowlyLeftRight
int begin(void)
init function