Simple sample that demonstrates reading the FXOS8700CQ accelerometer, convert the data to JSON and send to an Azure IoT Hub.

Dependencies:   azure_umqtt_c iothub_mqtt_transport mbed-rtos mbed wolfSSL Socket lwip-eth lwip-sys lwip

Revision:
6:0bffe8529f60
Parent:
5:3d814faa2b2e
Child:
7:2564d95cbf81
--- a/main.cpp	Fri Mar 24 23:05:08 2017 +0000
+++ b/main.cpp	Tue Apr 18 22:15:09 2017 +0000
@@ -253,10 +253,10 @@
     const int calibrationPeriod = 10;    // in seconds
     SingletonFXOS8700CQ &sfxos = SingletonFXOS8700CQ::getInstance();
     
-    int *data = new int[calibrationPeriod * 50];
+    double *data = new double[calibrationPeriod * 50];
     int i;
-    long sum = 0;
-    double mean = 0;
+    double sum = 0.0;
+    double mean = 0.0;
     double temp;
     
     printf("Calibrating...\r\n");
@@ -267,14 +267,16 @@
         {
             sfxos.setInt2Triggered(false);
             sfxos.getData(reading);
-            data[i] = (reading.accelerometer.x * reading.accelerometer.x) + (reading.accelerometer.y * reading.accelerometer.y);
-            printf("x=%d\t\ty=%d\r\n", reading.accelerometer.x, reading.accelerometer.y);
+            data[i] = sqrt((double)(reading.accelerometer.x * reading.accelerometer.x) + (reading.accelerometer.y * reading.accelerometer.y));
+//            data[i] = reading.accelerometer.x + reading.accelerometer.y;
+            printf("x=%d\t\ty=%d\t\tsum=%f\r\n", reading.accelerometer.x, reading.accelerometer.y, data[i]);
             sum += data[i];
             wait_ms(20);
         }
         else
         {
             printf("no data\r\n");
+            wait_ms(20);
             i--;        // Try that reading again
         }
     }
@@ -311,7 +313,7 @@
     
     pc.baud(115200); // Print quickly! 200Hz x line of output data!
     
-    printf("\n\nFXOS8700CQ identity = %X\r\n", sfxos.getWhoAmI());
+    printf("\n\n\rFXOS8700CQ identity = %X\r\n", sfxos.getWhoAmI());
     
     msgLock = Lock_Init();  // TODO: Check error code
     
@@ -348,8 +350,8 @@
             
             if (curVal > maxVal)
             {
-                printf("new maxVal=%d\r\n", maxVal);
                 maxVal = curVal;
+                //printf("new maxVal=%d\r\n", maxVal);
             }
             
             //rc = readingToJSON(buffer, sizeof(buffer), reading);
@@ -366,7 +368,7 @@
                 if (localMsgCount < 2)
                 {
                     rc = JSONifyData(buffer, sizeof(buffer), maxVal);
-                    printf("DATA >>>%s<<<\r\n", buffer);
+                    //printf("DATA >>>%s<<<\r\n", buffer);
                     
                     if ((msgHandle = IoTHubMessage_CreateFromByteArray((const unsigned char*)buffer, rc)) == NULL)
                     {
@@ -405,7 +407,7 @@
                 }
                 else
                 {
-                    (void)printf("Message dropped queue length %d\r\n", localMsgCount);
+                    (void)printf("WARNING: Message dropped queue length %d\r\n", localMsgCount);
                 }
                 
                 Lock(msgLock);
@@ -429,21 +431,23 @@
         }
         else
         {
-            printf("*** WARNING*** Sensor was not ready in time\r\n");
+            printf("WARNING: Sensor was not ready in time\r\n");
         }
         
         // Read at 50 hz
         
-        if (--oneHour == 0)
+        if (--oneHour <= 0)
         {
             printf("INFO: Updating RTC from NTP server\r\n");
             
-            oneHour = 60 * 60 * 50;
-            
             if (ntp.setTime("0.pool.ntp.org") != 0)
             {
                 printf("ERROR: Failed to set current time from NTP server\r\n");
             }         
+            else
+            {
+                oneHour = 60 * 60 * 50;
+            }
         }
             
         wait_ms(20);