| 71 |
71 |
setMode(OPERATION_MODE_CONFIG);
|
| 72 |
72 |
|
| 73 |
73 |
/* Reset */
|
| 74 |
|
write8(BNO055_SYS_TRIGGER_ADDR, 0x20); //reset the sensor
|
| 75 |
|
while (read8(BNO055_CHIP_ID_ADDR) != BNO055_ID) //wait for boot
|
|
74 |
write8(BNO055_SYS_TRIGGER_ADDR, 0x20);
|
|
75 |
while (read8(BNO055_CHIP_ID_ADDR) != BNO055_ID)
|
|
76 |
{
|
| 76 |
77 |
delay(10);
|
| 77 |
|
|
|
78 |
}
|
| 78 |
79 |
delay(50);
|
| 79 |
80 |
|
| 80 |
81 |
/* Set to normal power mode */
|
| ... | ... | |
| 84 |
85 |
write8(BNO055_PAGE_ID_ADDR, 0);
|
| 85 |
86 |
|
| 86 |
87 |
/* Set the output units */
|
| 87 |
|
uint8_t unitsel = (0 << 7) | /* Orientation = Android */
|
| 88 |
|
(0 << 4) | /* Temperature = Celsius */
|
| 89 |
|
(0 << 2) | /* Euler = Degrees */
|
| 90 |
|
(1 << 1) | /* Gyro = Rads */
|
| 91 |
|
(0 << 0); /* Accelerometer = m/s^2 */
|
|
88 |
/*
|
|
89 |
uint8_t unitsel = (0 << 7) | // Orientation = Android
|
|
90 |
(0 << 4) | // Temperature = Celsius
|
|
91 |
(0 << 2) | // Euler = Degrees
|
|
92 |
(1 << 1) | // Gyro = Rads
|
|
93 |
(0 << 0); // Accelerometer = m/s^2
|
| 92 |
94 |
write8(BNO055_UNIT_SEL_ADDR, unitsel);
|
|
95 |
*/
|
| 93 |
96 |
|
| 94 |
97 |
write8(BNO055_SYS_TRIGGER_ADDR, 0x0);
|
| 95 |
98 |
delay(10);
|
| ... | ... | |
| 256 |
259 |
|
| 257 |
260 |
/* Read vector data (6 bytes) */
|
| 258 |
261 |
readLen((adafruit_bno055_reg_t)vector_type, buffer, 6);
|
| 259 |
|
x = (((uint16_t)buffer[1]) << 8) | ((uint16_t)buffer[0]);
|
| 260 |
|
y = (((uint16_t)buffer[3]) << 8) | ((uint16_t)buffer[2]);
|
| 261 |
|
z = (((uint16_t)buffer[5]) << 8) | ((uint16_t)buffer[4]);
|
|
262 |
|
|
263 |
x = ((int16_t)buffer[0]) | (((int16_t)buffer[1]) << 8);
|
|
264 |
y = ((int16_t)buffer[2]) | (((int16_t)buffer[3]) << 8);
|
|
265 |
z = ((int16_t)buffer[4]) | (((int16_t)buffer[5]) << 8);
|
| 262 |
266 |
|
| 263 |
267 |
/* Convert the value to an appropriate range (section 3.6.4) */
|
| 264 |
268 |
/* and assign the value to the Vector type */
|