我正在转换一个在特定微控制器上运行的程序,并将其调整为在树莓派上运行。我已经成功地从我一直在使用的传感器中提取值,但现在我遇到了一个问题,我认为这是由我无法理解的几行代码引起的。我已经阅读了它们是什么,但仍在摸不着头脑。我认为下面的代码应该修改存储在X,Y,Z
变量中的数字,但是我认为这不会发生在我当前的程序中。此外,我必须更改byte
为INT
使程序编译没有错误。这是我转换的原始代码中未修改的代码。有人可以告诉我这是否还在修改数字吗?
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
}