Skip to main content

Class Bno055

Provide methods / properties to allow an application to control a BNO055 9-axis absolute orientation sensor.

Assembly: Bno055.dll
View Source
Declaration
public class Bno055 : ByteCommsSensorBase<(Acceleration3D? Acceleration3D, AngularVelocity3D? AngularVelocity3D, MagneticField3D? MagneticField3D, Quaternion? QuaternionOrientation, Acceleration3D? LinearAcceleration, Acceleration3D? GravityVector, EulerAngles? EulerOrientation, Temperature? Temperature)>, IObservable<IChangeResult<(Acceleration3D? Acceleration3D, AngularVelocity3D? AngularVelocity3D, MagneticField3D? MagneticField3D, Quaternion? QuaternionOrientation, Acceleration3D? LinearAcceleration, Acceleration3D? GravityVector, EulerAngles? EulerOrientation, Temperature? Temperature)>>, ISamplingSensor<(Acceleration3D? Acceleration3D, AngularVelocity3D? AngularVelocity3D, MagneticField3D? MagneticField3D, Quaternion? QuaternionOrientation, Acceleration3D? LinearAcceleration, Acceleration3D? GravityVector, EulerAngles? EulerOrientation, Temperature? Temperature)>, ISensor<(Acceleration3D? Acceleration3D, AngularVelocity3D? AngularVelocity3D, MagneticField3D? MagneticField3D, Quaternion? QuaternionOrientation, Acceleration3D? LinearAcceleration, Acceleration3D? GravityVector, EulerAngles? EulerOrientation, Temperature? Temperature)>, IDisposable, IAccelerometer, ISamplingSensor<Acceleration3D>, ISensor<Acceleration3D>, IGyroscope, ISamplingSensor<AngularVelocity3D>, ISensor<AngularVelocity3D>, ITemperatureSensor, ISamplingSensor<Temperature>, ISensor<Temperature>, ISensor, ISamplingSensor, II2cPeripheral

Inheritance: System.Object -> Meadow.Foundation.ObservableBase<UNIT>

Implements:

Expand

System.IObservable<Meadow.IChangeResult<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>>, Meadow.Peripherals.Sensors.ISamplingSensor<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>, Meadow.Peripherals.Sensors.ISensor<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>, System.IDisposable, Meadow.Peripherals.Sensors.Motion.IAccelerometer, Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Acceleration3D>, Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Acceleration3D>, Meadow.Peripherals.Sensors.Motion.IGyroscope, Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.AngularVelocity3D>, Meadow.Peripherals.Sensors.ISensor<Meadow.Units.AngularVelocity3D>, Meadow.Peripherals.Sensors.ITemperatureSensor, Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Temperature>, Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Temperature>, Meadow.Peripherals.Sensors.ISensor, Meadow.Peripherals.Sensors.ISamplingSensor, Meadow.Hardware.II2cPeripheral

Properties

DefaultI2cAddress

The default I2C address for the peripheral

View Source
Declaration
public byte DefaultI2cAddress { get; }

Acceleration3D

Current Acceleration

View Source
Declaration
public Acceleration3D? Acceleration3D { get; }

AngularVelocity3D

Current Angular Velocity

View Source
Declaration
public AngularVelocity3D? AngularVelocity3D { get; }

MagneticField3D

Current Magnetic Field

View Source
Declaration
public MagneticField3D? MagneticField3D { get; }

QuaternionOrientation

Current Quaternion Orientation

View Source
Declaration
public Quaternion? QuaternionOrientation { get; }

LinearAcceleration

Current Linear Acceleration

View Source
Declaration
public Acceleration3D? LinearAcceleration { get; }

GravityVector

Current Gravity Vector

View Source
Declaration
public Acceleration3D? GravityVector { get; }

EulerOrientation

Current Euler Orientation

View Source
Declaration
public EulerAngles? EulerOrientation { get; }

Temperature

Current Temperature value

View Source
Declaration
public Temperature? Temperature { get; }

TemperatureSource

Select the source of the Temperature property

View Source
Declaration
public Bno055.Sensor TemperatureSource { get; set; }

PowerMode

Get or set the power mode for the sensor.

View Source
Declaration
public byte PowerMode { get; set; }

OperatingMode

Get / set the current operating mode for the sensor.

View Source
Declaration
public byte OperatingMode { get; set; }

IsInFusionMode

Check if sensor is currently working in Fusion mode.

View Source
Declaration
public bool IsInFusionMode { get; }

IsSystemCalibrated

Get the system calibration status.

View Source
Declaration
public bool IsSystemCalibrated { get; }

IsAccelerometerCalibrated

Get the accelerometer calibration status.

View Source
Declaration
public bool IsAccelerometerCalibrated { get; }

IsGyroscopeCalibrated

Get the gyroscope calibration status.

View Source
Declaration
public bool IsGyroscopeCalibrated { get; }

IsMagnetometerCalibrated

Get the magnetometer status.

View Source
Declaration
public bool IsMagnetometerCalibrated { get; }

IsFullyCalibrated

Is the system fully calibrated?

View Source
Declaration
public bool IsFullyCalibrated { get; }

Methods

StartUpdating(TimeSpan?)

Start updating

View Source
Declaration
public override void StartUpdating(TimeSpan? updateInterval = null)
Parameters
TypeNameDescription
System.Nullable<System.TimeSpan>updateIntervalThe time between updates

StopUpdating()

Stop reading data

View Source
Declaration
public override void StopUpdating()

ReadSensor()

Reads data from the sensor

View Source
Declaration
protected override Task<(Acceleration3D? Acceleration3D, AngularVelocity3D? AngularVelocity3D, MagneticField3D? MagneticField3D, Quaternion? QuaternionOrientation, Acceleration3D? LinearAcceleration, Acceleration3D? GravityVector, EulerAngles? EulerOrientation, Temperature? Temperature)> ReadSensor()
Returns

System.Threading.Tasks.Task<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>: The latest sensor reading### RaiseEventsAndNotify(IChangeResult<(Acceleration3D? Acceleration3D, AngularVelocity3D? AngularVelocity3D, MagneticField3D? MagneticField3D, Quaternion? QuaternionOrientation, Acceleration3D? LinearAcceleration, Acceleration3D? GravityVector, EulerAngles? EulerOrientation, Temperature? Temperature)>) Raise events for subscribers and notify of value changes

View Source
Declaration
protected override void RaiseEventsAndNotify(IChangeResult<(Acceleration3D? Acceleration3D, AngularVelocity3D? AngularVelocity3D, MagneticField3D? MagneticField3D, Quaternion? QuaternionOrientation, Acceleration3D? LinearAcceleration, Acceleration3D? GravityVector, EulerAngles? EulerOrientation, Temperature? Temperature)> changeResult)
Parameters
TypeNameDescription
Meadow.IChangeResult<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>changeResultThe updated sensor data

GetReadings(int, double)

Convert a section of the sensor data into a tuple

View Source
Declaration
protected (double X, double Y, double Z) GetReadings(int start, double divisor)
Returns

System.ValueTuple<System.Double,System.Double,System.Double>

Parameters
TypeNameDescription
System.Int32startStart of the data in the sensorReadings member variable
System.DoubledivisorDivisor

ConvertReadingToEulerAngles(int, double)

Convert the sensor readings into an orientation in Euler angles

View Source
Declaration
protected EulerAngles ConvertReadingToEulerAngles(int start, double divisor)
Returns

Meadow.Foundation.Spatial.EulerAngles: EulerAngles object containing the orientation information

Parameters
TypeNameDescription
System.Int32startFirst of the sensor readings to convert
System.DoubledivisorDivisor to apply to the sensor data

DisplayRegisters()

Read all of the registers and display their values on the Debug output.

View Source
Declaration
public void DisplayRegisters()

Events

MagneticField3DUpdated

Raised when the magnetic field value changes

View Source
Declaration
public event EventHandler<IChangeResult<MagneticField3D>> MagneticField3DUpdated
Event Type

System.EventHandler<Meadow.IChangeResult<Meadow.Units.MagneticField3D>>

QuaternionOrientationUpdated

Raised when the quaternion orientation value changes

View Source
Declaration
public event EventHandler<IChangeResult<Quaternion>> QuaternionOrientationUpdated
Event Type

System.EventHandler<Meadow.IChangeResult<Meadow.Foundation.Spatial.Quaternion>>

LinearAccelerationUpdated

Raised when the linear acceleration value changes

View Source
Declaration
public event EventHandler<IChangeResult<Acceleration3D>> LinearAccelerationUpdated
Event Type

System.EventHandler<Meadow.IChangeResult<Meadow.Units.Acceleration3D>>

GravityVectorUpdated

Raised when the gravity vector acceleration value changes

View Source
Declaration
public event EventHandler<IChangeResult<Acceleration3D>> GravityVectorUpdated
Event Type

System.EventHandler<Meadow.IChangeResult<Meadow.Units.Acceleration3D>>

EulerOrientationUpdated

Raised when the euler orientation value changes

View Source
Declaration
public event EventHandler<IChangeResult<EulerAngles>> EulerOrientationUpdated
Event Type

System.EventHandler<Meadow.IChangeResult<Meadow.Foundation.Spatial.EulerAngles>>

Implements

  • System.IObservable<Meadow.IChangeResult<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>>
  • Meadow.Peripherals.Sensors.ISamplingSensor<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>
  • Meadow.Peripherals.Sensors.ISensor<System.ValueTuple<System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.AngularVelocity3D>,System.Nullable<Meadow.Units.MagneticField3D>,System.Nullable<Meadow.Foundation.Spatial.Quaternion>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Units.Acceleration3D>,System.Nullable<Meadow.Foundation.Spatial.EulerAngles>,System.ValueTuple<System.Nullable<Meadow.Units.Temperature>>>>
  • System.IDisposable
  • Meadow.Peripherals.Sensors.Motion.IAccelerometer
  • Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Acceleration3D>
  • Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Acceleration3D>
  • Meadow.Peripherals.Sensors.Motion.IGyroscope
  • Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.AngularVelocity3D>
  • Meadow.Peripherals.Sensors.ISensor<Meadow.Units.AngularVelocity3D>
  • Meadow.Peripherals.Sensors.ITemperatureSensor
  • Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Temperature>
  • Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Temperature>
  • Meadow.Peripherals.Sensors.ISensor
  • Meadow.Peripherals.Sensors.ISamplingSensor
  • Meadow.Hardware.II2cPeripheral