a simple code with a not-so-simple mbed freeze
Dependencies: MPU6050 mbed-rtos mbed
Revision 2:141571165c57, committed 2013-02-18
- Comitter:
- pommzorz
- Date:
- Mon Feb 18 13:32:59 2013 +0000
- Parent:
- 1:d2011078309d
- Commit message:
- memory issues
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Feb 18 11:02:59 2013 +0000
+++ b/main.cpp Mon Feb 18 13:32:59 2013 +0000
@@ -5,87 +5,51 @@
DigitalOut myled(LED1);
Serial pc1(USBTX, USBRX);
MPU6050 mpu(0x69);
-
-int moyZ=0;
-int16_t moy[64];
+int16_t ax, ay, az;
+int16_t gx, gy, gz;
+int moyZ=0; //global Z value (mean)
+int16_t moy[64]; //array of different measurements
-void moyennage_Z()
+void moyennage_Z() //calculates the mean value by going through the whole array, sum and divide by the sample size (64)
{
for (int n=0; n<64; n++) {
moyZ=moyZ+moy[n];
-
-
}
moyZ=(int)moyZ/64;
}
-
-void mon_thr(void const *args)
+void mon_thr(void const *args) //blinking thread to test mbed's state
{
while (true) {
myled=!myled;
+ wait(0.5);
}
}
-
int main()
{
-
- Thread thread(mon_thr);
- pc1.printf("MPU6050 test\n\n\r");
- pc1.printf("MPU6050 initialize \n\r");
-
+ Thread thread(mon_thr);
+ pc1.printf("MPU6050 test\n\n\r"); //procedure to test the connection to the mpu6050, if valid
+ pc1.printf("MPU6050 initialize \n\r"); //the code to execute is embedded in a if{}
mpu.initialize();
pc1.printf("MPU6050 testConnection \n\r");
-
- int16_t ax, ay, az;
- int16_t gx, gy, gz;
-
-
-int comptFin=0;
-int comptDeb=0;
-
-
bool mpu6050TestResult = mpu.testConnection();
if(mpu6050TestResult) {
pc1.printf("MPU6050 test passed \n\r");
- while(comptFin<64) {
- mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
- moy[comptFin]=az;
- comptFin++;
-
- }
- moyennage_Z();
- while(1) {
- while(comptFin<64) {
+ while(1) {
+ for (int n=0; n<64; n++) { //refreshing the 64-int16 array
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
- moy[comptFin]=az;
- comptFin++;
+ moy[n]=az;
wait(0.01);
}
-
-
- comptFin%=64;
- moyZ-=(int)moy[comptDeb]/64;
- comptDeb++;
- comptDeb%=64;
- moyZ+=(int)moy[comptFin]/64;
- //moyennage_Z();
+ moyennage_Z(); //calculating the mean value by a simple sum and divide
printf("%i\n\r",moyZ+17000);
- wait(0.01);
-
-
-
-
+ wait(0.1);
}
-
-
} else {
pc1.printf("MPU6050 test failed \n\r");
}
-
-
}