Initial Release of PixArt Gesture PAJ7620 on Nordic nRF051
Dependencies: BLE_API Pixart_Gesture mbed nRF51822
Fork of PAJ7620_Gesture by
Diff: main.cpp
- Revision:
- 0:be97d9a1d460
diff -r 000000000000 -r be97d9a1d460 main.cpp
--- /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;
+ }
+}
+
+
+

PAJ7620 Integrated Gesture Recognition Optical CMOS Sensor