Revision 26f98bcd
| Adafruit_BNO055.cpp | ||
|---|---|---|
| 70 | 70 |
/* Set to normal power mode */ |
| 71 | 71 |
write8(BNO055_PWR_MODE_ADDR, POWER_MODE_NORMAL); |
| 72 | 72 |
delay(10); |
| 73 |
|
|
| 74 |
/* Set the output units */ |
|
| 75 |
uint8_t unitsel = (0 << 7) | /* Orientation = Android */ |
|
| 76 |
(0 << 4) | /* Temperature = Celsius */ |
|
| 77 |
(0 << 2) | /* Euler = Degrees */ |
|
| 78 |
(1 << 1) | /* Gyro = Rads */ |
|
| 79 |
(0 << 0); /* Accelerometer = m/s^2 */ |
|
| 80 |
write8(BNO055_UNIT_SEL_ADDR, unitsel); |
|
| 81 |
|
|
| 82 |
/* Orientation = Android (0 << )*/ |
|
| 83 |
/* Temperature = Celsisu (0 << 4) |
|
| 84 |
uint8_t unitsel = |
|
| 73 | 85 |
|
| 74 | 86 |
/* Set the requested operating mode (see section 3.3) */ |
| 75 | 87 |
write8(BNO055_OPR_MODE_ADDR, mode); |
| ... | ... | |
| 232 | 244 |
x = (((uint16_t)buffer[1]) << 8) | ((uint16_t)buffer[0]); |
| 233 | 245 |
y = (((uint16_t)buffer[3]) << 8) | ((uint16_t)buffer[2]); |
| 234 | 246 |
z = (((uint16_t)buffer[5]) << 8) | ((uint16_t)buffer[4]); |
| 235 |
|
|
| 236 |
/* Assign to Vector */ |
|
| 237 |
xyz[0] = (double)x; |
|
| 238 |
xyz[1] = (double)y; |
|
| 239 |
xyz[2] = (double)z; |
|
| 247 |
|
|
| 248 |
/* Convert the value to an appropriate range (section 3.6.4) */ |
|
| 249 |
/* and assign the value to the Vector type */ |
|
| 250 |
switch(vector_type) |
|
| 251 |
{
|
|
| 252 |
case VECTOR_MAGNETOMETER: |
|
| 253 |
/* 1uT = 16 LSB */ |
|
| 254 |
xyz[0] = ((double)x)/16.0; |
|
| 255 |
xyz[1] = ((double)y)/16.0; |
|
| 256 |
xyz[2] = ((double)z)/16.0; |
|
| 257 |
break; |
|
| 258 |
case VECTOR_GYROSCOPE: |
|
| 259 |
/* 1rps = 900 LSB */ |
|
| 260 |
xyz[0] = ((double)x)/900.0; |
|
| 261 |
xyz[1] = ((double)y)/900.0; |
|
| 262 |
xyz[2] = ((double)z)/900.0; |
|
| 263 |
break; |
|
| 264 |
case VECTOR_EULER: |
|
| 265 |
/* 1 degree = 16 LSB */ |
|
| 266 |
xyz[0] = ((double)x)/16.0; |
|
| 267 |
xyz[1] = ((double)y)/16.0; |
|
| 268 |
xyz[2] = ((double)z)/16.0; |
|
| 269 |
break; |
|
| 270 |
case VECTOR_ACCELEROMETER: |
|
| 271 |
case VECTOR_LINEARACCEL: |
|
| 272 |
case VECTOR_GRAVITY: |
|
| 273 |
/* 1m/s^2 = 100 LSB */ |
|
| 274 |
xyz[0] = ((double)x)/100.0; |
|
| 275 |
xyz[1] = ((double)y)/100.0; |
|
| 276 |
xyz[2] = ((double)z)/100.0; |
|
| 277 |
break; |
|
| 278 |
} |
|
| 240 | 279 |
|
| 241 | 280 |
return xyz; |
| 242 | 281 |
} |
Also available in: Unified diff