blue mbed code for the BNO055 imu from adafruit

Dependencies:   BNO055 MODSERIAL mbed

Fork of bmbed_lidar_belt by sensory_array

main.cpp

Committer:
rkk
Date:
2015-11-25
Revision:
17:32b83c5787fc
Parent:
16:70fce771d828
Child:
19:01d091b38d61

File content as of revision 17:32b83c5787fc:

#include "mbed.h"
#include "MODSERIAL.h"
#include <math.h>
#include "BNO055.h"

#define PC_BAUD 9600
//#define BT_BAUD 115200

//#define TX_PIN p13
//#define RX_PIN p14
#define IMU_SDA p28
#define IMU_SCL p27
#define PI 3.14159265

BNO055 imu(p28,p27);

//MODSERIAL bt(TX_PIN, RX_PIN);
MODSERIAL pc(USBTX,USBRX);

//for calibrating IMU
//for IMU1:
char cal_vals[22] = {255, 255, 220, 255, 13, 0, 83, 255, 36, 1, 80, 0, 253, 255, 0, 0, 1, 0, 232, 3, 235, 2};

bool newline_detected = false;
bool newline_sent = false;

void setCal(){
    imu.write_calibration_data();
}

// Called everytime a new character goes into
// the RX buffer. Test that character for \n
// Note, rxGetLastChar() gets the last char that
// we received but it does NOT remove it from
// the RX buffer.
void rxCallback(MODSERIAL_IRQ_INFO *q)
{
    MODSERIAL *serial = q->serial;
    if ( serial->rxGetLastChar() == '\n') {
        newline_detected = true;
    }

}

void txCallback(MODSERIAL_IRQ_INFO *q)
{
    MODSERIAL *serial = q->serial;
    if ( serial->txGetLastChar() == '\0') {
        newline_sent = true;
    }
}

int main()
{
    pc.baud(PC_BAUD);
//    bt.baud(BT_BAUD);
    pc.attach(&rxCallback, MODSERIAL::RxIrq);
//    bt.attach(&txCallback, MODSERIAL::TxIrq);
    
    //set up IMU
    imu.reset();
    imu.setmode(OPERATION_MODE_NDOF);
    setCal();
    imu.get_calib();
    while (imu.calib == 0)
    {
        imu.get_calib();
    }
    
    char sendData[1] = {0x00};

//    char btData[12] = {'a','b','c','d','e','f','g','\n','\0'};

    while (1) {
        imu.get_angles();
        float pitch = imu.euler.pitch;
        pc.printf("%f\n",pitch);
//        pc.printf("about to send data\n");
//        for(int j=0;j<9;j++){
//            btData[j] = '\0';
//            if(bt.writeable())
//                bt.putc(btData[j]);
//            //wait(0.001);
//        }
        wait(0.5);
        //pc.printf("finished sending data\n");
    }
}