public override async Task Start() { switch (SelectedAccelerometer) { case "MPU-9250": Sensor = (await Mpu6050.ProbeAsync(Board.I2c, true))[0]; break; case "ADXL-345": Sensor = (await Adxl345.ProbeAsync(Board.I2c))[0]; break; case "LIS3DH": Sensor = (await Lis3dh.ProbeAsync(Board.I2c))[0]; break; case "BNO055": Sensor = (await Bno055.ProbeAsync(Board.I2c))[0]; break; case "LSM303DLHC": var lsm303dlhc = new Lsm303dlhc(Board.I2c); Sensor = lsm303dlhc.Accel; break; } Sensor.AutoUpdateWhenPropertyRead = false; OnPropertyChanged(nameof(Sensor)); }
public async void Run(IBackgroundTaskInstance taskInstance) { // If you start any asynchronous methods here, prevent the task // from closing prematurely by using BackgroundTaskDeferral as // described in http://aka.ms/backgroundtaskdeferral // BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); bno055 = new Bno055(); await bno055.InitBNO055Async(Bno055.OperationMode.OPERATION_MODE_NDOF, "UART0", 18); Bno055.SystemStatus sysStatus = bno055.GetSystemStatus(true); System.Diagnostics.Debug.WriteLine(string.Format("System Status: Status {0}, Self-Test {1}, Error {2}", sysStatus.StatusReg, sysStatus.SelfTestResult, sysStatus.ErrorReg)); Bno055.Revisions revision = bno055.GetRevision(); System.Diagnostics.Debug.WriteLine(string.Format("Revision: Software {0}, Bootloader {1}, Accel ID {2}, Mag ID {3}, Gyro ID {4}", revision.Software, revision.Bootloader, revision.AccelID, revision.MagID, revision.GyroID)); Task.Delay(1000).Wait(); while (true) { Bno055.Euler euler = bno055.ReadEuler(); if (null != euler) { System.Diagnostics.Debug.WriteLine(string.Format("Euler: Pitch {0}, Roll {1}, Heading {2}", euler.Pitch, euler.Roll, euler.Heading)); } Task.Delay(1000).Wait(); } }
public GyroUpdater(Bno055 sensor) { //assign our sensor and create our data. This only happens once. _sensor = sensor; _gyroData = new GyroData(); //create our work item! _workItem = new WorkItem(UpdateGyro, true, FlightEventType.Gyro, _gyroData); }
public void InitHardware() { Console.WriteLine("Init..."); sensor = new Bno055(Device.CreateI2cBus(), 0x28); sensor.DisplayRegisters(); sensor.PowerMode = Bno055.PowerModes.Normal; sensor.OperatingMode = Bno055.OperatingModes.ConfigurationMode; sensor.OperatingMode = Bno055.OperatingModes.InertialMeasurementUnit; sensor.DisplayRegisters(); }
//private int headingCorrection = 180; /// <summary> /// Basic constructor /// </summary> /// <param name="bus">I2C bus</param> /// <param name="address">I2C device address</param> public BNO055(II2cBus bus, byte address = 40) { sensor = new Bno055(bus, address); sensor.OperatingMode = Bno055.OperatingModes.NINE_DEGREES_OF_FREEDOM; bno = new I2cPeripheral(bus, address); }