AT&T M2X example featuring FRDM-K64F and Seed Grove Wifi to stream the Accelerometer X, Y, Z-axis values
Dependencies: ESP8266Interface FXOS8700Q M2XStreamClient jsonlite mbed
Fork of frdm-k64F_Wifi_M2X_Acc by
Diff: main.cpp
- Revision:
- 0:ece599ab76bb
- Child:
- 1:c7b9e522cc8e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Aug 05 14:46:55 2014 +0000 @@ -0,0 +1,66 @@ +#include "mbed.h" +#include "FXOS8700Q.h" +#include "M2XStreamClient.h" +#include "EthernetInterface.h" + + +#ifndef MAX +#define max(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; }) +#endif + +#ifndef MIN +#define min(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; }) +#endif + +const char key[] = "<key>"; // Replace with your M2X user account master key +const char feed[] = "<feed>"; // Replace with your blueprint feed ID +const char stream[] = "<stream>"; // Replace with your stream name + +int main() +{ + // Setup Ethernet + printf("Start\r\n"); + EthernetInterface eth; + printf("Init...\r\n"); + eth.init(); //Use DHCP + //eth.init(ip,mask,gateway); //Use Static IP Configuration + printf("Connect\r\n"); + eth.connect(); + printf("Device IP Address is %s\r\n", eth.getIPAddress()); + + // Initialize the M2X client + Client client; + M2XStreamClient m2xClient(&client, key); + int ret; + + // Create an accelerometer instance + FXOS8700Q_acc acc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board + acc.enable(); + printf("\r\n\nFXOS8700Q Who Am I= %X\r\n", acc.whoAmI()); + + while (true) { + + float x, y, z; + acc.getX(&x); + acc.getY(&y); + acc.getZ(&z); + + printf("Accel X: %1.2f, Y: %1.2f, Z: %1.2f\n\r", x, y, z); + + // Calculate pitch and roll. Find the maximum tilt angle. + float pitch = atan(x / sqrt(y * y + z * z)); + float roll = atan(y / sqrt(x * x + z * z)); + float maxTilt = + max(abs(roll), abs(pitch)) * 180.0 / 3.14159; + printf("pitch: %5.1f roll: %5.1f maxTilt: %5.1f\n\r", + pitch, roll, maxTilt); + + // If the maximum title is over 20 degrees, then send + // data to stream + if (maxTilt > 20) { + ret = m2xClient.post(feed, stream, maxTilt); + printf("send() returned %d\r\n", ret); + // wait(0.5); + } + } +} \ No newline at end of file