Revision 67f3cff5 Adafruit_BNO055.cpp
Adafruit_BNO055.cpp | ||
---|---|---|
108 | 108 |
void Adafruit_BNO055::setMode(adafruit_bno055_opmode_t mode) |
109 | 109 |
{ |
110 | 110 |
_mode = mode; |
111 |
//Serial.print("Mode: 0x"); Serial.println(mode, HEX); |
|
112 | 111 |
write8(BNO055_OPR_MODE_ADDR, _mode); |
113 | 112 |
delay(30); |
114 | 113 |
} |
... | ... | |
153 | 152 |
|
154 | 153 |
write8(BNO055_SYS_TRIGGER_ADDR, read8(BNO055_SYS_TRIGGER_ADDR) | 0x1); |
155 | 154 |
delay(1000); |
156 |
/* Read the system status register */ |
|
157 |
if (system_status != 0) |
|
158 |
*system_status = read8(BNO055_SYS_STAT_ADDR); |
|
159 |
if (self_test_result != 0) |
|
160 |
*self_test_result = read8(BNO055_SELFTEST_RESULT_ADDR); |
|
161 |
if (system_error != 0) |
|
162 |
*system_error = read8(BNO055_SYS_ERR_ADDR); |
|
163 |
|
|
164 |
setMode(backupmode); |
|
165 |
delay(20); |
|
166 |
} |
|
167 |
|
|
168 |
/**************************************************************************/ |
|
169 |
/*! |
|
170 |
@brief Displays system status info via Serial.print |
|
171 |
*/ |
|
172 |
/**************************************************************************/ |
|
173 |
void Adafruit_BNO055::displaySystemStatus(void) |
|
174 |
{ |
|
175 |
uint8_t system_status, self_test_result, system_error; |
|
176 |
getSystemStatus(&system_status, &self_test_result, &system_error); |
|
177 | 155 |
|
178 | 156 |
/* System Status (see section 4.3.58) |
179 | 157 |
--------------------------------- |
... | ... | |
185 | 163 |
5 = Sensor fusio algorithm running |
186 | 164 |
6 = System running without fusion algorithms */ |
187 | 165 |
|
188 |
Serial.print("System Status: 0x");
|
|
189 |
Serial.println(system_status, HEX);
|
|
190 |
|
|
166 |
if (system_status != 0)
|
|
167 |
*system_status = read8(BNO055_SYS_STAT_ADDR);
|
|
168 |
|
|
191 | 169 |
/* Self Test Results (see section ) |
192 | 170 |
-------------------------------- |
193 | 171 |
1 = test passed, 0 = test failed |
194 |
|
|
172 |
|
|
195 | 173 |
Bit 0 = Accelerometer self test |
196 | 174 |
Bit 1 = Magnetometer self test |
197 | 175 |
Bit 2 = Gyroscope self test |
198 | 176 |
Bit 3 = MCU self test |
199 |
|
|
177 |
|
|
200 | 178 |
0x0F = all good! */ |
201 | 179 |
|
202 |
Serial.print("Self Test Results: 0x");
|
|
203 |
Serial.println(self_test_result, HEX);
|
|
180 |
if (self_test_result != 0)
|
|
181 |
*self_test_result = read8(BNO055_SELFTEST_RESULT_ADDR);
|
|
204 | 182 |
|
205 | 183 |
/* System Error (see section 4.3.59) |
206 | 184 |
--------------------------------- |
... | ... | |
216 | 194 |
9 = Fusion algorithm configuration error |
217 | 195 |
A = Sensor configuration error */ |
218 | 196 |
|
219 |
Serial.print("System Error: 0x"); |
|
220 |
Serial.println(system_error, HEX); |
|
197 |
if (system_error != 0) |
|
198 |
*system_error = read8(BNO055_SYS_ERR_ADDR); |
|
199 |
|
|
200 |
setMode(backupmode); |
|
201 |
delay(20); |
|
221 | 202 |
} |
222 | 203 |
|
223 | 204 |
/**************************************************************************/ |
... | ... | |
231 | 212 |
|
232 | 213 |
memset(info, 0, sizeof(adafruit_bno055_rev_info_t)); |
233 | 214 |
|
215 |
/* Check the accelerometer revision */ |
|
234 | 216 |
info->accel_rev = read8(BNO055_ACCEL_REV_ID_ADDR); |
217 |
|
|
218 |
/* Check the magnetometer revision */ |
|
235 | 219 |
info->mag_rev = read8(BNO055_MAG_REV_ID_ADDR); |
220 |
|
|
221 |
/* Check the gyroscope revision */ |
|
236 | 222 |
info->gyro_rev = read8(BNO055_GYRO_REV_ID_ADDR); |
223 |
|
|
224 |
/* Check the SW revision */ |
|
237 | 225 |
info->bl_rev = read8(BNO055_BL_REV_ID_ADDR); |
238 | 226 |
|
239 | 227 |
a = read8(BNO055_SW_REV_ID_LSB_ADDR); |
... | ... | |
243 | 231 |
|
244 | 232 |
/**************************************************************************/ |
245 | 233 |
/*! |
246 |
@brief Displays the chip revision numbers via Serial.print |
|
247 |
*/ |
|
248 |
/**************************************************************************/ |
|
249 |
void Adafruit_BNO055::displayRevInfo(void) |
|
250 |
{ |
|
251 |
adafruit_bno055_rev_info_t info; |
|
252 |
getRevInfo(&info); |
|
253 |
|
|
254 |
/* Check the accelerometer revision */ |
|
255 |
Serial.print("Accelerometer Revision: 0x"); |
|
256 |
Serial.println(info.accel_rev, HEX); |
|
257 |
|
|
258 |
/* Check the magnetometer revision */ |
|
259 |
Serial.print("Magnetometer Revision: 0x"); |
|
260 |
Serial.println(info.mag_rev, HEX); |
|
261 |
|
|
262 |
/* Check the gyroscope revision */ |
|
263 |
Serial.print("Gyroscope Revision: 0x"); |
|
264 |
Serial.println(info.gyro_rev, HEX); |
|
265 |
|
|
266 |
/* Check the SW revision */ |
|
267 |
Serial.print("SW Revision: 0x"); |
|
268 |
Serial.println(info.sw_rev, HEX); |
|
269 |
|
|
270 |
/* Check the bootloader revision */ |
|
271 |
Serial.print("Bootloader Revision: 0x"); |
|
272 |
Serial.println(info.bl_rev, HEX); |
|
273 |
} |
|
274 |
|
|
275 |
/**************************************************************************/ |
|
276 |
/*! |
|
277 | 234 |
@brief Gets teh temperature in degrees celsius |
278 | 235 |
*/ |
279 | 236 |
/**************************************************************************/ |
Also available in: Unified diff