Initial Release of PixArt Gesture PAJ7620 on Nordic nRF051
Dependencies: BLE_API Pixart_Gesture mbed nRF51822
Fork of PAJ7620_Gesture by
main.cpp@0:be97d9a1d460, 2016-09-15 (annotated)
- Committer:
- pixus_mbed
- Date:
- Thu Sep 15 18:08:06 2016 +0000
- Revision:
- 0:be97d9a1d460
PixArt Gesture main.cpp
Who changed what in which revision?
User | Revision | Line number | New 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 |