RevEng_PAJ7620  1.5.0
RevEng_PAJ7620.h
Go to the documentation of this file.
1 
53 #ifndef __PAJ7620_H__
54 #define __PAJ7620_H__
55 
56 #include <Arduino.h>
57 #include <Wire.h>
58 
59 /* Changed to JayCar-Electronics PROGMEM approach from <a href="https://github.com/Jaycar-Electronics">their fork</a>.
60  * This is used for the various initialization and mode register arrays.
61  * Saves about 5% of SRAM on an Arduino Uno - Around 100 bytes for the init array.
62  */
63 #if defined(__AVR__) || defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
64 #define PROGMEM_COMPATIBLE
65 #endif
66 
67 
72 enum Gesture {
73  GES_NONE = 0,
82  GES_WAVE
83 };
84 
85 
90 typedef enum {
91  BANK0 = 0,
93 } Bank_e;
94 
95 
100 typedef enum {
102  CORNER_NE = 1,
103  CORNER_NW = 2,
104  CORNER_SW = 3,
105  CORNER_SE = 4,
112 } Corner;
113 
114 
119 #define PAJ7620_I2C_BUS_ADDR 0x73
120 
122 #define PAJ7620_ADDR_BASE 0x00
123 
125 #define PAJ7620_REGISTER_BANK_SEL (PAJ7620_ADDR_BASE + 0xEF) // W
132 #define PAJ7620_PART_ID_LSB 0x20
133 #define PAJ7620_PART_ID_MSB 0x76
141 #define PAJ7620_ADDR_PART_ID_0 (PAJ7620_ADDR_BASE + 0x00) // R
143 #define PAJ7620_ADDR_PART_ID_1 (PAJ7620_ADDR_BASE + 0x01) // R
145 #define PAJ7620_ADDR_SUSPEND_CMD (PAJ7620_ADDR_BASE + 0x03) // W
147 #define PAJ7620_ADDR_GES_PS_DET_MASK_0 (PAJ7620_ADDR_BASE + 0x41) // RW
149 #define PAJ7620_ADDR_GES_PS_DET_MASK_1 (PAJ7620_ADDR_BASE + 0x42) // RW
151 #define PAJ7620_ADDR_GES_PS_DET_FLAG_0 (PAJ7620_ADDR_BASE + 0x43) // R
153 #define PAJ7620_ADDR_GES_PS_DET_FLAG_1 (PAJ7620_ADDR_BASE + 0x44) // R
155 #define PAJ7620_ADDR_STATE_INDICATOR (PAJ7620_ADDR_BASE + 0x45) // R
157 #define PAJ7620_ADDR_PS_HIGH_THRESHOLD (PAJ7620_ADDR_BASE + 0x69) // RW
159 #define PAJ7620_ADDR_PS_LOW_THRESHOLD (PAJ7620_ADDR_BASE + 0x6A) // RW
161 #define PAJ7620_ADDR_PS_APPROACH_STATE (PAJ7620_ADDR_BASE + 0x6B) // R
163 #define PAJ7620_ADDR_PS_RAW_DATA (PAJ7620_ADDR_BASE + 0x6C) // R
165 #define PAJ7620_ADDR_OBJECT_CENTER_X_LSB (PAJ7620_ADDR_BASE + 0xAC) // R
167 #define PAJ7620_ADDR_OBJECT_CENTER_X_MSB (PAJ7620_ADDR_BASE + 0xAD) // R
169 #define PAJ7620_ADDR_OBJECT_CENTER_Y_LSB (PAJ7620_ADDR_BASE + 0xAE) // R
171 #define PAJ7620_ADDR_OBJECT_CENTER_Y_MSB (PAJ7620_ADDR_BASE + 0xAF) // R
173 #define PAJ7620_ADDR_OBJECT_BRIGHTNESS (PAJ7620_ADDR_BASE + 0xB0) // R
175 #define PAJ7620_ADDR_OBJECT_SIZE_LSB (PAJ7620_ADDR_BASE + 0xB1) // R
177 #define PAJ7620_ADDR_OBJECT_SIZE_MSB (PAJ7620_ADDR_BASE + 0xB2) // R
179 #define PAJ7620_ADDR_WAVE_COUNT (PAJ7620_ADDR_BASE + 0xB7) // R
181 #define PAJ7620_ADDR_NO_OBJECT_COUNT (PAJ7620_ADDR_BASE + 0xB8) // R
183 #define PAJ7620_ADDR_NO_MOTION_COUNT (PAJ7620_ADDR_BASE + 0xB9) // R
185 #define PAJ7620_ADDR_OBJECT_VEL_X_LSB (PAJ7620_ADDR_BASE + 0xC3) // R
187 #define PAJ7620_ADDR_OBJECT_VEL_X_MSB (PAJ7620_ADDR_BASE + 0xC4) // R
189 #define PAJ7620_ADDR_OBJECT_VEL_Y_LSB (PAJ7620_ADDR_BASE + 0xC5) // R
191 #define PAJ7620_ADDR_OBJECT_VEL_Y_MSB (PAJ7620_ADDR_BASE + 0xC6) // R
193 #define PAJ7620_ADDR_GES_RESULT_0 (PAJ7620_ADDR_BASE + 0x43) // R
195 #define PAJ7620_ADDR_GES_RESULT_1 (PAJ7620_ADDR_BASE + 0x44) // R
196 
197 // Cursor Registers - Bank 0
199 #define PAJ7620_ADDR_CURSOR_X_LOW (PAJ7620_ADDR_BASE + 0x3B) // R
201 #define PAJ7620_ADDR_CURSOR_X_HIGH (PAJ7620_ADDR_BASE + 0x3C) // R
203 #define PAJ7620_ADDR_CURSOR_Y_LOW (PAJ7620_ADDR_BASE + 0x3D) // R
205 #define PAJ7620_ADDR_CURSOR_Y_HIGH (PAJ7620_ADDR_BASE + 0x3E) // R
207 #define PAJ7620_ADDR_CURSOR_INT (PAJ7620_ADDR_BASE + 0x44) // R
211 // Proximity Registers - Bank 0
212 // Documentation best in v0.8 datasheet
213 // Only available in Proximity Detection (PS) mode
215 #define PAJ7620_ADDR_PS_APPROACH_STATE (PAJ7620_ADDR_BASE + 0x6B) // R
217 #define PAJ7620_ADDR_S_AVE_Y_BRIGHTNESS (PAJ7620_ADDR_BASE + 0x6C) // R
218 
219 
220 // REGISTER BANK 1
226 #define PAJ7620_ADDR_PS_GAIN (PAJ7620_ADDR_BASE + 0x44) // RW
228 #define PAJ7620_ADDR_R_IDLE_TIME_0 (PAJ7620_ADDR_BASE + 0x65) // RW
230 #define PAJ7620_ADDR_R_IDLE_TIME_1 (PAJ7620_ADDR_BASE + 0x66) // RW
232 #define PAJ7620_ADDR_IDLE_S1_STEP_0 (PAJ7620_ADDR_BASE + 0x67) // RW
234 #define PAJ7620_ADDR_IDLE_S1_STEP_1 (PAJ7620_ADDR_BASE + 0x68) // RW
236 #define PAJ7620_ADDR_IDLE_S2_STEP_0 (PAJ7620_ADDR_BASE + 0x69) // RW
238 #define PAJ7620_ADDR_IDLE_S2_STEP_1 (PAJ7620_ADDR_BASE + 0x6A) // RW
240 #define PAJ7620_ADDR_OP_TO_S1_STEP_0 (PAJ7620_ADDR_BASE + 0x6B) // RW
242 #define PAJ7620_ADDR_OP_TO_S1_STEP_1 (PAJ7620_ADDR_BASE + 0x6C) // RW
244 #define PAJ7620_ADDR_OP_TO_S2_STEP_0 (PAJ7620_ADDR_BASE + 0x6D) // RW
246 #define PAJ7620_ADDR_OP_TO_S2_STEP_1 (PAJ7620_ADDR_BASE + 0x6E) // RW
248 #define PAJ7620_ADDR_OPERATION_ENABLE (PAJ7620_ADDR_BASE + 0x72) // RW
249 
250 // Cursor Registers - Bank 1
252 #define PAJ7620_ADDR_LENS_ORIENTATION (PAJ7620_ADDR_BASE + 0x04) // RW
257 #define PAJ7620_BANK0 0x00
258 #define PAJ7620_BANK1 0x01
266 #define PAJ7620_I2C_WAKEUP 0x01
268 #define PAJ7620_I2C_SUSPEND 0x00
276 #define PAJ7620_ENABLE 0x01
278 #define PAJ7620_DISABLE 0x00
287 #define PAJ7620_NORMAL_SPEED 0xAC
289 #define PAJ7620_GAME_SPEED 0x30
301 #define GES_UP_FLAG 0x01
303 #define GES_DOWN_FLAG 0x02
305 #define GES_LEFT_FLAG 0x04
307 #define GES_RIGHT_FLAG 0x08
309 #define GES_FORWARD_FLAG 0x10
311 #define GES_BACKWARD_FLAG 0x20
313 #define GES_CLOCKWISE_FLAG 0x40
315 #define GES_ANTI_CLOCKWISE_FLAG 0x80
317 #define GES_WAVE_FLAG 0x01 // Read from Bank0 - 0x44
320 // Return values for cursor interrupt/status for cursor mode
321 // Read from Bank 0, reg 0x44
322 #define CUR_HAS_OBJECT 0x04 // Bit 2 - 0000 0100
323 #define CUR_NO_OBJECT 0x80 // Bit 7 - 1000 0000
324 
325 
326 // Values for Corners mode
327 #define GESTURE_RANGE_MAX 3712 // Gesture range max value (experimental)
328 #define GESTURE_RANGE_MIN 0 // Gesture range min value
329 #define GESTURE_RANGE_MID ((GESTURE_RANGE_MAX - GESTURE_RANGE_MIN) / 2)
330 #define CORNERS_BUFFER_WIDTH_PCT 0.20 // 20% of range is "buffer"/"middle"
331 #define CORNERS_BUFFER_WIDTH (int)((GESTURE_RANGE_MAX - GESTURE_RANGE_MIN) * CORNERS_BUFFER_WIDTH_PCT)
332 #define CORNERS_BUFFER_LOWER (int)(GESTURE_RANGE_MID - (CORNERS_BUFFER_WIDTH / 2))
333 #define CORNERS_BUFFER_UPPER (int)(GESTURE_RANGE_MID + (CORNERS_BUFFER_WIDTH / 2))
334 
335 
337 #define INIT_REG_ARRAY_SIZE (sizeof(initRegisterArray)/sizeof(initRegisterArray[0]))
338 
344 #ifdef PROGMEM_COMPATIBLE
345 const unsigned short initRegisterArray[] PROGMEM = {
346 #else
347 const unsigned short initRegisterArray[] = {
348 #endif
349  0xEF00, // Bank 0
350  0x4100, // Disable interrupts for first 8 gestures
351  0x4200, // Disable wave (and other modes') interrupt(s)
352  0x3707,
353  0x3817,
354  0x3906,
355  0x4201,
356  0x462D,
357  0x470F,
358  0x483C,
359  0x4900,
360  0x4A1E,
361  0x4C22,
362  0x5110,
363  0x5E10,
364  0x6027,
365  0x8042,
366  0x8144,
367  0x8204,
368  0x8B01,
369  0x9006,
370  0x950A,
371  0x960C,
372  0x9705,
373  0x9A14,
374  0x9C3F,
375  0xA519,
376  0xCC19,
377  0xCD0B,
378  0xCE13,
379  0xCF64,
380  0xD021,
381  0xEF01, // Bank 1
382  0x020F,
383  0x0310,
384  0x0402,
385  0x2501,
386  0x2739,
387  0x287F,
388  0x2908,
389  0x3EFF,
390  0x5E3D,
391  0x6596, // R_IDLE_TIME LSB - Set sensor speed to 'normal speed' - 120 fps
392  0x6797,
393  0x69CD,
394  0x6A01,
395  0x6D2C,
396  0x6E01,
397  0x7201,
398  0x7335,
399  0x7400, // Set to gesture mode
400  0x7701,
401  0xEF00, // Bank 0
402  0x41FF, // Re-enable interrupts for first 8 gestures
403  0x4201 // Re-enable interrupts for wave gesture
404 };
405 
406 
408 #define SET_GES_MODE_REG_ARRAY_SIZE (sizeof(setGestureModeRegisterArray)/sizeof(setGestureModeRegisterArray[0]))
409 
415 #ifdef PROGMEM_COMPATIBLE
416 const unsigned short setGestureModeRegisterArray[] PROGMEM = {
417 #else
418 const unsigned short setGestureModeRegisterArray[] = {
419 #endif
420  0xEF00, // Bank 0
421  0x4100, // Disable interrupts for first 8 gestures
422  0x4200, // Disable wave (and other mode's) interrupt(s)
423  0x483C,
424  0x4900,
425  0x5110,
426  0x8320,
427  0x9ff9,
428  0xEF01, // Bank 1
429  0x011E,
430  0x020F,
431  0x0310,
432  0x0402,
433  0x4140,
434  0x4330,
435  0x6596, // R_IDLE_TIME - Normal mode LSB "120 fps" (supposedly)
436  0x6600,
437  0x6797,
438  0x6801,
439  0x69CD,
440  0x6A01,
441  0x6bb0,
442  0x6c04,
443  0x6D2C,
444  0x6E01,
445  0x7400, // Set gesture mode
446  0xEF00, // Bank 0
447  0x41FF, // Re-enable interrupts for first 8 gestures
448  0x4201 // Re-enable interrupts for wave gesture
449 };
450 
451 
453 #define SET_CURSOR_MODE_REG_ARRAY_SIZE (sizeof(setCursorModeRegisterArray)/sizeof(setCursorModeRegisterArray[0]))
454 
460 #ifdef PROGMEM_COMPATIBLE
461 const unsigned short setCursorModeRegisterArray[] PROGMEM = {
462 #else
463 const unsigned short setCursorModeRegisterArray[] = {
464 #endif
465  0xEF00, // Set Bank 0
466  0x3229, // Default 29 [0] Cursor use top - def 1
467  // [1] Cursor Use BG Model - def 0
468  // [2] Cursor Invert Y - def 0 -- Not sure, doesn't seem to work
469  // [3] Cursor Invert X - def 1
470  // [5:4] Cursor top Ratio - def 0x2
471  0x3301, // Default 01 R_PositionFilterStartSizeTh [7:0]
472  0x3400, // Default 00 R_PositionFilterStartSizeTh [8]
473  0x3501, // Default 01 R_ProcessFilterStartSizeTh [7:0]
474  0x3600, // Default 00 R_ProcessFilterStartSizeTh [8]
475  0x3703, // Default 09 R_CursorClampLeft [4:0]
476  0x381B, // Default 15 R_CursorClampRight [4:0]
477  0x3903, // Default 0A R_CursorClampUp [4:0]
478  0x3A1B, // Default 12 R_CursorClampDown [4:0]
479  0x4100, // Interrupt enable mask - Should be 00 (disable gestures)
480  // All gesture flags [7:0]
481  0x4284, // Interrupt enable mask - Should be 84 (0b 1000 0100)
482  // bit 0: Wave, wave mode use only
483  // bit 1: Proximity, proximity mode use only
484  // bit 2: Has Object, cursor mode use only
485  // bit 3: Wake up trigger, trigger mode use only
486  // bit 4: Confirm, confirm mode use only
487  // bit 5: Abort, confirm mode use only
488  // bit 6: N/A
489  // bit 7:No Object, cursor mode use only
490  0x8B01, // Default 10 R_Cursor_ObjectSizeTh [7:0]
491  0x8C07, // Default 07 R_PositionResolution [2:0]
492  0xEF01, // Set Bank 1
493  0x0403, // Invert X&Y Axes in lens for GUI coordinates
494  // Where (0,0) is in upper left, positive down (Y) and right (X)
495  0x7403, // Enable cursor mode 0 - gesture, 3 - cursor, 5 - proximity
496  0xEF00 // Set Bank 0 (parking it)
497 };
498 
499 
507 {
508  public:
509  uint8_t begin();
510  uint8_t begin(TwoWire * chosenWireHandle); // Ex: begin(&Wire1)
511 
512  void disable(); // Suspend interrupts (both pin and registers)
513  void enable(); // Resume interrupts (both pin and registers)
514 
517  void setGestureMode(); // Put sensor into gesture mode
518  void setCursorMode(); // Put sensor into cursor mode
521  void invertXAxis(); // Invert (toggle) sensor's X (vertical) axis
522  void invertYAxis(); // Invert (toggle) sensors' Y (vertical) axis
523 
524  void setNormalSpeed(); // Set sensor sampling rate to 120fps
525  void setGameSpeed(); // Set sensor sampling rate to 240fps
526 
530  void clearGestureInterrupts();
531 
532  void setGestureEntryTime(unsigned long newGestureEntryTime);
533  void setGestureExitTime(unsigned long newGestureExitTime);
534 
535  int getWaveCount(); // 0..15 waves
536  int getNoObjectCount(); // 0..255 ticks (about 7.2ms each in normal, 4.1ms in game)
537  int getNoMotionCount(); // 0..12 ticks
538 
539  int getObjectBrightness(); // 255 is max
540  int getObjectSize(); // 900 is max (30x30 pixel array)
541 
542  int getObjectCenterX(); // 0..4096 (likey less like cursor mode)
543  int getObjectCenterY(); // 0..4096 (likey less like cursor mode)
544  bool isObjectInView(); // True if an object is in view
545 
546  int getObjectVelocityX(); // Velocity of object on X direction
547  int getObjectVelocityY(); // Velocity of object on Y direction
548  int getObjectVelocityX_raw(); // Velocity of object on X direction - RAW data
549  int getObjectVelocityY_raw(); // Velocity of object on Y direction - RAW data
554  Corner getCorner(); // Returns which corner the object is in
559  bool isCursorInView(); // Cursor object in view
560 
561  int getCursorX(); // Get cursor's X axis location
562  int getCursorY(); // Get cusors's Y axis location
567  //int getProximityDistance(); // Read an object's "proximity 255..0"
570  private:
571  unsigned long gestureEntryTime; // User set gesture entry delay in ms (default: 0)
572  unsigned long gestureExitTime; // User set gesture exit delay in ms (default 200)
573 
574  TwoWire *wireHandle; // User selected Wire bus (default: Wire)
575 
576  uint8_t writeRegister(uint8_t i2cAddress, uint8_t dataByte);
577  uint8_t readRegister(uint8_t i2cAddress, uint8_t byteCount, uint8_t data[]);
578 
579  void selectRegisterBank(Bank_e bank);
580 
581  uint8_t getGesturesReg0(uint8_t data[]);
582  uint8_t getGesturesReg1(uint8_t data[]);
583 
584  Gesture forwardBackwardGestureCheck(Gesture initialGesture);
585 
586  bool isPAJ7620UDevice();
587  void initializeDeviceSettings();
588 
589  void writeRegisterArray(const unsigned short array[], int arraySize);
590 };
591 
592 #endif
const unsigned short setGestureModeRegisterArray[]
Gesture mode specific register addresses and values.
Definition: RevEng_PAJ7620.h:418
Gesture
Gesture result definitions.
Definition: RevEng_PAJ7620.h:72
@ GES_BACKWARD
Backward gesture.
Definition: RevEng_PAJ7620.h:79
@ GES_NONE
No gesture.
Definition: RevEng_PAJ7620.h:73
@ GES_WAVE
Wave gesture.
Definition: RevEng_PAJ7620.h:82
@ GES_RIGHT
Rightward gesture.
Definition: RevEng_PAJ7620.h:77
@ GES_LEFT
Leftward gesture.
Definition: RevEng_PAJ7620.h:76
@ GES_FORWARD
Forward gesture.
Definition: RevEng_PAJ7620.h:78
@ GES_CLOCKWISE
Clockwise circular gesture.
Definition: RevEng_PAJ7620.h:80
@ GES_DOWN
Downward gesture.
Definition: RevEng_PAJ7620.h:75
@ GES_UP
Upwards gesture.
Definition: RevEng_PAJ7620.h:74
@ GES_ANTICLOCKWISE
Anticlockwise circular gesture.
Definition: RevEng_PAJ7620.h:81
const unsigned short initRegisterArray[]
Initial device register addresses and values.
Definition: RevEng_PAJ7620.h:347
const unsigned short setCursorModeRegisterArray[]
Cursor mode specific register addresses and values.
Definition: RevEng_PAJ7620.h:463
Bank_e
Used for selecting PAJ7620 memory bank to read/write from.
Definition: RevEng_PAJ7620.h:90
@ BANK1
Memory bank 1.
Definition: RevEng_PAJ7620.h:92
@ BANK0
Memory bank 0.
Definition: RevEng_PAJ7620.h:91
Corner
Used for reading the corners in corners mode and PIN mode.
Definition: RevEng_PAJ7620.h:100
@ QUADRANT_II
Object in cartesian quadrant II (NW)
Definition: RevEng_PAJ7620.h:109
@ CORNER_SW
Object in SW quadrant.
Definition: RevEng_PAJ7620.h:104
@ CORNER_NONE
No object in view.
Definition: RevEng_PAJ7620.h:101
@ QUADRANT_I
Object in cartesian quadrant I (NE)
Definition: RevEng_PAJ7620.h:108
@ QUADRANT_IV
Object in cartesian quadrant IV (SE)
Definition: RevEng_PAJ7620.h:111
@ QUADRANT_NONE
No object in view.
Definition: RevEng_PAJ7620.h:107
@ CORNER_MIDDLE
Object in between quadrants.
Definition: RevEng_PAJ7620.h:106
@ QUADRANT_III
Object in cartesian quadrant III (SW)
Definition: RevEng_PAJ7620.h:110
@ CORNER_SE
Object in SE quadrant.
Definition: RevEng_PAJ7620.h:105
@ CORNER_NE
Object in NE quadrant.
Definition: RevEng_PAJ7620.h:102
@ CORNER_NW
Object in NW quadrant.
Definition: RevEng_PAJ7620.h:103
PAJ7620 Device API class - As developed by RevEng Devs.
Definition: RevEng_PAJ7620.h:507
int getObjectVelocityY()
Gets object's current Y velocity's value.
Definition: RevEng_PAJ7620.cpp:849
void disable()
Disables sensor for reading & interrupts.
Definition: RevEng_PAJ7620.cpp:433
int getObjectVelocityY_raw()
Gets object's current Y velocity's raw value.
Definition: RevEng_PAJ7620.cpp:805
int getObjectCenterY()
Gets Gesture object's current Y location.
Definition: RevEng_PAJ7620.cpp:757
void setGestureEntryTime(unsigned long newGestureEntryTime)
Sets time sensor waits between getGesture call to reading gesture from sensor.
Definition: RevEng_PAJ7620.cpp:468
void enable()
Enables sensor for reading & interrupts.
Definition: RevEng_PAJ7620.cpp:447
bool isCursorInView()
Returns whether an object is in view as a cursor.
Definition: RevEng_PAJ7620.cpp:368
int getCursorY()
Gets cursor object's current Y location.
Definition: RevEng_PAJ7620.cpp:344
void setGestureMode()
Puts device into Gesture mode.
Definition: RevEng_PAJ7620.cpp:292
Gesture readGesture()
Reads the latest gesture from the device.
Definition: RevEng_PAJ7620.cpp:593
Corner getCorner()
Gets which quadrant an object is in.
Definition: RevEng_PAJ7620.cpp:881
int getNoObjectCount()
Get how long since the object left the view in gesture mode.
Definition: RevEng_PAJ7620.cpp:698
int getObjectCenterX()
Gets Gesture object's current X location.
Definition: RevEng_PAJ7620.cpp:732
void invertXAxis()
Inverts the X (horizontal) axis.
Definition: RevEng_PAJ7620.cpp:394
void setNormalSpeed()
Set sensor to "normal" sampling speed of 120fps.
Definition: RevEng_PAJ7620.cpp:515
int getWaveCount()
Get current count of waves by user.
Definition: RevEng_PAJ7620.cpp:543
int getObjectVelocityX_raw()
Gets object's current X velocity's raw value.
Definition: RevEng_PAJ7620.cpp:781
int getObjectSize()
Read object's size (in pixels)
Definition: RevEng_PAJ7620.cpp:676
int getNoMotionCount()
Get how long no motion has been seen in gesture mode.
Definition: RevEng_PAJ7620.cpp:716
int getObjectVelocityX()
Gets object's current X velocity's value.
Definition: RevEng_PAJ7620.cpp:830
void setGameSpeed()
Set sensor to "game mode" sampling speed of 240fps.
Definition: RevEng_PAJ7620.cpp:500
void setCursorMode()
Puts device into Cursor mode.
Definition: RevEng_PAJ7620.cpp:307
uint8_t begin()
PAJ7620 device initialization and I2C connect to default Wire bus.
Definition: RevEng_PAJ7620.cpp:64
void clearGestureInterrupts()
Clear current gesture interrupt vectors without returning gesture value.
Definition: RevEng_PAJ7620.cpp:530
void invertYAxis()
Inverts the Y (vertical) axis.
Definition: RevEng_PAJ7620.cpp:416
void setGestureExitTime(unsigned long newGestureExitTime)
Sets time sensor waits during getGesture() after gesture value read.
Definition: RevEng_PAJ7620.cpp:487
bool isObjectInView()
Gets whether an object is in view or not.
Definition: RevEng_PAJ7620.cpp:865
int getObjectBrightness()
Read object's "brightness".
Definition: RevEng_PAJ7620.cpp:660
int getCursorX()
Gets cursor object's current X location.
Definition: RevEng_PAJ7620.cpp:320