Example #1
0
    def _init_gyroscope(self):
        """Initialize the gyroscope according to the settings document sent in."""
        # TODO: Better init handling!

        reg1_value = (
            LSM9DS0.get_gyroscope_data_rate_bits(self._gyro_setup.get('data_rate')) +
            LSM9DS0.get_gyroscope_bandwidth_bits(self._gyro_setup.get('bandwidth_level')) +
            ('0' if self._gyro_setup.get('powerdown_mode') else '1') +
            ('1' if self._gyro_setup.get('enabled_z') else '0') +
            ('1' if self._gyro_setup.get('enabled_y') else '0') +
            ('1' if self._gyro_setup.get('enabled_x') else '0')
        )
        self._write(LSM9DS0.GYR_ADDRESS, LSM9DS0.CTRL_REG1_G, int(reg1_value, 2))

        # TODO: Add setup for high-pass filter, LSM9DS0.CTRL_REG2_G and LSM9DS0.CTRL_REG5_G

        reg4_value = (
            ('0' if self._gyro_setup.get('continuous_update') else '1') +
            ('1' if self._gyro_setup.get('little_endian') else '0') +
            LSM9DS0.get_gyroscope_full_scale_bits(self._gyro_setup.get('full_scale')) +
            '0' +  # Unused bit.
            LSM9DS0.get_gyroscope_self_test_bits(self._gyro_setup.get('self_test')) +
            '0'  # SPI Serial Interface Mode selection
        )
        self._write(LSM9DS0.GYR_ADDRESS, LSM9DS0.CTRL_REG4_G, int(reg4_value, 2))
Example #2
0
    def _init_magnetometer(self):
        """Initialize the magnetometer according to the settings document sent in."""
        reg5_value = (
            ('1' if self._mag_setup.get('enabled_temp') else '0') +
            ('11' if self._mag_setup.get('high_resolution') else '00') +
            LSM9DS0.get_magnetometer_data_rate_bits(self._mag_setup.get('data_rate')) +
            '00'  # Latch interrupts disabled right.
        )
        self._write(LSM9DS0.MAG_ADDRESS, LSM9DS0.CTRL_REG5_XM, int(reg5_value, 2))

        reg6_value = (
            '0' +  # Unused bits
            LSM9DS0.get_magnetometer_full_scale_bits(self._mag_setup.get('full_scale')) +
            '00000'  # Unused bits
        )
        self._write(LSM9DS0.MAG_ADDRESS, LSM9DS0.CTRL_REG6_XM, int(reg6_value, 2))

        reg7_value = (
            '00' +  # Accelerometer high-pass filter disabled.
            '0' +  # Filtered acceleration data selection bypassed.
            '00' +  # Unused bits
            ('1' if self._mag_setup.get('lowpower_mode') else '0') +
            LSM9DS0.get_magnetometer_sensor_mode_bits(self._mag_setup.get('sensor_mode'))
        )
        self._write(LSM9DS0.MAG_ADDRESS, LSM9DS0.CTRL_REG7_XM, int(reg7_value, 2))
Example #3
0
    def _init_accelerometer(self):
        """Initialize the accelerometer according to the settings document sent in."""
        # TODO: Better init handling!

        reg1_value = (
            LSM9DS0.get_accelerometer_data_rate_bits(self._acc_setup.get('data_rate')) +
            ('0' if self._acc_setup.get('continuous_update') else '1') +
            ('1' if self._acc_setup.get('enabled_z') else '0') +
            ('1' if self._acc_setup.get('enabled_y') else '0') +
            ('1' if self._acc_setup.get('enabled_x') else '0')
        )
        # Write data rate, enabled axes and block data update.
        self._write(LSM9DS0.ACC_ADDRESS, LSM9DS0.CTRL_REG1_XM, int(reg1_value, 2))

        reg2_value = (
            LSM9DS0.get_accelerometer_anti_alias_filter_bits(self._acc_setup.get('anti_alias')) +
            LSM9DS0.get_accelerometer_full_scale_bits(self._acc_setup.get('full_scale')) +
            LSM9DS0.get_accelerometer_self_test_bits(self._acc_setup.get('self_test')) +
            '0'  # SPI Serial Interface Mode selection
        )
        # Write anti-alias filter bandwidth, acceleration full scale and self-test mode.
        self._write(LSM9DS0.ACC_ADDRESS, LSM9DS0.CTRL_REG2_XM, int(reg2_value, 2))