![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Cubic Hand project for EECS 249A course.
Dependencies: MMA8451Q TSI cc3000_hostdriver_mbedsocket NVIC_set_all_priorities mbed Multi_WS2811
Diff: GestureRecognition.cpp
- Revision:
- 40:bdd949fc3bc2
- Child:
- 48:2ba6321d79fc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GestureRecognition.cpp Thu Dec 11 10:18:48 2014 +0000 @@ -0,0 +1,55 @@ +#include "GestureRecognition.h" +#include "mbed.h" + +#define MAX_COUNT 10 + +GestureRecognition::GestureRecognition(){ + counter = 0; +} + +GestureRecognition::~GestureRecognition(){ +} + + +//Finger data is given in range of 0-150. 1500 = finger is bent. 0 = finger is straight out. + +CubeUpdateParameters GestureRecognition::sensorToGesture(Glove data){ + CubeUpdateParameters returnParams; + returnParams.size = 0; + returnParams.deltaX = 0; + returnParams.deltaY = 0; + returnParams.deltaZ = 0; + if (++counter == MAX_COUNT) { + //Change size based on finger gesture + if (data.fingers[0] > 75 && data.fingers[1] > 75 && data.fingers[2] > 75 && data.fingers[3] < 75 && data.fingers[4] > 75 ) + returnParams.size = 2; + else if (data.fingers[0] > 75 && data.fingers[1] > 75 && data.fingers[2] < 75 && data.fingers[3] < 75 && data.fingers[4] > 75 ) + returnParams.size = 4; + else if (data.fingers[0] > 75 && data.fingers[1] < 75 && data.fingers[2] < 75 && data.fingers[3] < 75 && data.fingers[4] > 75 ) + returnParams.size = 6; + else if (data.fingers[0] < 75 && data.fingers[1] < 75 && data.fingers[2] < 75 && data.fingers[3] < 75 && data.fingers[4] > 75 ) + returnParams.size = 8; + //Change color + else if (data.fingers[0] > 75 && data.fingers[1] > 75 && data.fingers[2] > 75 && data.fingers[4] > 75 ) { + returnParams.hue = data.fingers[3]/150.0; + } + + //Change position. Roll, pitch, and yaw are given as degrees. + if (data.roll > 5 ) + returnParams.deltaX = 1; + else if (data.roll < -5) + returnParams.deltaX = -1; + else if (data.pitch > 5) + returnParams.deltaZ = 1; + else if (data.pitch < -5) + returnParams.deltaZ = -1; + else if (data.pitch > 5) + returnParams.deltaY = 1; + else if (data.pitch + 360 < -5) + returnParams.deltaY = -1; + + counter = 0; + + } + return returnParams; +} \ No newline at end of file