BNO055をI2CとUARTで使用するためのライブラリ。UARTはmbedにて不安定なため使用できるボードとできないボードがある模様。

Dependents:   BNO055_BME280_ Yabusame2_gyro GRhanawaizman test_deg_read

Revision:
4:9efb4abafd2e
Parent:
3:363ec3772dce
Child:
5:64b033b30802
--- a/BNO055.cpp	Sun Jun 25 05:10:27 2017 +0000
+++ b/BNO055.cpp	Mon May 13 14:17:45 2019 +0000
@@ -678,7 +678,7 @@
     setOperation_CONFIG();
 
     //外部発振子設定,セルフテストの実行,セルフテスト完了まで待つ
-    setSysTrigger(0x81);
+    //setSysTrigger(0x81);
 
     //加速度センサーレンジ設定(+-8G)
     //地磁気や角速度センサーのレンジやバンドはFusionモードにより自動設定される
@@ -1161,17 +1161,21 @@
     //四元数からオイラー角に変換
     //ref: Wikipedia
     //Conversion between quaternions and Euler angles(Quaternion to Euler Angles Conversion)
+    // 2019/05/13: 記事中のRollとPitchの軸の説明が逆であるため修正
     double q3q3 = q3 * q3;
     
+    //Y-axis rotation
     double m1 = +2.0 * (q1 * q2 + q3 * q4);
     double m2 = +1.0 - 2.0 * (q2 * q2 + q3q3);
-    E_roll = atan2(m1, m2) * 57.2957795131;
+    E_pitch = atan2(m1, m2) * 57.2957795131;
     
+    //X-axis rotation
     m1 = +2.0 * (q1 * q3 - q4 * q2);
     m1 = (m1 > 1.0)? 1.0 : m1;
     m1 = (m1 < -1.0)? -1.0 : m1;
-    E_pitch = asin(m1) * 57.2957795131;
+    E_roll = asin(m1) * 57.2957795131;
     
+    //Z-axis rotation
     m1 = +2.0 * (q1 * q4 + q2 * q3);
     m2 = +1.0 - 2.0 * (q3q3 + q4 * q4);
     E_heading = atan2(m1, m2) * 57.2957795131;