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
Diff: main.cpp
- Revision:
- 6:0bffe8529f60
- Parent:
- 5:3d814faa2b2e
- Child:
- 7:2564d95cbf81
diff -r 3d814faa2b2e -r 0bffe8529f60 main.cpp --- 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);