コード例 #1
0
ファイル: IMUDriver.cs プロジェクト: nojan1/MiniRover
        private void SetRange(MPU6050Range range)
        {
            switch (range)
            {
            case MPU6050Range.MPU6050_RANGE_2G:
                rangePerDigit = .000061;
                break;

            case MPU6050Range.MPU6050_RANGE_4G:
                rangePerDigit = .000122;
                break;

            case MPU6050Range.MPU6050_RANGE_8G:
                rangePerDigit = .000244;
                break;

            case MPU6050Range.MPU6050_RANGE_16G:
                rangePerDigit = .0004882;
                break;

            default:
                break;
            }

            int value = _device.ReadAddressByte(MPU6050_REG_ACCEL_CONFIG);

            value &= 0b11100111;
            value |= ((int)range << 3);
            _device.WriteAddressByte(MPU6050_REG_ACCEL_CONFIG, (byte)value);
        }
コード例 #2
0
ファイル: IMUDriver.cs プロジェクト: nojan1/MiniRover
        public IMUDriver(int address, MPU6050Scale scale, MPU6050Range range)
        {
            _device = Pi.I2C.AddDevice(address);

            if (!IsCorrectModel())
            {
                throw new Exception("Wrong gyro model detected");
            }

            SetClockSource(MPU6050ClockSource.MPU6050_CLOCK_PLL_XGYRO);
            SetScale(scale);
            SetRange(range);
            SetSleepEnable(false);
        }