a simple code with a not-so-simple mbed freeze
Dependencies: MPU6050 mbed-rtos mbed
main.cpp
- Committer:
- pommzorz
- Date:
- 2013-02-18
- Revision:
- 2:141571165c57
- Parent:
- 1:d2011078309d
File content as of revision 2:141571165c57:
#include "mbed.h" #include "MPU6050.h" #include "rtos.h" DigitalOut myled(LED1); Serial pc1(USBTX, USBRX); MPU6050 mpu(0x69); 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() //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) //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"); //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"); bool mpu6050TestResult = mpu.testConnection(); if(mpu6050TestResult) { pc1.printf("MPU6050 test passed \n\r"); while(1) { for (int n=0; n<64; n++) { //refreshing the 64-int16 array mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); moy[n]=az; wait(0.01); } moyennage_Z(); //calculating the mean value by a simple sum and divide printf("%i\n\r",moyZ+17000); wait(0.1); } } else { pc1.printf("MPU6050 test failed \n\r"); } }