我正在转换在特定的微控制器上运行的程序,并使其适应在树莓派上运行。我已经成功地从我一直在使用的传感器中获取值,但现在我遇到了一个问题,我认为这是由于我无法理解的几行代码造成的。我已经阅读了他们的内容,但仍然在挠头。下面的代码我相信应该修改存储在X,Y,Z
变量中的数字,但我不认为这是发生在我当前的程序中。此外,我不得不将byte
更改为INT
以使程序编译时无错误。这是我转换的原始代码中的未修改代码。有人可以告诉我,这是甚至修改数字吗?理解MSB LSB
void getGyroValues() {
byte MSB, LSB;
MSB = readI2C(0x29);
LSB = readI2C(0x28);
x = ((MSB << 8) | LSB);
MSB = readI2C(0x2B);
LSB = readI2C(0x2A);
y = ((MSB << 8) | LSB);
MSB = readI2C(0x2D);
LSB = readI2C(0x2C);
z = ((MSB << 8) | LSB);
}
这里原来readI2C功能:
int readI2C (byte regAddr) {
Wire.beginTransmission(Addr);
Wire.write(regAddr); // Register address to read
Wire.endTransmission(); // Terminate request
Wire.requestFrom(Addr, 1); // Read a byte
while(!Wire.available()) { }; // Wait for receipt
return(Wire.read()); // Get result
}
@ Yamaha32088 - 我已经编辑我的答案。让我知道它是否回答你所有的问题,或者如果你需要更多的具体细节。 – Tuxdude 2013-03-03 08:21:30