The sensor on Grove - Gesture is PAJ7620U2 that integrates gestur e recogn ition
function with general I2C interface into a single chip. It can recognize 9 basic
gestures ,and these gestures information can be simply accessed via the I2C bus.
Application: You can use Gesture as an input device to control another grove, or a
computer, mobile phone, smart car, robot, and more with a simple swipe of your
hand.
Features
• Built-in proximity det ec tion
• Various main boards support : Arduino UNO/Seeeduino/Arduino Mega2560
• 9 Basic gest ur es
• Up
• Down
• Left
• Right
• Forward
• Backward
• Clockwise
• Count Clockwise
• Wave
Tip
Spec Name
Value
Sensor
PAJ7620U2
Power supply
5V
Amb i e nt lig ht i mm unity
< 100k Lux
Gesture speed in Normal Mode
60°/s to 600°/s
Gesture speed in Gaming Mode
60°/s to 1200°/s
Interface type IIC interface
up to 400 kbit/s
Operating Temperature
-40°C to +85°C
Dimensions
20 * 20mm
Detection range
5-15mm
More details about Grove modules please refer to Grove System
Specification
With Arduino/Seeeduino
Suggest Reading for Starter - Download Arduino and install Arduino driver - Getting
Started with Seeeduino/Arduino
Hardware Installation
Grove products have a eco system and all have a same connector which can plug
onto the Base Shield. Connect this module to the I2C port of Base Shield, however,
without Base Shield, you can also connect Grove - Gesture to Arduino directly by
jumper wires.
Arduino UNO
Base Shield
Grove - Gesture
5V
I2C port
VCC
GND
I2C port
GND
SDA
I2C port
SDA
SCL
I2C port
SCL
Digit 2
Not connected
INT (Reserved pad)
INT:Gesture detection interrupt flag mask. You can connect INT pad to digit 2 of
Arduino by using jumper wire.
Below image shows how to plug Grove - Gesture onto the I2C port of Base shield
Then plug Base shield onto the Arduino UNO
Gesture Library
We have created a library to help you start playing quickly with the
Seeeduino/Arduino, in this section we’ll show you how to set up the library and
introduce some of the functions.
Setup
• Downlo ad th e li br ary code as a zip fil e fr om the Ges ture_PAJ7620 github page.
• Unzip the downloaded file into your …/arduino/libraries.
• Rename the unzipped folder “Gesture”(or:”Gesture_PAJ7620”)
• Start the Arduino IDE (or restart if it is open).
Simple Demo
The following simple demo will show you a very easy application: When you move
up, the red led will be turned on, otherwise the red led will be turned off.
#include <Wire.h>
#include "paj7620.h"
void setup()
{
paj7620Init();
}
voidloop()
{
uint8_t data = 0; // Read Bank_0_Reg_0x43/0x44 for gesture result.
paj7620ReadReg(0x43, 1, &data); // When different gestures be detected, the variable 'data'
will be set to different values by paj7620ReadReg(0x43, 1, &data).
if (data == GES_UP_FLAG) // When up gesture be detected,the variable 'data' will be set
to GES_UP_FLAG.
digitalWrite(4, HIGH); // turn the LED on (HIGH is the voltage level)
if (data == GES_DOWN_FLAG) // When down gesture be detected,the variable 'data' will be set
to GES_DOWN_FLAG.
digitalWrite(4, LOW); // turn the LED off by making the voltage LOW
Descr iption of functions
These are the most important/useful function in the library, we invite you to look at
the .h and .cpp files yourself to see all the functions available.
1.Initialize the gesture sensor chip PAJ7620
voidsetup()
{
paj7620Init();
}
This initialization code should be added to each demo.
2.Read data from PAJ7620 register via I2C - paj7620ReadReg(uint8_t addr,
uint8_t qty, uint8_t data[]) - addr: Register address - qty: Number of data to read,
addr continuously increase. - data[]: The starting address(a variable or array) to store
data.
voidloop()
{
uint8_t data = 0; // Read Bank_0_Reg_0x43/0x44 for gesture result.
paj7620ReadReg(0x43, 1, &data); // When different gestures be detected, the variable 'data'
will be set to different values by paj7620ReadReg(0x43, 1, &data).
if (data == GES_UP_FLAG) // When up gesture be detected,the variable
'data' will be set to GES_UP_FLAG.
digitalWrite(4, HIGH); // turn the LED on (HIGH is the voltage
level)
if (data == GES_DOWN_FLAG) // When down gesture be detected,the variable
Register
Address
Gesture
detected
No gesture
detected
Gesture
detected
No gesture
detected
Gesture
detected
No gesture
detected
Gesture
detected
No gesture
detected
Gesture
detected
No gesture
detected
Gesture
detected
No gesture
detected
Gesture
detected
No gesture
detected
Count
Clockwise
Gesture
detected
No gesture
detected
Gesture
detected
No gesture
detected
'data' will be set to GES_DOWN_FLAG.
digitalWrite(4, LOW); // turn the LED off by making the voltage
LOW
}
• We define some register data of gesture, refer to the following table.
Gesture Register Data
Up data==GES_UP_FLAG 0x43
Down data==GES_DOWN_FLAG 0x43
Left data==GES_LEFT_FLAG 0x43
Right data==GES_RIGHT_FLAG 0x43
Forward data==GES_FORWARD_FLAG 0x43
Backward data==GES_BACKWARD_FLAG 0x43
Clockwise data==GES_CLOCKWISE_FLAG 0x43
data==GES_COUNT_CLOCKWISE_FLAG 0x43
If Yes If Not
Wave data==GES_WAVE_FLAG 0x44
Gesture Examples/Applications
These examples are going to show you how to recognize gestures from this Grove Gesture.]
Description: This example can recognize 9 gestures and output the result, including
move up, move down, move left, move right, move forward, move backward, circleclockwise, circle-counter clockwise, and wave. You also can use Gesture as an input
device to control another grove, or a computer, mobile phone, smart car, robot, and
more with a simple swipe of your hand.
Note
When you want to recognize the Forward/Backward gestures, your gestures’ reaction
time must less than GES_ENTRY_TIME(0.8s). You also can adjust the reaction time
according to the actual circumstance.
/*
Notice: When you want to recognize the Forward/Backward gestures, your gestures' reaction time must
less than GES_ENTRY_TIME(0.8s).
You also can adjust the reaction time according to the actual circumstance.
*/
#define GES_REACTION_TIME 500 // You can adjust the reaction time according to the actual
circumstance.
#define GES_ENTRY_TIME 800 // When you want to recognize the Forward/Backward gestures,
your gestures' reaction time must less than GES_ENTRY_TIME(0.8s).
#define GES_QUIT_TIME 1000
Following are the main program used in the demo:
voidsetup()
{
uint8_t error = 0;
Serial.begin(9600);
Serial.println("\nPAJ7620U2 TEST DEMO: Recognize 9 gestures.");