PixArt / Mbed 2 deprecated PAJ7620_Gesture

Dependencies:   BLE_API Pixart_Gesture mbed nRF51822

Fork of PAJ7620_Gesture by PixArt Imaging

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2006-2013 ARM Limited
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #include "mbed.h"
00018 #include "Gesture.h"
00019 /*DigitalOut ledup(LED1);
00020 DigitalOut leddn(LED4);
00021 DigitalOut ledlt(LED3);
00022 DigitalOut ledrt(LED2);*/
00023 DigitalOut ledup(p15);//D1
00024 DigitalOut leddn(p13);//D3
00025 DigitalOut ledlt(p12);//D4
00026 DigitalOut ledrt(p14);//D2
00027 DigitalIn btn1(p17);//setting selection
00028 DigitalIn btn2(p18);
00029 DigitalIn btn3(p19);
00030 DigitalIn btn4(p20);
00031 DigitalOut ld1(LED1);//setting indicator
00032 DigitalOut ld2(LED2);
00033 DigitalOut ld3(LED3);
00034 DigitalOut ld4(LED4);
00035 Serial  pc(USBTX, USBRX);
00036 I2C i2c(I2C_SDA0, I2C_SCL0);
00037 Ticker  ticker;
00038 
00039 #define dly 100             //LED delay
00040 
00041 void LED_Code(uint8_t OnOff);   //LED on/off code. bit3~0: right/left/down/up
00042 void Gesture_LED(PIXART_GESTURE_TYPE gesture);
00043 
00044 void GetGestute(PIXART_GESTURE_TYPE gesture)
00045 {
00046     //UP,DOWN,LEFT,RIGHT,PUSH,POLL,CLOCKWISE,COUNTER_CLOCKWISE,WAVE};
00047     switch (gesture)
00048     {
00049         case UP:
00050           pc.printf("UP \r\n");
00051           break;
00052         case DOWN:
00053           pc.printf("DOWN \r\n");
00054           break;
00055         case LEFT:
00056           pc.printf("LEFT \r\n");
00057           break;
00058         case RIGHT:
00059           pc.printf("RIGHT \r\n");
00060           break;
00061         case PUSH:
00062           pc.printf("PUSH \r\n");
00063           break;
00064         case POLL:
00065           pc.printf("POLL \r\n");
00066           break;
00067         case CLOCKWISE:
00068           pc.printf("CLOCKWISE \r\n");
00069           break;
00070         case COUNTER_CLOCKWISE:
00071           pc.printf("COUNTER_CLOCKWISE \r\n");
00072           break;
00073         case WAVE:
00074           pc.printf("WAVE \r\n");
00075           break;        
00076         default:
00077           pc.printf("Nothing happen \r\n");          
00078     }  
00079     Gesture_LED(gesture);
00080 }
00081 
00082 void Gesture_LED(PIXART_GESTURE_TYPE gesture)
00083 {    
00084     switch (gesture)
00085     {
00086     case UP:      //up
00087         LED_Code(1);
00088         wait_ms(400);
00089         LED_Code(0);
00090         break;
00091     case DOWN:      //down
00092         LED_Code(2);
00093         wait_ms(400);
00094         LED_Code(0);
00095         break;
00096     case LEFT:      //left
00097         LED_Code(4);
00098         wait_ms(400);
00099         LED_Code(0);
00100         break;
00101     case RIGHT:      //right
00102         LED_Code(8);
00103         wait_ms(400);
00104         LED_Code(0);
00105         break;
00106     case CLOCKWISE:      //clockwise
00107         LED_Code(1); //up
00108         LED_Code(0);
00109         LED_Code(8); //right
00110         LED_Code(0);
00111         LED_Code(2); //down
00112         LED_Code(0);
00113         LED_Code(4); //left
00114         LED_Code(0);
00115         LED_Code(1); //up
00116         LED_Code(0);
00117         break;
00118     case COUNTER_CLOCKWISE:      //counter-clockwise
00119         LED_Code(1); //up
00120         LED_Code(0);
00121         LED_Code(4); //left
00122         LED_Code(0);
00123         LED_Code(2); //down
00124         LED_Code(0);
00125         LED_Code(8); //right
00126         LED_Code(0);
00127         LED_Code(1); //up
00128         LED_Code(0);
00129         break;
00130     case PUSH:      //forward
00131         LED_Code(13); //up/left/right
00132         wait_ms(400);
00133         LED_Code(0);
00134         break;
00135     case POLL:      //backward
00136         LED_Code(14); //down/left/right
00137         wait_ms(400);
00138         LED_Code(0);
00139         break;
00140     case WAVE:     //wave
00141         LED_Code(15); //all on
00142         LED_Code(0);
00143         LED_Code(15); //all on
00144         LED_Code(0);
00145         LED_Code(15); //all on
00146         LED_Code(0);
00147         break;
00148     default:
00149         LED_Code(0);
00150         break;
00151     }
00152 }
00153 
00154 int main(void)
00155 {  
00156     pc.baud (115200);    
00157     pc.printf("Start Pixart Gesture demo\n\r");
00158     
00159     i2c.frequency(400000);    
00160     
00161     LED_Code(0);
00162     
00163     bool Result = false;
00164     Pixart_Gesture *m_Gesture = new Pixart_Gesture(&i2c,100,GetGestute,Result);
00165     
00166     if(Result == true)
00167     {
00168         pc.printf("Initial Pixart Gesture successful\n\r");
00169     }
00170     else
00171     {
00172         pc.printf("Initial Pixart Gesture fail\n\r");    
00173     }
00174         
00175         
00176     while(true)
00177         ;
00178 }
00179 
00180 
00181 
00182 void LED_Code(uint8_t OnOff)
00183 {
00184     switch (OnOff) {
00185     case 0:
00186         ledrt = 1; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
00187         break;
00188     case 1:
00189         ledrt = 1; ledlt = 1; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
00190         break;
00191     case 2:
00192         ledrt = 1; ledlt = 1; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
00193         break;
00194     case 3:
00195         ledrt = 1; ledlt = 1; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
00196         break;
00197     case 4:
00198         ledrt = 1; ledlt = 0; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
00199         break;
00200     case 5:
00201         ledrt = 1; ledlt = 0; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
00202         break;
00203     case 6:
00204         ledrt = 1; ledlt = 0; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
00205         break;
00206     case 7:
00207         ledrt = 1; ledlt = 0; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
00208         break;
00209     case 8:
00210         ledrt = 0; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
00211         break;
00212     case 9:
00213         ledrt = 0; ledlt = 1; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
00214         break;
00215     case 10:
00216         ledrt = 0; ledlt = 1; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
00217         break;
00218     case 11:
00219         ledrt = 0; ledlt = 1; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
00220         break;
00221     case 12:
00222         ledrt = 0; ledlt = 0; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
00223         break;
00224     case 13:
00225         ledrt = 0; ledlt = 0; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
00226         break;
00227     case 14:
00228         ledrt = 0; ledlt = 0; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
00229         break;
00230     case 15:
00231         ledrt = 0; ledlt = 0; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
00232         break;
00233     default:
00234         ledrt = 1; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
00235         break;
00236     }
00237 }
00238 
00239 
00240