Playing around with accelerometer and magnetometer on mbed KL46Z

Dependencies:   MAG3110 MMA8451Q PinDetect mbed TSI

Revision:
12:d9d577c25961
Parent:
11:7af59a3d9ac5
Child:
13:921cb2856808
Child:
15:90d4b8ddc586
--- a/main.cpp	Thu Feb 06 21:35:02 2014 +0000
+++ b/main.cpp	Fri Feb 07 09:46:25 2014 +0000
@@ -35,6 +35,12 @@
 float lightRate = 0.1;
 float touchRate = 0.1;
 
+// Enables
+int accEn = 1;
+int magEn = 1;
+int lightEn = 1;
+int touchEn = 1;
+
 // Receiving Data
 const int bufferSize = 255;
 char buffer[bufferSize];
@@ -97,10 +103,10 @@
 
 void printData()
 {
-    
-    pc.printf("/%f/%f/%f/%d/%d/%d/%f/%f/%f/%f/%f/%f/%d/\r\n", 
+    pc.printf("/%f/%f/%f/%d/%d/%d/%f/%f/%.3f/%.3f/%.3f/%.3f/%d/%d/%d/%d/\r\n", 
         xAcc, yAcc, zAcc, xMag, yMag, zMag, xLight, xTouch, 
-        accRate, magRate, lightRate, touchRate, received);
+        accRate, magRate, lightRate, touchRate, 
+        accEn, magEn, lightEn, touchEn);
         
 }  
 
@@ -137,14 +143,69 @@
     //pc.printf("%s\r\n", buffer);
     char* cmd_index;
     char* cmd_val;
+    char* disStr = "ddd";
+    char* enStr = "eee";
     // read in first value (0, 1, 2, or 3)
     cmd_index = strtok(buffer, "x");
     //pc.printf("%s\r\n", cmd_index);
     //read in second value (integer larger than 050)
     cmd_val = strtok(NULL, "x");
     //pc.printf("%s\r\n", cmd_val);
+    // ddd means disable
+    if (strcmp(cmd_val, disStr) == 0)
+    {
+        ledgreen = 1;
+        switch(*cmd_index)
+        {
+            case '1':  
+                timerAcc.detach();
+                accEn = 0;
+                break;
+            case '2':  
+                timerMag.detach();
+                magEn = 0;
+                break;
+            case '3': 
+                timerLight.detach();
+                lightEn = 0;
+                break;
+            case '4':  
+                timerTouch.detach();
+                touchEn = 0;
+                break;
+            default:
+                //pc.printf("incorrect input\r\n");          
+                break;
+        }
+    }
+    // eee means enable
+    else if (strcmp(cmd_val, enStr) == 0)
+    {
+        switch(*cmd_index)
+        {
+            case '1':  
+                timerAcc.attach(&accTime, accRate); 
+                accEn = 1;
+                break;
+            case '2':  
+                timerMag.attach(&magTime, magRate);
+                magEn = 1;
+                break;
+            case '3': 
+                timerLight.attach(&lightTime, lightRate);
+                lightEn = 1;
+                break;
+            case '4':  
+                timerTouch.attach(&touchTime, touchRate);
+                touchEn = 1;
+                break;
+            default:
+                //pc.printf("incorrect input\r\n");          
+                break;
+        }
+    }
     temp = strtod(cmd_val, NULL)/1000;
-    if (temp >= 0.05 && strlen(cmd_val) >= 3)
+    if (temp > 0.06 && strlen(cmd_val) >= 3)
     {
         switch(*cmd_index)
         {