我想从ADXL355传感器获取加速度数据。
代码:
void readFIFO (){
long data[3];
byte data2 [9];
digitalWrite(chipSelectPin, LOW);
SPI.transfer( (FIFO<<1) | 1);
for (int i = 0 ; i < 9; i++){
data2[i] = SPI.transfer(0x00);
}
digitalWrite(chipSelectPin, HIGH);
Serial.println("Byte data in hex and binary");
for (int j = 0 ; j < 9 ; j++){
Serial.print("element "+String(j) +": ");
Serial.print(data2[j],HEX);
Serial.print(" ");
Serial.println(data2[j],BIN);
}
for (int z = 0 ; z < 3; z++){
data[z] = ((data2[z*3]<<12) | (data2[z*3 +1] << 4) | (data2[z*3+2] >>4));
}
Serial.println("concatenated values: ");
for (int i = 0 ; i < 3 ; i++){
Serial.println(data[i]);
}
}
示例输出:
# Byte data in hex and binary
element 0: 8 1000
element 1: 75 1110101
element 2: F1 11110001
element 3: 3 11
element 4: E9 11101001
element 5: 60 1100000
element 6: 3E 111110
element 7: 7C 1111100
element 8: 30 110000
# concatenated values:
-30881
16022
-6205
这些值是两个补码。这些是正确的值吗?如果不是我做错了什么?