Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        //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);
        }