我试图在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总线有关吗?
我在这里缺乏知识,我正在努力理解这一点,所以任何帮助都会非常感激。
由于 亚历克斯