前提・実現したいこと
前提
使用している機器は、RaspberryPi4BとADXL372です
RaspberryPi4BとADXL372はI2C通信、プログラムはPythonで記述を行っています
一応X,Y,Z軸データを取得するプログラムを書いてみたのですが、現状上手くいっていません
実現したいこと
加速度センサーADXL372の加速度データを簡易的にでもよいので正しい値として取得したいと考えています
何か解決に繋がりそうな情報が少しでもありましたら教えていただけると幸いです、よろしくお願いします
発生している問題・エラーメッセージ
X 軸データ、Y軸データ、Z軸データを表示するプログラムを書いたのですが、Z軸データが変化しません
出力結果は以下のようになりました
出力結果 X:48Y:176Z:4080 X:16Y:208Z:4080 X:48Y:192Z:4080 X:240Y:192Z:4080 X:224Y:240Z:4080 X:16Y:192Z:4080 X:48Y:176Z:4080 X:240Y:208Z:4080 X:16Y:240Z:4080 X:16Y:176Z:4080 X:208Y:144Z:4080 X:208Y:192Z:4080 X:240Y:224Z:4080 X:208Y:160Z:4080 X:16Y:176Z:4080 X:16Y:160Z:4080 X:240Y:240Z:4080 X:16Y:176Z:4080 X:16Y:112Z:4080 X:16Y:208Z:4080 X:208Y:208Z:4080 X:16Y:192Z:4080 X:48Y:240Z:4080 X:48Y:208Z:4080 X:240Y:240Z:4080 X:48Y:16Z:4080
該当のソースコード
Python
1import smbus 2import time 3 4i2c = smbus.SMBus(1) 5address = 0x53 6 7try: 8 while True: 9 xh = i2c.read_byte_data(address, 0x08) 10 xl = i2c.read_byte_data(address, 0x09) 11 yh = i2c.read_byte_data(address, 0x0A) 12 yl = i2c.read_byte_data(address, 0x0B) 13 zh = i2c.read_byte_data(address, 0x0C) 14 zl = i2c.read_byte_data(address, 0x0D) 15 16 X_data =str(xh << 4 | xl) 17 Y_data =str(yh << 4 | yl) 18 Z_data =str(zh << 4 | zl) 19 print('X:'+ X_data +'Y:'+ Y_data +'Z:'+ Z_data) 20 time.sleep(0.5) 21 22except KeyboardInterrupt: 23 print("Cleanup")
参考
ADXL372のデータシートです(なぜかリンクに飛べないみたいです、お手数ですが検索していただくか、URLをコピペしてください、すみません)
https://www.analog.com/media/jp/technical-documentation/data-sheets/ADXL372_jp.pdf
34ページからX軸データ、Y軸データ、Z軸データについて書かれていました
X軸データについては下図のように書かれていました
自分は単純に上位8ビットを左に4つずらして下位4ビットとあわせて12ビットを表示するようにしました

回答1件
あなたの回答
tips
プレビュー