grove - gesture v1 - robot parts | robot kits | robot toys · 2015. 9. 25. · simple demo the...
TRANSCRIPT
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 1/10
Grove - Gesture v1.0From Wiki 来自痴汉的爱
Contents
1 Introduction2 Features3 Specification
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 2/10
4 With Arduino/Seeeduino4.1 Suggest Reading for Starter4.2 Hardware Installation4.3 Gesture Library
4.3.1 Setup4.3.2 Simple Demo4.3.3 Description of functions
4.3.3.1 1. Initialize the gesture sensor chip PAJ76204.3.3.2 2. Read data from PAJ7620 register via I2C
4.4 Gesture Examples/Applications5 Resources
Introduction
The sensor on Grove - Gesture is PAJ7620U2 that integrates gesture recognition functionwith general I2C interface into a single chip. It can recognize 9 basic gestures ,and thesegestures information can be simply accessed via the I2C bus.
Application: You can use Gesture as an input device to control another grove, or acomputer, mobile phone, smart car, robot, and more with a simple swipe of your hand.
Features
1 See 9 gestures in the following figure
9 basicgestures
Up
Down
Left
Right
Forward
Backward
Clockwise
CountClockwise
Wave
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 3/10
2 Built-in proximity detection3 Various main boards support : Arduino UNO/Seeeduino/Arduino Mega2560
Specification
Sensor PAJ7620U2Power supply 5V
Ambient light immunity < 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
With Arduino/Seeeduino
Suggest Reading for Starter
Download Arduino and install Arduino driver(http://www.seeedstudio.com/wiki/Download_Arduino_and_install_Arduino_driver) Getting Started with Seeeduino/Arduino(http://www.seeedstudio.com/wiki/Getting_Started_with_Seeeduino)
Hardware Installation
Grove products have a eco system and all have a same connector which can plug onto theBase Shield (http://www.seeedstudio.com/wiki/index.php?title=Base_shield_v2&uselang=en). Connect this module to the I2C port of Base Shield, however, you can also connect Grove -Gesture to Arduino without Base Shield by jumper wires.
Arduino UNO Base Shield Grove - Gesture
5V
I2C port
VCC
GND GND
SDA SDA
SCL SCL
Digit 2 Not connected INT (Reserved pad)
INT:Gesture detection interrupt flag mask. You can connect INT pad to digit 2 of Arduinoby using jumper wire.
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 4/10
Plug Grove - Gesture onto the I2C port of Base shield
Then plug Base shield onto the Arduino UNO
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 5/10
Gesture Library
We have created a library to help you start playing quickly with the Seeeduino/Arduino, inthis section we'll show you how to set up the library and introduce some of the functions.
Setup
1. Download the library code as a zip file from the Gesture_PAJ7620 github page.(https://github.com/Seeed-Studio/Gesture_PAJ7620)
2. Unzip the downloaded file into your …/arduino/libraries.3. Rename the unzipped folder "Gesture"(or:"Gesture_PAJ7620")4. 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, thered led will be turned on, otherwise the red led will be turned off.
#include <Wire.h>#include "paj7620.h"
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 6/10
#include "paj7620.h" void setup(){ paj7620Init();} void loop(){ 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}
Description of functions
These are the most important/useful function in the library, we invite you to look at the .hand .cpp files yourself to see all the functions available.
1. Initialize the gesture sensor chip PAJ7620
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 7/10
void setup(){ 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 addressqty: Number of data to read, addr continuously increase.data[]: The starting address(a variable or array) to store data.
void loop(){ 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}
We define some register data of gesture, refer to the following table.
Gesture Register Data RegisterAddress
If Yes If Not
Up data==GES_UP_FLAG
0x43 Gesturedetected
No gesturedetected
Down data==GES_DOWN_FLAG
Left data==GES_LEFT_FLAG
Right data==GES_RIGHT_FLAG
Forward data==GES_FORWARD_FLAG
Backward data==GES_BACKWARD_FLAG
Clockwise data==GES_CLOCKWISE_FLAG
CountClockwise
data==GES_COUNT_CLOCKWISE_FLAG
Wave data==GES_WAVE_FLAG 0x44
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 8/10
Gesture Examples/Applications
These examples are going to show you how to recognize gestures from this Grove -Gesture.
Open File->Examples->Gesture(or:Gesture_PAJ7620)->example->paj7620_9gestures sketch for a complete example.
Description: This example can recognize 9 gestures and output the result, includingmove up, move down, move left, move right, move forward, move backward, circle-clockwise, circle-counter clockwise, and wave. You also can use Gesture as an inputdevice to control another grove, or a computer, mobile phone, smart car, robot, andmore with a simple swipe of your hand.
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 reactiontime 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:
void setup(){ uint8_t error = 0; Serial.begin(9600); Serial.println("\nPAJ7620U2 TEST DEMO: Recognize 9 gestures."); error = paj7620Init(); // initialize Paj7620 registers if (error) { Serial.print("INIT ERROR,CODE:"); Serial.println(error); } else { Serial.println("INIT OK"); } Serial.println("Please input your gestures:\n");} void loop(){ uint8_t data = 0, data1 = 0, error; error = paj7620ReadReg(0x43, 1, &data); // Read Bank_0_Reg_0x43/0x44 for gesture result. if (!error) { switch (data) // When different gestures be detected, the variable 'data' will be set to different values by paj7620ReadReg(0x43, 1, &data). { case GES_RIGHT_FLAG: delay(GES_ENTRY_TIME);
paj7620ReadReg(0x43, 1, &data);
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 9/10
paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Right"); } break; case GES_LEFT_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Left"); } break; case GES_UP_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Up"); } break; case GES_DOWN_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Down"); } break; case GES_FORWARD_FLAG: Serial.println("Forward"); delay(GES_QUIT_TIME); break; case GES_BACKWARD_FLAG: Serial.println("Backward"); delay(GES_QUIT_TIME); break; case GES_CLOCKWISE_FLAG:
↑TOP
9/25/2015 Grove Gesture v1.0 Wiki
http://www.seeedstudio.com/wiki/Grove__Gesture_v1.0 10/10
case GES_CLOCKWISE_FLAG: Serial.println("Clockwise"); break; case GES_COUNT_CLOCKWISE_FLAG: Serial.println("anti‐clockwise"); break; default: paj7620ReadReg(0x44, 1, &data1); if (data1 == GES_WAVE_FLAG) { Serial.println("wave"); } break; } } delay(100);}
In your own project, you may need multi-gestures instead of a single gesture to realiseone function , welcome to share!
Resources
Grove - Gesture_v1.0 sch pcb.zip (http://www.seeedstudio.com/wiki/File:Grove_-_Gesture_v1.0_sch_pcb.zip) PAJ7620U2_Datasheet_V0.8_20140611.pdf(http://www.seeedstudio.com/wiki/File:PAJ7620U2_Datasheet_V0.8_20140611.pdf)Library Grove - Guesture (https://github.com/Seeed-Studio/Gesture_PAJ7620)
Retrieved from "http://www.seeedstudio.com/wiki/index.php?title=Grove_-_Gesture_v1.0&oldid=106495"Categories: Sensor Grove
This page was last modified on 23 July 2015, at 06:59.This page has been accessed 5,527 times.