ATMEL ATmega128이있는 Synapse 무선 모듈을 사용하고 있습니다. ADXL345 3 축 가속도계를 연결했는데 I2C를 통해 통신합니다. Synapse 모듈은 스크립팅 언어로 파이썬의 하위 집합을 사용합니다.ADXL345 가속도계 데이터 출력 변환
XYZ 데이터를 읽을 때 나는 6 바이트 배열을 되 찾는다. EC FF EF FF 14 01
출력 데이터는 DATAX0을 최하위 바이트로, DATAx1을 최상위 바이트로하여 2의 보수입니다. 위의 예에서 EC FF는 x 축의 출력입니다.
저는 G 힘으로 변환하는 방법에 어려움을 겪고 있습니다. 데이터 시트는 전체 해상도 모드 (내가 속해 있음)에서 출력 해상도가 g 범위 ( )가 4 mg/LSB 스케일 계수를 유지하기 위해 범위 비트로 설정되면 증가한다고 말합니다.
x0 = ord(data[0])
x1 = ord(data[1])
raw = x0+(256*x1)
는하지만, 원시의 값이 이해가되지 않습니다
나는 다음과 같은 시도했습니다. 이 두 바이트를 부호있는 정수로 변환하려면 어떻게해야합니까?
추가 정보 내가 ADXL345 읽기 위해 전화를 걸 때 : 그것은 바이트의 문자열이 다시 외부 I2C 디바이스에서 읽을 반환
data = readAdxls(6)
합니다.
Xlsb = data[0] # EC - 236
Xmsb = data[1] # FF - 255
Ylsb = data[2] # EF - 239
Ymsb = data[3] # FF - 255
Zlsb = data[4] # 14 - 20
Zmsb = data[5] # 01 - 1
그래서 XLSB는 최하위 바이트하고 Xmsb는 가장 중요한 바이트입니다. 이들은 정수입니다
나는 두 개의 정수/바이트를 부호있는 정수로 결합하는 방법과 2의 보수를 이해하지 못한다고 생각합니다.
이 하위 집합은 얼마나 완성 되었습니까? 'struct' 모듈을 사용할 수 있습니까? – MaxNoe
아니요, struct 모듈은 언어의 일부가 아닙니다. FWIW, 수레도 지원하지 않습니다. 그것은 매우 가벼운 무게로 설계되었습니다. – cce1911
죄송 합니다만 두 바이트가 EC와 FF 인 경우 가장 중요한 두 번째 바이트 인 FF EC가 올바른 순서입니다. 그러므로 변환하기 만하면됩니다. (대부분 << 8 | 이상) 이것은 원시 데이터를 제공 한 다음 선택된 센서 해상도에 대해 곱합니다. 최대 해상도를 얻으려면 0.0039 – Lornioiz