Cubic Hand project for EECS 249A course.

Dependencies:   MMA8451Q TSI cc3000_hostdriver_mbedsocket NVIC_set_all_priorities mbed Multi_WS2811

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