Dependencies: BNO055 SDFileSystem mbed
main.cpp
- Committer:
- alejo5214416
- Date:
- 2018-09-06
- Revision:
- 3:a4a031655cda
- Parent:
- 2:54bb4cee7885
- Child:
- 6:122749ed4e2e
File content as of revision 3:a4a031655cda:
#include "mbed.h" #include "BNO055.h" #define TS 0.1 using namespace std; DigitalOut led1(LED1); DigitalOut green(p21); DigitalOut blue(p22); DigitalOut red(p23); Serial pc(USBTX, USBRX); // BNO055 BNO055 bno055(p9, p10); InterruptIn interrupt(p15, PullUp); void event(); int main() { green=0; blue=0; red=1; bno055.reset(); interrupt.rise(&event); bno055.setmode(OPERATION_MODE_NDOF); bno055.write_calibration_data(); bno055.get_calib(); wait(2); while(((bno055.calib>>4)&3)!=3) { red=1; blue=0; green=0; bno055.write_calibration_data(); bno055.get_calib(); wait_ms(200); red = 0; wait_ms(200); pc.printf("Calibrando giroscopio= %d\n",(bno055.calib>>4)&(3)); } pc.printf("GIROSCOPIO CALIBRADO= %d\n",(bno055.calib>>4)&(3)); wait(2); red=0; bno055.write_calibration_data(); bno055.get_calib(); while((bno055.calib & 3) != 3) { red=0; blue=1; green=0; bno055.write_calibration_data(); bno055.get_calib(); wait_ms(200); blue = 0; wait_ms(200); pc.printf("Calibrando Magnetometro= %d\n",bno055.calib & (3)); } pc.printf("MAGNETOMETRO CALIBRADO= %d\n",bno055.calib & (3)); wait(2); blue=0; bno055.write_calibration_data(); bno055.get_calib(); while(((bno055.calib>>2)& 3 )!= 3) { red=0; blue=0; green=1; bno055.write_calibration_data(); bno055.get_calib(); wait_ms(200); green = 0; wait_ms(200); pc.printf("Calibrando acelerometro= %d\n",(bno055.calib>>2)&(3)); } pc.printf("ACELEROMETRO CALIBRADO= %d\n",(bno055.calib>>2)&(3)); pc.printf("IMU CORRECTAMENTE CALIBRADA= %d\n",(bno055.calib>>2)&(3)); wait(2); green=1; if (bno055.check()) { bno055.initIntr(); } while(1) { bno055.get_angles(); //query the i2c device pc.printf("yaw:%6.2f pitch:%6.2f roll:%6.2f\r\n",bno055.euler.yaw, bno055.euler.pitch, bno055.euler.roll); bno055.get_lia(); //query the i2c device pc.printf("X: %3.2f, Y: %3.2f, Z: %3.2f\r\n",bno055.lia.x,bno055.lia.y,bno055.lia.z); wait_ms(TS); } } void event() { led1 = !led1; //wait(10); /* float v_act=0; float x_act=0; float v_ant=0; float x_ant=0; bno055.get_angles(); //query the i2c device bno055.get_lia(); //query the i2c device v_act = v_ant + TS*float(bno055.lia.x); wait(TS); pc.printf("V_act = %f",v_act); */ bno055.resetIntr(); }