This program calculates the average amount of noise from the gyroscope on the LSM9DS1.

Dependencies:   LSM9DS1_Library mbed

Committer:
jcallahan1
Date:
Thu Feb 23 20:26:11 2017 +0000
Revision:
0:31197ce6afb9
Program to find the average amount of noise from the gyroscope.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jcallahan1 0:31197ce6afb9 1 #include "mbed.h"
jcallahan1 0:31197ce6afb9 2 #include "LSM9DS1.h"
jcallahan1 0:31197ce6afb9 3 #define PI 3.14159
jcallahan1 0:31197ce6afb9 4
jcallahan1 0:31197ce6afb9 5
jcallahan1 0:31197ce6afb9 6 int main()
jcallahan1 0:31197ce6afb9 7 {
jcallahan1 0:31197ce6afb9 8 LSM9DS1 IMU(p9, p10, 0xD6, 0x3C);
jcallahan1 0:31197ce6afb9 9 IMU.begin();
jcallahan1 0:31197ce6afb9 10 if (!IMU.begin()) {
jcallahan1 0:31197ce6afb9 11 printf("Failed to communicate with LSM9DS1.\n");
jcallahan1 0:31197ce6afb9 12 }
jcallahan1 0:31197ce6afb9 13 IMU.calibrate(1);
jcallahan1 0:31197ce6afb9 14 float sumgx = 0;
jcallahan1 0:31197ce6afb9 15 float sumgy = 0;
jcallahan1 0:31197ce6afb9 16 float sumgz = 0;
jcallahan1 0:31197ce6afb9 17 float cgx;
jcallahan1 0:31197ce6afb9 18 float cgy;
jcallahan1 0:31197ce6afb9 19 float cgz;
jcallahan1 0:31197ce6afb9 20 float mingx = 100;
jcallahan1 0:31197ce6afb9 21 float mingy = 100;
jcallahan1 0:31197ce6afb9 22 float mingz = 100;
jcallahan1 0:31197ce6afb9 23 float maxgx = 0;
jcallahan1 0:31197ce6afb9 24 float maxgy = 0;
jcallahan1 0:31197ce6afb9 25 float maxgz = 0;
jcallahan1 0:31197ce6afb9 26 int n = 0;
jcallahan1 0:31197ce6afb9 27
jcallahan1 0:31197ce6afb9 28 while(n<=10000) {
jcallahan1 0:31197ce6afb9 29
jcallahan1 0:31197ce6afb9 30
jcallahan1 0:31197ce6afb9 31 while(!IMU.gyroAvailable());
jcallahan1 0:31197ce6afb9 32 IMU.readGyro();
jcallahan1 0:31197ce6afb9 33 cgx = IMU.calcGyro(IMU.gx);
jcallahan1 0:31197ce6afb9 34 cgy = IMU.calcGyro(IMU.gy);
jcallahan1 0:31197ce6afb9 35 cgz = IMU.calcGyro(IMU.gz);
jcallahan1 0:31197ce6afb9 36 sumgx += cgx;
jcallahan1 0:31197ce6afb9 37 sumgy += cgy;
jcallahan1 0:31197ce6afb9 38 sumgz += cgz;
jcallahan1 0:31197ce6afb9 39 if(cgx > maxgx) {
jcallahan1 0:31197ce6afb9 40 printf("Max gx: %f \n\r %d \n\r",maxgx,n);
jcallahan1 0:31197ce6afb9 41 maxgx = cgx;
jcallahan1 0:31197ce6afb9 42 }
jcallahan1 0:31197ce6afb9 43 if(cgy > maxgy) {
jcallahan1 0:31197ce6afb9 44 maxgy = cgy;
jcallahan1 0:31197ce6afb9 45 }
jcallahan1 0:31197ce6afb9 46 if(cgz > maxgz) {
jcallahan1 0:31197ce6afb9 47 maxgz = cgz;
jcallahan1 0:31197ce6afb9 48 }
jcallahan1 0:31197ce6afb9 49 if(cgx < mingx) {
jcallahan1 0:31197ce6afb9 50 mingx = cgx;
jcallahan1 0:31197ce6afb9 51 }
jcallahan1 0:31197ce6afb9 52 if(cgy < mingy) {
jcallahan1 0:31197ce6afb9 53 mingy = cgy;
jcallahan1 0:31197ce6afb9 54 }
jcallahan1 0:31197ce6afb9 55 if(cgz < mingz) {
jcallahan1 0:31197ce6afb9 56 mingz = cgz;
jcallahan1 0:31197ce6afb9 57 }
jcallahan1 0:31197ce6afb9 58 n++;
jcallahan1 0:31197ce6afb9 59 }
jcallahan1 0:31197ce6afb9 60 printf("\n");
jcallahan1 0:31197ce6afb9 61 printf("Avg gx: %f \n\r",sumgx/n);
jcallahan1 0:31197ce6afb9 62 printf("Avg gy: %f \n\r",sumgy/n);
jcallahan1 0:31197ce6afb9 63 printf("Avg gz: %f \n\r",sumgz/n);
jcallahan1 0:31197ce6afb9 64 printf("Max gx: %f \n\r",maxgx);
jcallahan1 0:31197ce6afb9 65 printf("Max gy: %f \n\r",maxgy);
jcallahan1 0:31197ce6afb9 66 printf("Max gz: %f \n\r",maxgz);
jcallahan1 0:31197ce6afb9 67 printf("Min gx: %f \n\r",mingx);
jcallahan1 0:31197ce6afb9 68 printf("Min gy: %f \n\r",mingy);
jcallahan1 0:31197ce6afb9 69 printf("Min gz: %f \n\r",mingz);
jcallahan1 0:31197ce6afb9 70 return 0;
jcallahan1 0:31197ce6afb9 71 }