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
main.cpp
- Committer:
- pixus_mbed
- Date:
- 2016-09-15
- Revision:
- 0:be97d9a1d460
- Child:
- 2:202734861217
File content as of revision 0:be97d9a1d460:
/* 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;
}
}
