I2C library for Bosch BNO055 sensor
Dependents: Project Campus_Safety_Bot
Fork of BNO055 by
Diff: BNO055.h
- Revision:
- 2:695c6e5d239a
- Parent:
- 1:2c3322a8d417
- Child:
- 3:1db1628eb8b2
diff -r 2c3322a8d417 -r 695c6e5d239a BNO055.h --- a/BNO055.h Sat May 30 18:36:36 2015 +0000 +++ b/BNO055.h Sat May 30 19:08:59 2015 +0000 @@ -173,44 +173,82 @@ char serial[16]; }chip; +/** Class for operating Bosch BNO055 sensor over I2C **/ class BNO055 { public: +/** Create BNO055 instance **/ BNO055(PinName SDA, PinName SCL); + +/** Perform a power-on reset of the BNO055 **/ void reset(); +/** Check that the BNO055 is connected and download the software details +and serial number of chip and store in ID structure **/ bool check(); +/** Turn the external timing crystal on/off **/ void SetExternalCrystal(bool yn); - +/** Set the operation mode of the sensor **/ void setmode(char mode); +/** Set the power mode of the sensor **/ void setpowermode(char mode); +/** Set the output units from the accelerometer, either MPERSPERS or MILLIG **/ void set_accel_units(char units); +/** Set the output units from the gyroscope, either DEG_PER_SEC or RAD_PER_SEC **/ void set_anglerate_units(char units); +/** Set the output units from the IMU, either DEGREES or RADIANS **/ void set_angle_units(char units); +/** Set the output units from the temperature sensor, either CENTIGRADE or FAHRENHEIT **/ void set_temp_units(char units); +/** Set the data output format to either WINDOWS or ANDROID **/ void set_orientation(char units); +/** Set the mapping of the exes/directions as per page 25 of datasheet + range 0-7, any value outside this will set the orientation to P1 (default at power up) **/ void set_mapping(char orient); +/** Get the current values from the accelerometer **/ void get_accel(void); +/** Get the current values from the gyroscope **/ void get_gyro(void); +/** Get the current values from the magnetometer **/ void get_mag(void); +/** Get the corrected linear acceleration **/ void get_lia(void); +/** Get the current gravity vector **/ void get_grv(void); +/** Get the output quaternion **/ void get_quat(void); +/** Get the current Euler angles **/ + void get_angles(void); +/** Get the current temperature **/ void get_temp(void); +/** Read the calibration status register and store the result in the calib variable **/ void get_calib(void); +/** Read the offset and radius values into the calibration array**/ void read_calibration_data(void); +/** Write the contents of the calibration array into the registers **/ void write_calibration_data(void); +/** Structures containing 3-axis data for acceleration, rate of turn and magnetic field. + x,y,z are the scale floating point values and + rawx, rawy, rawz are the int16_t values read from the sensors **/ values accel,gyro,mag,lia,gravity; +/** Stucture containing the Euler angles as yaw, pitch, roll as scaled floating point + and rawyaw, rawroll & rollpitch as the int16_t values loaded from the registers **/ angles euler; +/** Quaternion values as w,x,y,z (scaled floating point) and raww etc... as int16_t loaded from the + registers **/ quaternion quat; + +/** Current contents of calibration status register **/ char calib; - char status; +/** Contents of the 22 registers containing offset and radius values used as calibration by the sensor **/ char calibration[22]; +/** Structure containing sensor numbers, software version and chip UID chip ID; +/** Current temperature **/ int temperature; private: