我正在用 C++ 和 Qt 对 Raspberry Pi 3 进行编程。我正在使用WiringPi库与 I2C 加速度计连接(我用它来比较倾斜角度值,但不测量角度)。
我需要确定一个加速度计读数是否大于或小于前一个读数或具有任意预设值。(我的机器上有一个手臂,我想将其设置为任意角度,然后让手臂移动到该角度或从该角度移动。)
加速度计以两个字节的二进制补码数据输出读数。数据为十二位左对齐。(我假设这意味着加速度计值的 4 个最高有效位位于高字节的左侧?)加速度计是 LIS3DH。
我正在将两个字节作为 2 个整数值读入程序中,但我正在努力将数据转换为有用的信息。
WiringPi I2C 库仅返回整数。
我可能需要将十进制读数转换为二进制,将两个字节的二进制补码左对齐二进制数据转换为十二位右对齐常规二进制数据。
我正在寻找有关如何完成此任务的建议,以及是否有比上面列出的路径更简单的方法来完成此任务。
编辑:
void main(void)
{
int acc_l = 0, acc_h = 0;
acc_l = read_output_register_lo;
acc_h = read_output_register_hi;
/*
How do I convert acc_l and acc_h to binary?
Do I need to shift acc_h 4 bits to the right?
How do I concatenate acc_h and acc_l into a 12 bit binary number?
How do I …Run Code Online (Sandbox Code Playgroud)