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:
0:be97d9a1d460
Child:
2:202734861217
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Sep 15 18:08:06 2016 +0000
@@ -0,0 +1,240 @@
+/* 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.
+ */
+
+#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);
+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)
+{
+    //UP,DOWN,LEFT,RIGHT,PUSH,POLL,CLOCKWISE,COUNTER_CLOCKWISE,WAVE};
+    switch (gesture)
+    {
+        case UP:
+          pc.printf("UP \r\n");
+          break;
+        case DOWN:
+          pc.printf("DOWN \r\n");
+          break;
+        case LEFT:
+          pc.printf("LEFT \r\n");
+          break;
+        case RIGHT:
+          pc.printf("RIGHT \r\n");
+          break;
+        case PUSH:
+          pc.printf("PUSH \r\n");
+          break;
+        case POLL:
+          pc.printf("POLL \r\n");
+          break;
+        case CLOCKWISE:
+          pc.printf("CLOCKWISE \r\n");
+          break;
+        case COUNTER_CLOCKWISE:
+          pc.printf("COUNTER_CLOCKWISE \r\n");
+          break;
+        case WAVE:
+          pc.printf("WAVE \r\n");
+          break;        
+        default:
+          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;
+    }
+}
+
+int main(void)
+{  
+    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");    
+    }
+        
+        
+    while(true)
+        ;
+}
+
+
+
+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;
+    }
+}
+
+
+