This application is Gesture Keyboard, you can use gesture to control the media player. This app is made with SeeedStudio Arch and PAJ7620U2 gesture sensor.

Dependencies:   Pixart_Gesture USBDevice mbed

Fork of PAJ7620_Gesture by PixArt Imaging

Revision:
2:202734861217
Parent:
0:be97d9a1d460
--- a/main.cpp	Thu Sep 15 18:33:34 2016 +0000
+++ b/main.cpp	Mon Mar 20 08:24:57 2017 +0000
@@ -1,44 +1,25 @@
 /* mbed Microcontroller Library
  * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * This is gesture keyboard demo by Kevin Lee
  */
 
 #include "mbed.h"
 #include "Gesture.h"
-/*DigitalOut ledup(LED1);
-DigitalOut leddn(LED4);
-DigitalOut ledlt(LED3);
-DigitalOut ledrt(LED2);*/
-DigitalOut ledup(p15);//D1
-DigitalOut leddn(p13);//D3
-DigitalOut ledlt(p12);//D4
-DigitalOut ledrt(p14);//D2
-DigitalIn btn1(p17);//setting selection
-DigitalIn btn2(p18);
-DigitalIn btn3(p19);
-DigitalIn btn4(p20);
-DigitalOut ld1(LED1);//setting indicator
-DigitalOut ld2(LED2);
-DigitalOut ld3(LED3);
-DigitalOut ld4(LED4);
-Serial  pc(USBTX, USBRX);
-I2C i2c(I2C_SDA0, I2C_SCL0);
+#include "USBKeyboard.h"
+
+// #ifdef DEBUG
+// #include "USBSerial.h"                       // To use USB virtual serial, a driver is needed, check http://mbed.org/handbook/USBSerial
+// #define LOG(args...)    pc.printf(args)
+//#include "USBSerial.h"
+
+//USBSerial pc;
+//Serial  pc(USBTX, USBRX);
+USBKeyboard keyboard;
+I2C i2c(P0_5, P0_4);
 Ticker  ticker;
 
 #define dly 100             //LED delay
 
-void LED_Code(uint8_t OnOff);   //LED on/off code. bit3~0: right/left/down/up
 void Gesture_LED(PIXART_GESTURE_TYPE gesture);
 
 void GetGestute(PIXART_GESTURE_TYPE gesture)
@@ -47,131 +28,66 @@
     switch (gesture)
     {
         case UP:
-          pc.printf("UP \r\n");
+          // pc.printf("UP \r\n");
+            keyboard.mediaControl(KEY_VOLUME_UP);
           break;
         case DOWN:
-          pc.printf("DOWN \r\n");
+          // pc.printf("DOWN \r\n");
+            keyboard.mediaControl(KEY_VOLUME_DOWN);
           break;
         case LEFT:
-          pc.printf("LEFT \r\n");
+            keyboard.mediaControl(KEY_PREVIOUS_TRACK);
+          // pc.printf("LEFT \r\n");
           break;
         case RIGHT:
-          pc.printf("RIGHT \r\n");
+            keyboard.mediaControl(KEY_NEXT_TRACK);
+          // pc.printf("RIGHT \r\n");
           break;
         case PUSH:
-          pc.printf("PUSH \r\n");
+            keyboard.mediaControl(KEY_MUTE);
+          // pc.printf("PUSH \r\n");
+          
           break;
         case POLL:
-          pc.printf("POLL \r\n");
+            keyboard.mediaControl(KEY_MUTE);
           break;
         case CLOCKWISE:
-          pc.printf("CLOCKWISE \r\n");
+            keyboard.mediaControl(KEY_PLAY_PAUSE);
+          // pc.printf("CLOCKWISE \r\n");
           break;
         case COUNTER_CLOCKWISE:
-          pc.printf("COUNTER_CLOCKWISE \r\n");
+            keyboard.mediaControl(KEY_STOP);
+          // pc.printf("COUNTER_CLOCKWISE \r\n");
           break;
         case WAVE:
-          pc.printf("WAVE \r\n");
+          // pc.printf("WAVE \r\n");
           break;        
         default:
-          pc.printf("Nothing happen \r\n");          
+          // pc.printf("Nothing happen \r\n");          
     }  
-    Gesture_LED(gesture);
-}
-
-void Gesture_LED(PIXART_GESTURE_TYPE gesture)
-{    
-    switch (gesture)
-    {
-    case UP:      //up
-        LED_Code(1);
-        wait_ms(400);
-        LED_Code(0);
-        break;
-    case DOWN:      //down
-        LED_Code(2);
-        wait_ms(400);
-        LED_Code(0);
-        break;
-    case LEFT:      //left
-        LED_Code(4);
-        wait_ms(400);
-        LED_Code(0);
-        break;
-    case RIGHT:      //right
-        LED_Code(8);
-        wait_ms(400);
-        LED_Code(0);
-        break;
-    case CLOCKWISE:      //clockwise
-        LED_Code(1); //up
-        LED_Code(0);
-        LED_Code(8); //right
-        LED_Code(0);
-        LED_Code(2); //down
-        LED_Code(0);
-        LED_Code(4); //left
-        LED_Code(0);
-        LED_Code(1); //up
-        LED_Code(0);
-        break;
-    case COUNTER_CLOCKWISE:      //counter-clockwise
-        LED_Code(1); //up
-        LED_Code(0);
-        LED_Code(4); //left
-        LED_Code(0);
-        LED_Code(2); //down
-        LED_Code(0);
-        LED_Code(8); //right
-        LED_Code(0);
-        LED_Code(1); //up
-        LED_Code(0);
-        break;
-    case PUSH:      //forward
-        LED_Code(13); //up/left/right
-        wait_ms(400);
-        LED_Code(0);
-        break;
-    case POLL:      //backward
-        LED_Code(14); //down/left/right
-        wait_ms(400);
-        LED_Code(0);
-        break;
-    case WAVE:     //wave
-        LED_Code(15); //all on
-        LED_Code(0);
-        LED_Code(15); //all on
-        LED_Code(0);
-        LED_Code(15); //all on
-        LED_Code(0);
-        break;
-    default:
-        LED_Code(0);
-        break;
-    }
+    //Gesture_LED(gesture);
 }
 
 int main(void)
 {  
-    pc.baud (115200);    
-    pc.printf("Start Pixart Gesture demo\n\r");
+//    pc.baud (115200);    
+//    pc.printf("Start Pixart Gesture demo\n\r");
     
     i2c.frequency(400000);    
     
-    LED_Code(0);
     
     bool Result = false;
     Pixart_Gesture *m_Gesture = new Pixart_Gesture(&i2c,100,GetGestute,Result);
     
-    if(Result == true)
-    {
-        pc.printf("Initial Pixart Gesture successful\n\r");
-    }
-    else
-    {
-        pc.printf("Initial Pixart Gesture fail\n\r");    
-    }
-        
+//    if(Result == true)
+//    {
+//        pc.printf("Initial Pixart Gesture successful\n\r");
+//    }
+//    else
+//    {
+//        pc.printf("Initial Pixart Gesture fail\n\r");    
+//    }
+//        
         
     while(true)
         ;
@@ -179,62 +95,6 @@
 
 
 
-void LED_Code(uint8_t OnOff)
-{
-    switch (OnOff) {
-    case 0:
-        ledrt = 1; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 1:
-        ledrt = 1; ledlt = 1; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    case 2:
-        ledrt = 1; ledlt = 1; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 3:
-        ledrt = 1; ledlt = 1; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    case 4:
-        ledrt = 1; ledlt = 0; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 5:
-        ledrt = 1; ledlt = 0; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    case 6:
-        ledrt = 1; ledlt = 0; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 7:
-        ledrt = 1; ledlt = 0; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    case 8:
-        ledrt = 0; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 9:
-        ledrt = 0; ledlt = 1; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    case 10:
-        ledrt = 0; ledlt = 1; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 11:
-        ledrt = 0; ledlt = 1; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    case 12:
-        ledrt = 0; ledlt = 0; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 13:
-        ledrt = 0; ledlt = 0; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    case 14:
-        ledrt = 0; ledlt = 0; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    case 15:
-        ledrt = 0; ledlt = 0; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
-        break;
-    default:
-        ledrt = 1; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
-        break;
-    }
-}