this can make a serial acc data to be sent to a processing software
Dependencies: mbed PinDetect LSM9DS1_works
Revision 4:7faa8147cabb, committed 2020-06-19
- Comitter:
- chebbi
- Date:
- Fri Jun 19 10:22:18 2020 +0000
- Parent:
- 3:64a8188c5a44
- Commit message:
- Sending data from efm33 to processing
Changed in this revision
| LSM9DS1_works.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LSM9DS1_works.lib Fri Jun 19 10:22:18 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/chebbi/code/LSM9DS1_works/#64a8188c5a44
--- a/main.cpp Mon Mar 02 10:08:57 2020 +0000
+++ b/main.cpp Fri Jun 19 10:22:18 2020 +0000
@@ -2,7 +2,7 @@
//DigitalOut myled(LED1);
Serial pc(USBTX, USBRX);
-#define PI 3,14
+#define PI 3.14
#define printff_CALCULATED
#define printff_SPEED 250
#define DECLINATION -8.58
@@ -22,6 +22,7 @@
while(1) ;
}
lol.calibrate();
+ lol.calibrateMag() ;
while(1) {
//lol.readTemp();
@@ -39,19 +40,19 @@
lol.readGyro();
}
- printfGyro(); // printfff "G: gx, gy, gz"
- pc.printf("\n") ;
- printfAccel(); // printfff "A: ax, ay, az"
- pc.printf("\n") ;
- printfMag(); // printfff "M: mx, my, mz"
- pc.printf("\n") ;
+ // printfGyro(); // printfff "G: gx, gy, gz"
+ //pc.printf("\n") ;
+ // printfAccel(); // printfff "A: ax, ay, az"
+ //pc.printf("\n") ;
+ // printfMag(); // printfff "M: mx, my, mz"
+ //pc.printf("\n") ;
// printff the heading and orientation for fun!
// Call printfff attitude. The LSM9DS1's mag x and y
// axes are opposite to the accelerometer, so my, mx are
// substituted for each other.
printfAttitude(lol.ax, lol.ay, lol.az,-lol.my, -lol.mx, lol.mz);
- pc.printf("\n") ;
- wait(1);
+ pc.printf("\n") ;
+ wait(0.5);
}
}
@@ -85,7 +86,7 @@
// Now we can use the ax, ay, and az variables as we please.
// Either printfff them as raw ADC values, or calculated in g's.
pc.printf("A: ");
-#ifdef printff_CALCULATED
+
// If you want to printffff calculated values, you can use the
// calcAccel helper function to convert a raw ADC value to
// g's. Give the function the value that you want to convert.
@@ -102,7 +103,7 @@
pc.printf(", ");
pc.printfln(lol.az);*/
-#endif
+
}
@@ -133,31 +134,36 @@
void printfAttitude(float ax, float ay, float az, float mx, float my, float mz)
{
- float roll = atan2(ay, az);
- float pitch = atan2(-ax, sqrt(ay * ay + az * az));
+ double roll = atan2(ay, az);
+ double pitch = atan2(-ax, sqrt(ay * ay + az * az));
- float heading;
- if (my == 0)
+ double heading;
+ /*if (my == 0)
heading = (mx < 0) ? PI : 0;
- else
- heading = atan2(mx, my);
+ else*/
+ heading = atan2(my, mx);
heading -= DECLINATION * PI / 180;
- if (heading > PI) heading -= (2 * PI);
- else if (heading < -PI) heading += (2 * PI);
+ if (heading > 3.14) heading -= (2 * 3.14);
+ else if (heading < -3.14) heading += (2 * 3.14);
// Convert everything from radians to degrees:
heading *= 180.0 / PI;
pitch *= 180.0 / PI;
roll *= 180.0 / PI;
- pc.printf("Pitch, Roll: ");
+
+
+
+ pc.printf("%f" , roll, 2);
+ pc.printf("/") ;
pc.printf("%f" , pitch, 2);
- pc.printf(", ");
- pc.printf("%f" , roll, 2);
- pc.printf("\n") ;
- pc.printf("Heading: "); pc.printf("%f" , heading, 2);
+ pc.printf("/") ;
+ pc.printf("%f" , heading, 2);
+
+
+
}