def __init__(self, bus, address, name, samples=3, rate=4, gain=1, sampling_mode=0, x_offset=0, y_offset=0, z_offset=0): self.bus = bus self.address = address self.name = name self.samples = samples self.gain = gain self.sampling_mode = sampling_mode self.x_offset = x_offset self.y_offset = y_offset self.z_offset = z_offset # Set the number of samples conf_a = (samples << 5) + (rate << 2) I2CUtils.i2c_write_byte(self.bus, self.address, HMC5883L.CONF_REG_A, conf_a) # Set the gain conf_b = gain << 5 I2CUtils.i2c_write_byte(self.bus, self.address, HMC5883L.CONF_REG_B, conf_b) # Set the operation mode I2CUtils.i2c_write_byte(self.bus, self.address, HMC5883L.MODE_REG, self.sampling_mode) self.raw_data = [0, 0, 0, 0, 0, 0] # Now read all the values as the first read after a gain change returns the old value self.read_raw_data()
def __init__(self, bus, address, name, fs_scale=FS_250, afs_scale=AFS_2g): ''' Constructor ''' self.bus = bus self.address = address self.name = name self.fs_scale = fs_scale self.afs_scale = afs_scale self.raw_gyro_data = [0, 0, 0, 0, 0, 0] self.raw_accel_data = [0, 0, 0, 0, 0, 0] self.raw_temp_data = [0, 0] self.gyro_raw_x = 0 self.gyro_raw_y = 0 self.gyro_raw_z = 0 self.gyro_scaled_x = 0 self.gyro_scaled_y = 0 self.gyro_scaled_z = 0 self.raw_temp = 0 self.scaled_temp = 0 self.accel_raw_x = 0 self.accel_raw_y = 0 self.accel_raw_z = 0 self.accel_scaled_x = 0 self.accel_scaled_y = 0 self.accel_scaled_z = 0 self.pitch = 0.0 self.roll = 0.0 # We need to wake up the module as it start in sleep mode I2CUtils.i2c_write_byte(self.bus, self.address, MPU6050.PWR_MGMT_1, 0) # Set the gryo resolution I2CUtils.i2c_write_byte(self.bus, self.address, MPU6050.FS_SEL, self.fs_scale << 3) # Set the accelerometer resolution I2CUtils.i2c_write_byte(self.bus, self.address, MPU6050.AFS_SEL, self.afs_scale << 3)