Skip to content

Commit 1e254f2

Browse files
committed
require manually enabling. works a treat on feather m4
1 parent 12bf82e commit 1e254f2

File tree

2 files changed

+36
-19
lines changed

2 files changed

+36
-19
lines changed

adafruit_bno080/__init__.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -371,23 +371,33 @@ def magnetic(self):
371371
return self._readings[BNO_REPORT_MAGNETIC_FIELD]
372372
except KeyError:
373373
raise RuntimeError("No magfield report found, is it enabled?") from None
374+
374375
@property
375376
def quaternion(self):
376377
"""A quaternion representing the current rotation vector"""
377378
self._process_available_packets()
378-
return self._readings[BNO_REPORT_ROTATION_VECTOR]
379+
try:
380+
return self._readings[BNO_REPORT_ROTATION_VECTOR]
381+
except KeyError:
382+
raise RuntimeError("No quaternion report found, is it enabled?") from None
379383

380384
@property
381385
def geomagnetic_quaternion(self):
382386
"""A quaternion representing the current geomagnetic rotation vector"""
383387
self._process_available_packets()
384-
return self._readings[BNO_REPORT_GEOMAGNETIC_ROTATION_VECTOR]
388+
try:
389+
return self._readings[BNO_REPORT_GEOMAGNETIC_ROTATION_VECTOR]
390+
except KeyError:
391+
raise RuntimeError("No geomag quaternion report found, is it enabled?") from None
385392

386393
@property
387394
def steps(self):
388395
"""The number of steps detected since the sensor was initialized"""
389396
self._process_available_packets()
390-
return self._readings[BNO_REPORT_STEP_COUNTER]
397+
try:
398+
return self._readings[BNO_REPORT_STEP_COUNTER]
399+
except KeyError:
400+
raise RuntimeError("No steps report found, is it enabled?") from None
391401

392402
@property
393403
def linear_acceleration(self):
@@ -428,10 +438,13 @@ def shake(self):
428438
this property is not guaranteed to reflect the shake state at the moment it is read
429439
"""
430440
self._process_available_packets()
431-
shake_detected = self._readings[BNO_REPORT_SHAKE_DETECTOR]
432-
# clear on read
433-
if shake_detected:
434-
self._readings[BNO_REPORT_SHAKE_DETECTOR] = False
441+
try:
442+
shake_detected = self._readings[BNO_REPORT_SHAKE_DETECTOR]
443+
# clear on read
444+
if shake_detected:
445+
self._readings[BNO_REPORT_SHAKE_DETECTOR] = False
446+
except KeyError:
447+
raise RuntimeError("No shake report found, is it enabled?") from None
435448

436449
# # decorator?
437450
def _process_available_packets(self):

examples/bno080_simpletest.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,27 @@
88
from adafruit_bno080.i2c import BNO080_I2C
99
from digitalio import DigitalInOut
1010

11-
i2c = busio.I2C(board.SCL, board.SDA, frequency=400000)
12-
reset_pin = DigitalInOut(board.G0)
13-
bno = BNO080_I2C(i2c, reset=reset_pin)
11+
i2c = busio.I2C(board.SCL, board.SDA, frequency=800000)
12+
reset_pin = DigitalInOut(board.D5)
13+
bno = BNO080_I2C(i2c, reset=reset_pin, debug=False)
1414

1515
bno.enable_feature(adafruit_bno080.BNO_REPORT_ACCELEROMETER)
16-
#bno.enable_feature(adafruit_bno080.BNO_REPORT_GYROSCOPE)
17-
#bno.enable_feature(adafruit_bno080.BNO_REPORT_MAGNETIC_FIELD)
16+
bno.enable_feature(adafruit_bno080.BNO_REPORT_GYROSCOPE)
17+
bno.enable_feature(adafruit_bno080.BNO_REPORT_MAGNETIC_FIELD)
18+
bno.enable_feature(adafruit_bno080.BNO_REPORT_LINEAR_ACCELERATION)
19+
bno.enable_feature(adafruit_bno080.BNO_REPORT_ROTATION_VECTOR)
20+
bno.enable_feature(adafruit_bno080.BNO_REPORT_GEOMAGNETIC_ROTATION_VECTOR)
21+
bno.enable_feature(adafruit_bno080.BNO_REPORT_STEP_COUNTER)
22+
bno.enable_feature(adafruit_bno080.BNO_REPORT_SHAKE_DETECTOR)
1823

1924
while True:
20-
25+
time.sleep(0.1)
26+
2127
print("Acceleration:")
2228
accel_x, accel_y, accel_z = bno.acceleration # pylint:disable=no-member
2329
print("X: %0.6f Y: %0.6f Z: %0.6f m/s^2" % (accel_x, accel_y, accel_z))
2430
print("")
2531

26-
"""
2732
print("Gyro:")
2833
gyro_x, gyro_y, gyro_z = bno.gyro # pylint:disable=no-member
2934
print("X: %0.6f Y: %0.6f Z: %0.6f rads/s" % (gyro_x, gyro_y, gyro_z))
@@ -45,30 +50,29 @@
4550
% (linear_accel_x, linear_accel_y, linear_accel_z)
4651
)
4752
print("")
53+
4854
print("Rotation Vector Quaternion:")
4955
quat_i, quat_j, quat_k, quat_real = bno.quaternion # pylint:disable=no-member
50-
5156
print(
5257
"I: %0.6f J: %0.6f K: %0.6f Real: %0.6f" % (quat_i, quat_j, quat_k, quat_real)
5358
)
5459
print("")
60+
5561
print("Geomagnetic Rotation Vector Quaternion:")
5662
(
5763
geo_quat_i,
5864
geo_quat_j,
5965
geo_quat_k,
6066
geo_quat_real,
6167
) = bno.geomagnetic_quaternion # pylint:disable=no-member
62-
6368
print(
6469
"I: %0.6f J: %0.6f K: %0.6f Real: %0.6f" % (quat_i, quat_j, quat_k, quat_real)
6570
)
6671
print("")
72+
6773
print("Steps detected:", bno.steps)
6874
print("")
75+
6976
if bno.shake:
7077
print("SHAKE DETECTED!")
7178
print("")
72-
73-
sleep(0.5)
74-
"""

0 commit comments

Comments
 (0)