3D Tracking
Dependencies: HMC5883L MPU6050 mbed
main.cpp
- Committer:
- huydnfly
- Date:
- 2017-06-01
- Revision:
- 0:ee11a5d3da00
File content as of revision 0:ee11a5d3da00:
#include "mbed.h" #include "HMC5883L.h" #include "MPU6050.h" #include <math.h> #define SDA D14 #define SCL D15 #define PI 3.14159265 #define WAIT_COMMAND 1 #define WAIT_SETUP 2 #define SETUP 3 #define SAMPLING 4 DigitalOut myled(LED1); Serial pc(D1, D0); float x, y, z, heading; int16_t raw[3]; float acc[3]; float gry[3]; float angel[3]; char buffer[128]; char command; int state; int main() { pc.printf("Inicializing...\r\n"); //HMC5883L hmc5883l(SDA, SCL); MPU6050 mpu6050(SDA, SCL); //mpu6050.calibrate(accelBias,gyroBias); state = WAIT_COMMAND; pc.printf("OK...\r\n"); wait(1); while(1) { switch(state) { case WAIT_COMMAND: { command = pc.getc(); if (command == 's') state = SETUP; else if (command == 'd') state = SAMPLING; } break; case WAIT_SETUP: { command = pc.getc(); if (command == 's') state = SETUP; } break; case SETUP: { //hmc5883l.getXYZ(raw); //pc.printf("$x=%d y=%d z=%d;", raw[0], raw[1], raw[2]); pc.printf("$Accelero: x=%d y=%d z=%d\n;", mpu6050.getAcceleroRawX(), mpu6050.getAcceleroRawY(), mpu6050.getAcceleroRawZ()); state = WAIT_COMMAND; } break; case SAMPLING: { //hmc5883l.getXYZ(raw); //pc.printf("$x=%d y=%d z=%d;", raw[0], raw[1], raw[2]); //hmc58831.getHeadingXY() //pc.printf("$Accelero: x=%d y=%d z=%d\n;", mpu6050.getAcceleroRawX(), mpu6050.getAcceleroRawY(), mpu6050.getAcceleroRawZ()); mpu6050.getAccelero(acc); mpu6050.getGyro(gry); mpu6050.getAcceleroAngle(angel); //pc.printf("ACC: %f %f %f\n",acc[0], acc[1], acc[2]); //pc.printf("GRY: %f %f %f\n",gry[0], gry[1], gry[2]); pc.printf("%f %f %f %f %f %f\n",gry[0], gry[1], gry[2], acc[0], acc[1], acc[2]); //pc.printf("%f %f %f %f %f %f\n", angel[0], angel[1], angel[2], acc[0], acc[1], acc[2]); wait_ms(20); //state = WAIT_COMMAND; } break; default: break; } } }