9#if defined(ARDUINO) && !defined(UDON_TEENSY_I2C_SLAVE_MODE)
11# include <Udon/Thirdparty/Adafruit_BNO055/Adafruit_BNO055.h>
24 QuaternionDirection direction;
30 Quaternion quaternion;
39 BNO055(TwoWire& wire,
const QuaternionDirection& direction = {
true,
true,
true })
40 : Adafruit_BNO055(-1, 0x28, &wire)
41 , direction(direction)
42 , offset(Quaternion::Identity())
43 , quaternion(Quaternion::Identity())
52 adafruit_bno055_opmode_t mode = OPERATION_MODE_NDOF;
55 adafruit_bno055_axis_remap_config_t remapConfig = REMAP_CONFIG_P1;
58 adafruit_bno055_axis_remap_sign_t remapSign = REMAP_SIGN_P1;
61 bool useExternalCrystal =
false;
68 return begin(Parameter());
74 bool begin(
const Parameter& parameter)
76 if (!Adafruit_BNO055::begin(parameter.mode))
81 setAxisRemap(parameter.remapConfig);
82 setAxisSign(parameter.remapSign);
83 setExtCrystalUse(parameter.useExternalCrystal);
91 void setMode(adafruit_bno055_opmode_t mode)
93 Adafruit_BNO055::setMode(mode);
98 adafruit_bno055_opmode_t getMode()
100 return Adafruit_BNO055::getMode();
112 const auto q = Adafruit_BNO055::getQuat();
113 quaternion = { q.x(), q.y(), q.z(), q.w() };
115 const auto g = Adafruit_BNO055::getVector(Adafruit_BNO055::VECTOR_GYROSCOPE);
116 gyro = { g.x(), g.y(), g.z() };
121 Quaternion getQuaternion()
const
123 return (offset.inverse() * quaternion).directionRevision(direction);
128 Euler getEuler()
const
130 return getQuaternion().toEuler();
135 double getYaw()
const
137 return getQuaternion().toYaw();
void Show(Args &&... args)
区切り文字ありで出力する
Definition Show.hpp:339
Vec3 Vec3
Definition Vector3D.hpp:20