了解一些示例代码?

时间:2015-01-25 14:14:54

标签: c++ types arduino accelerometer i2c

我试图在arduino上为MPU-9150传感器探测这个样本。它通过I2C总线连接,并使用此功能从传感器采样

int MPU9150_readSensor(int addrL, int addrH){
  Wire.beginTransmission(MPU9150_I2C_ADDRESS);
  Wire.write(addrL);
  Wire.endTransmission(false);

  Wire.requestFrom(MPU9150_I2C_ADDRESS, 1, true);
  byte L = Wire.read();

  Wire.beginTransmission(MPU9150_I2C_ADDRESS);
  Wire.write(addrH);
  Wire.endTransmission(false);

  Wire.requestFrom(MPU9150_I2C_ADDRESS, 1, true);
  byte H = Wire.read();

  return (int16_t)((H<<8)+L);
}
例如,

addrL和addrH是两个地址,

#define MPU9150_TEMP_OUT_H         0x41
#define MPU9150_TEMP_OUT_L         0x42

当打印值时,我通过串行监视器返回的内容始终为-1,我认为这与(int16_t)类型有关,该类型的删除对打印值没有任何影响但是即时消息不确定?我也不确定为什么有两个地址可以获得单个值,H和L以及为什么它们被移位并加在一起?它与I2C总线有关吗?

我在这里缺乏知识,我正在努力理解这一点,所以任何帮助都会非常感激。

由于 亚历克斯

0 个答案:

没有答案