Basic program to interrogate the BNO055 and display euler angles

Dependencies:   BNO055 mbed

Committer:
StressedDave
Date:
Sun May 31 07:23:02 2015 +0000
Revision:
0:a8e6e26ebe0f
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
StressedDave 0:a8e6e26ebe0f 1 #include "mbed.h"
StressedDave 0:a8e6e26ebe0f 2 #include "BNO055.h"
StressedDave 0:a8e6e26ebe0f 3
StressedDave 0:a8e6e26ebe0f 4 Serial pc(USBTX, USBRX);
StressedDave 0:a8e6e26ebe0f 5 BNO055 imu(I2C_SDA,I2C_SCL);
StressedDave 0:a8e6e26ebe0f 6 DigitalOut led(LED1);
StressedDave 0:a8e6e26ebe0f 7
StressedDave 0:a8e6e26ebe0f 8 int main() {
StressedDave 0:a8e6e26ebe0f 9 pc.baud(115200);
StressedDave 0:a8e6e26ebe0f 10 pc.printf("BNO055 Hello World\r\n\r\n");
StressedDave 0:a8e6e26ebe0f 11 led = 1;
StressedDave 0:a8e6e26ebe0f 12 // Reset the BNO055
StressedDave 0:a8e6e26ebe0f 13 imu.reset();
StressedDave 0:a8e6e26ebe0f 14 // Check that the BNO055 is connected and flash LED if not
StressedDave 0:a8e6e26ebe0f 15 if (!imu.check())
StressedDave 0:a8e6e26ebe0f 16 while (true){
StressedDave 0:a8e6e26ebe0f 17 led = !led;
StressedDave 0:a8e6e26ebe0f 18 wait(0.1);
StressedDave 0:a8e6e26ebe0f 19 }
StressedDave 0:a8e6e26ebe0f 20 // Display sensor information
StressedDave 0:a8e6e26ebe0f 21 pc.printf("BNO055 found\r\n\r\n");
StressedDave 0:a8e6e26ebe0f 22 pc.printf("Chip ID: %0z\r\n",imu.ID.id);
StressedDave 0:a8e6e26ebe0f 23 pc.printf("Accelerometer ID: %0z\r\n",imu.ID.accel);
StressedDave 0:a8e6e26ebe0f 24 pc.printf("Gyroscope ID: %0z\r\n",imu.ID.gyro);
StressedDave 0:a8e6e26ebe0f 25 pc.printf("Magnetometer ID: %0z\r\n\r\n",imu.ID.mag);
StressedDave 0:a8e6e26ebe0f 26 pc.printf("Firmware version v%d.%0d\r\n",imu.ID.sw[0],imu.ID.sw[1]);
StressedDave 0:a8e6e26ebe0f 27 pc.printf("Bootloader version v%d\r\n\r\n",imu.ID.bootload);
StressedDave 0:a8e6e26ebe0f 28 // Display chip serial number
StressedDave 0:a8e6e26ebe0f 29 for (int i = 0; i<4; i++){
StressedDave 0:a8e6e26ebe0f 30 pc.printf("%0z.%0z.%0z.%0z\r\n",imu.ID.serial[i*4],imu.ID.serial[i*4+1],imu.ID.serial[i*4+2],imu.ID.serial[i*4+3]);
StressedDave 0:a8e6e26ebe0f 31 }
StressedDave 0:a8e6e26ebe0f 32 pc.printf("\r\n");
StressedDave 0:a8e6e26ebe0f 33 while (true) {
StressedDave 0:a8e6e26ebe0f 34 imu.setmode(OPERATION_MODE_NDOF);
StressedDave 0:a8e6e26ebe0f 35 imu.get_calib();
StressedDave 0:a8e6e26ebe0f 36 imu.get_angles();
StressedDave 0:a8e6e26ebe0f 37 pc.printf("%0z %5.1d %5.1d %5.1d\r\n",imu.calib,imu.euler.roll,imu.euler.pitch,imu.euler.yaw);
StressedDave 0:a8e6e26ebe0f 38 wait(1.0);
StressedDave 0:a8e6e26ebe0f 39 }
StressedDave 0:a8e6e26ebe0f 40 }