Initial Release of PixArt Gesture PAJ7620 on Nordic nRF051

Dependencies:   BLE_API Pixart_Gesture mbed nRF51822

Fork of PAJ7620_Gesture by PixArt Imaging

Committer:
pixus_mbed
Date:
Thu Sep 15 18:33:34 2016 +0000
Revision:
1:3dfdb3e1653b
Parent:
0:be97d9a1d460
Initial Release of the PixArt Gesture PAJ7620 main.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pixus_mbed 0:be97d9a1d460 1 /* mbed Microcontroller Library
pixus_mbed 0:be97d9a1d460 2 * Copyright (c) 2006-2013 ARM Limited
pixus_mbed 0:be97d9a1d460 3 *
pixus_mbed 0:be97d9a1d460 4 * Licensed under the Apache License, Version 2.0 (the "License");
pixus_mbed 0:be97d9a1d460 5 * you may not use this file except in compliance with the License.
pixus_mbed 0:be97d9a1d460 6 * You may obtain a copy of the License at
pixus_mbed 0:be97d9a1d460 7 *
pixus_mbed 0:be97d9a1d460 8 * http://www.apache.org/licenses/LICENSE-2.0
pixus_mbed 0:be97d9a1d460 9 *
pixus_mbed 0:be97d9a1d460 10 * Unless required by applicable law or agreed to in writing, software
pixus_mbed 0:be97d9a1d460 11 * distributed under the License is distributed on an "AS IS" BASIS,
pixus_mbed 0:be97d9a1d460 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
pixus_mbed 0:be97d9a1d460 13 * See the License for the specific language governing permissions and
pixus_mbed 0:be97d9a1d460 14 * limitations under the License.
pixus_mbed 0:be97d9a1d460 15 */
pixus_mbed 0:be97d9a1d460 16
pixus_mbed 0:be97d9a1d460 17 #include "mbed.h"
pixus_mbed 0:be97d9a1d460 18 #include "Gesture.h"
pixus_mbed 0:be97d9a1d460 19 /*DigitalOut ledup(LED1);
pixus_mbed 0:be97d9a1d460 20 DigitalOut leddn(LED4);
pixus_mbed 0:be97d9a1d460 21 DigitalOut ledlt(LED3);
pixus_mbed 0:be97d9a1d460 22 DigitalOut ledrt(LED2);*/
pixus_mbed 0:be97d9a1d460 23 DigitalOut ledup(p15);//D1
pixus_mbed 0:be97d9a1d460 24 DigitalOut leddn(p13);//D3
pixus_mbed 0:be97d9a1d460 25 DigitalOut ledlt(p12);//D4
pixus_mbed 0:be97d9a1d460 26 DigitalOut ledrt(p14);//D2
pixus_mbed 0:be97d9a1d460 27 DigitalIn btn1(p17);//setting selection
pixus_mbed 0:be97d9a1d460 28 DigitalIn btn2(p18);
pixus_mbed 0:be97d9a1d460 29 DigitalIn btn3(p19);
pixus_mbed 0:be97d9a1d460 30 DigitalIn btn4(p20);
pixus_mbed 0:be97d9a1d460 31 DigitalOut ld1(LED1);//setting indicator
pixus_mbed 0:be97d9a1d460 32 DigitalOut ld2(LED2);
pixus_mbed 0:be97d9a1d460 33 DigitalOut ld3(LED3);
pixus_mbed 0:be97d9a1d460 34 DigitalOut ld4(LED4);
pixus_mbed 0:be97d9a1d460 35 Serial pc(USBTX, USBRX);
pixus_mbed 0:be97d9a1d460 36 I2C i2c(I2C_SDA0, I2C_SCL0);
pixus_mbed 0:be97d9a1d460 37 Ticker ticker;
pixus_mbed 0:be97d9a1d460 38
pixus_mbed 0:be97d9a1d460 39 #define dly 100 //LED delay
pixus_mbed 0:be97d9a1d460 40
pixus_mbed 0:be97d9a1d460 41 void LED_Code(uint8_t OnOff); //LED on/off code. bit3~0: right/left/down/up
pixus_mbed 0:be97d9a1d460 42 void Gesture_LED(PIXART_GESTURE_TYPE gesture);
pixus_mbed 0:be97d9a1d460 43
pixus_mbed 0:be97d9a1d460 44 void GetGestute(PIXART_GESTURE_TYPE gesture)
pixus_mbed 0:be97d9a1d460 45 {
pixus_mbed 0:be97d9a1d460 46 //UP,DOWN,LEFT,RIGHT,PUSH,POLL,CLOCKWISE,COUNTER_CLOCKWISE,WAVE};
pixus_mbed 0:be97d9a1d460 47 switch (gesture)
pixus_mbed 0:be97d9a1d460 48 {
pixus_mbed 0:be97d9a1d460 49 case UP:
pixus_mbed 0:be97d9a1d460 50 pc.printf("UP \r\n");
pixus_mbed 0:be97d9a1d460 51 break;
pixus_mbed 0:be97d9a1d460 52 case DOWN:
pixus_mbed 0:be97d9a1d460 53 pc.printf("DOWN \r\n");
pixus_mbed 0:be97d9a1d460 54 break;
pixus_mbed 0:be97d9a1d460 55 case LEFT:
pixus_mbed 0:be97d9a1d460 56 pc.printf("LEFT \r\n");
pixus_mbed 0:be97d9a1d460 57 break;
pixus_mbed 0:be97d9a1d460 58 case RIGHT:
pixus_mbed 0:be97d9a1d460 59 pc.printf("RIGHT \r\n");
pixus_mbed 0:be97d9a1d460 60 break;
pixus_mbed 0:be97d9a1d460 61 case PUSH:
pixus_mbed 0:be97d9a1d460 62 pc.printf("PUSH \r\n");
pixus_mbed 0:be97d9a1d460 63 break;
pixus_mbed 0:be97d9a1d460 64 case POLL:
pixus_mbed 0:be97d9a1d460 65 pc.printf("POLL \r\n");
pixus_mbed 0:be97d9a1d460 66 break;
pixus_mbed 0:be97d9a1d460 67 case CLOCKWISE:
pixus_mbed 0:be97d9a1d460 68 pc.printf("CLOCKWISE \r\n");
pixus_mbed 0:be97d9a1d460 69 break;
pixus_mbed 0:be97d9a1d460 70 case COUNTER_CLOCKWISE:
pixus_mbed 0:be97d9a1d460 71 pc.printf("COUNTER_CLOCKWISE \r\n");
pixus_mbed 0:be97d9a1d460 72 break;
pixus_mbed 0:be97d9a1d460 73 case WAVE:
pixus_mbed 0:be97d9a1d460 74 pc.printf("WAVE \r\n");
pixus_mbed 0:be97d9a1d460 75 break;
pixus_mbed 0:be97d9a1d460 76 default:
pixus_mbed 0:be97d9a1d460 77 pc.printf("Nothing happen \r\n");
pixus_mbed 0:be97d9a1d460 78 }
pixus_mbed 0:be97d9a1d460 79 Gesture_LED(gesture);
pixus_mbed 0:be97d9a1d460 80 }
pixus_mbed 0:be97d9a1d460 81
pixus_mbed 0:be97d9a1d460 82 void Gesture_LED(PIXART_GESTURE_TYPE gesture)
pixus_mbed 0:be97d9a1d460 83 {
pixus_mbed 0:be97d9a1d460 84 switch (gesture)
pixus_mbed 0:be97d9a1d460 85 {
pixus_mbed 0:be97d9a1d460 86 case UP: //up
pixus_mbed 0:be97d9a1d460 87 LED_Code(1);
pixus_mbed 0:be97d9a1d460 88 wait_ms(400);
pixus_mbed 0:be97d9a1d460 89 LED_Code(0);
pixus_mbed 0:be97d9a1d460 90 break;
pixus_mbed 0:be97d9a1d460 91 case DOWN: //down
pixus_mbed 0:be97d9a1d460 92 LED_Code(2);
pixus_mbed 0:be97d9a1d460 93 wait_ms(400);
pixus_mbed 0:be97d9a1d460 94 LED_Code(0);
pixus_mbed 0:be97d9a1d460 95 break;
pixus_mbed 0:be97d9a1d460 96 case LEFT: //left
pixus_mbed 0:be97d9a1d460 97 LED_Code(4);
pixus_mbed 0:be97d9a1d460 98 wait_ms(400);
pixus_mbed 0:be97d9a1d460 99 LED_Code(0);
pixus_mbed 0:be97d9a1d460 100 break;
pixus_mbed 0:be97d9a1d460 101 case RIGHT: //right
pixus_mbed 0:be97d9a1d460 102 LED_Code(8);
pixus_mbed 0:be97d9a1d460 103 wait_ms(400);
pixus_mbed 0:be97d9a1d460 104 LED_Code(0);
pixus_mbed 0:be97d9a1d460 105 break;
pixus_mbed 0:be97d9a1d460 106 case CLOCKWISE: //clockwise
pixus_mbed 0:be97d9a1d460 107 LED_Code(1); //up
pixus_mbed 0:be97d9a1d460 108 LED_Code(0);
pixus_mbed 0:be97d9a1d460 109 LED_Code(8); //right
pixus_mbed 0:be97d9a1d460 110 LED_Code(0);
pixus_mbed 0:be97d9a1d460 111 LED_Code(2); //down
pixus_mbed 0:be97d9a1d460 112 LED_Code(0);
pixus_mbed 0:be97d9a1d460 113 LED_Code(4); //left
pixus_mbed 0:be97d9a1d460 114 LED_Code(0);
pixus_mbed 0:be97d9a1d460 115 LED_Code(1); //up
pixus_mbed 0:be97d9a1d460 116 LED_Code(0);
pixus_mbed 0:be97d9a1d460 117 break;
pixus_mbed 0:be97d9a1d460 118 case COUNTER_CLOCKWISE: //counter-clockwise
pixus_mbed 0:be97d9a1d460 119 LED_Code(1); //up
pixus_mbed 0:be97d9a1d460 120 LED_Code(0);
pixus_mbed 0:be97d9a1d460 121 LED_Code(4); //left
pixus_mbed 0:be97d9a1d460 122 LED_Code(0);
pixus_mbed 0:be97d9a1d460 123 LED_Code(2); //down
pixus_mbed 0:be97d9a1d460 124 LED_Code(0);
pixus_mbed 0:be97d9a1d460 125 LED_Code(8); //right
pixus_mbed 0:be97d9a1d460 126 LED_Code(0);
pixus_mbed 0:be97d9a1d460 127 LED_Code(1); //up
pixus_mbed 0:be97d9a1d460 128 LED_Code(0);
pixus_mbed 0:be97d9a1d460 129 break;
pixus_mbed 0:be97d9a1d460 130 case PUSH: //forward
pixus_mbed 0:be97d9a1d460 131 LED_Code(13); //up/left/right
pixus_mbed 0:be97d9a1d460 132 wait_ms(400);
pixus_mbed 0:be97d9a1d460 133 LED_Code(0);
pixus_mbed 0:be97d9a1d460 134 break;
pixus_mbed 0:be97d9a1d460 135 case POLL: //backward
pixus_mbed 0:be97d9a1d460 136 LED_Code(14); //down/left/right
pixus_mbed 0:be97d9a1d460 137 wait_ms(400);
pixus_mbed 0:be97d9a1d460 138 LED_Code(0);
pixus_mbed 0:be97d9a1d460 139 break;
pixus_mbed 0:be97d9a1d460 140 case WAVE: //wave
pixus_mbed 0:be97d9a1d460 141 LED_Code(15); //all on
pixus_mbed 0:be97d9a1d460 142 LED_Code(0);
pixus_mbed 0:be97d9a1d460 143 LED_Code(15); //all on
pixus_mbed 0:be97d9a1d460 144 LED_Code(0);
pixus_mbed 0:be97d9a1d460 145 LED_Code(15); //all on
pixus_mbed 0:be97d9a1d460 146 LED_Code(0);
pixus_mbed 0:be97d9a1d460 147 break;
pixus_mbed 0:be97d9a1d460 148 default:
pixus_mbed 0:be97d9a1d460 149 LED_Code(0);
pixus_mbed 0:be97d9a1d460 150 break;
pixus_mbed 0:be97d9a1d460 151 }
pixus_mbed 0:be97d9a1d460 152 }
pixus_mbed 0:be97d9a1d460 153
pixus_mbed 0:be97d9a1d460 154 int main(void)
pixus_mbed 0:be97d9a1d460 155 {
pixus_mbed 0:be97d9a1d460 156 pc.baud (115200);
pixus_mbed 0:be97d9a1d460 157 pc.printf("Start Pixart Gesture demo\n\r");
pixus_mbed 0:be97d9a1d460 158
pixus_mbed 0:be97d9a1d460 159 i2c.frequency(400000);
pixus_mbed 0:be97d9a1d460 160
pixus_mbed 0:be97d9a1d460 161 LED_Code(0);
pixus_mbed 0:be97d9a1d460 162
pixus_mbed 0:be97d9a1d460 163 bool Result = false;
pixus_mbed 0:be97d9a1d460 164 Pixart_Gesture *m_Gesture = new Pixart_Gesture(&i2c,100,GetGestute,Result);
pixus_mbed 0:be97d9a1d460 165
pixus_mbed 0:be97d9a1d460 166 if(Result == true)
pixus_mbed 0:be97d9a1d460 167 {
pixus_mbed 0:be97d9a1d460 168 pc.printf("Initial Pixart Gesture successful\n\r");
pixus_mbed 0:be97d9a1d460 169 }
pixus_mbed 0:be97d9a1d460 170 else
pixus_mbed 0:be97d9a1d460 171 {
pixus_mbed 0:be97d9a1d460 172 pc.printf("Initial Pixart Gesture fail\n\r");
pixus_mbed 0:be97d9a1d460 173 }
pixus_mbed 0:be97d9a1d460 174
pixus_mbed 0:be97d9a1d460 175
pixus_mbed 0:be97d9a1d460 176 while(true)
pixus_mbed 0:be97d9a1d460 177 ;
pixus_mbed 0:be97d9a1d460 178 }
pixus_mbed 0:be97d9a1d460 179
pixus_mbed 0:be97d9a1d460 180
pixus_mbed 0:be97d9a1d460 181
pixus_mbed 0:be97d9a1d460 182 void LED_Code(uint8_t OnOff)
pixus_mbed 0:be97d9a1d460 183 {
pixus_mbed 0:be97d9a1d460 184 switch (OnOff) {
pixus_mbed 0:be97d9a1d460 185 case 0:
pixus_mbed 0:be97d9a1d460 186 ledrt = 1; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 187 break;
pixus_mbed 0:be97d9a1d460 188 case 1:
pixus_mbed 0:be97d9a1d460 189 ledrt = 1; ledlt = 1; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 190 break;
pixus_mbed 0:be97d9a1d460 191 case 2:
pixus_mbed 0:be97d9a1d460 192 ledrt = 1; ledlt = 1; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 193 break;
pixus_mbed 0:be97d9a1d460 194 case 3:
pixus_mbed 0:be97d9a1d460 195 ledrt = 1; ledlt = 1; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 196 break;
pixus_mbed 0:be97d9a1d460 197 case 4:
pixus_mbed 0:be97d9a1d460 198 ledrt = 1; ledlt = 0; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 199 break;
pixus_mbed 0:be97d9a1d460 200 case 5:
pixus_mbed 0:be97d9a1d460 201 ledrt = 1; ledlt = 0; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 202 break;
pixus_mbed 0:be97d9a1d460 203 case 6:
pixus_mbed 0:be97d9a1d460 204 ledrt = 1; ledlt = 0; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 205 break;
pixus_mbed 0:be97d9a1d460 206 case 7:
pixus_mbed 0:be97d9a1d460 207 ledrt = 1; ledlt = 0; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 208 break;
pixus_mbed 0:be97d9a1d460 209 case 8:
pixus_mbed 0:be97d9a1d460 210 ledrt = 0; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 211 break;
pixus_mbed 0:be97d9a1d460 212 case 9:
pixus_mbed 0:be97d9a1d460 213 ledrt = 0; ledlt = 1; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 214 break;
pixus_mbed 0:be97d9a1d460 215 case 10:
pixus_mbed 0:be97d9a1d460 216 ledrt = 0; ledlt = 1; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 217 break;
pixus_mbed 0:be97d9a1d460 218 case 11:
pixus_mbed 0:be97d9a1d460 219 ledrt = 0; ledlt = 1; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 220 break;
pixus_mbed 0:be97d9a1d460 221 case 12:
pixus_mbed 0:be97d9a1d460 222 ledrt = 0; ledlt = 0; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 223 break;
pixus_mbed 0:be97d9a1d460 224 case 13:
pixus_mbed 0:be97d9a1d460 225 ledrt = 0; ledlt = 0; leddn = 1; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 226 break;
pixus_mbed 0:be97d9a1d460 227 case 14:
pixus_mbed 0:be97d9a1d460 228 ledrt = 0; ledlt = 0; leddn = 0; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 229 break;
pixus_mbed 0:be97d9a1d460 230 case 15:
pixus_mbed 0:be97d9a1d460 231 ledrt = 0; ledlt = 0; leddn = 0; ledup = 0; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 232 break;
pixus_mbed 0:be97d9a1d460 233 default:
pixus_mbed 0:be97d9a1d460 234 ledrt = 1; ledlt = 1; leddn = 1; ledup = 1; wait_ms(dly);//make a delay
pixus_mbed 0:be97d9a1d460 235 break;
pixus_mbed 0:be97d9a1d460 236 }
pixus_mbed 0:be97d9a1d460 237 }
pixus_mbed 0:be97d9a1d460 238
pixus_mbed 0:be97d9a1d460 239
pixus_mbed 0:be97d9a1d460 240