未解決だったArduinoと3軸加速度センサー『LIS3DH』のI2C接続。ようやく解決できました!




LIS3DH』のアドレスが見つからないと叱られてしまっていたので、I2C Scanner でハードウエアが認識されているか確認してみることにしました。グーグル先生に Arduino版があるか問い合わせたところ、すぐに見つかりました。さすがオープンハードウエアです。

http://playground.arduino.cc/Main/I2cScanner#.UyWUDfl_sms

早速、上記のウェブサイトにあるスケッチを動かしてみました。




動かしてみたら、意外な結果が!?




LIS3DH』と思わしきスレーブアドレスが ”0x18” と出ています。これが『LIS3DH』なのかどうか分かりませんが、他に拠り所がないので、この数字を信じて昨日のスケッチを変更してみます。




うまく行くかどうか分かりませんが、ダメもとで動かしてみましょう。



あれ?あっさり動いてしまいました。う~む。。。さっぱり理由が分かりません。


まだ信用できないので、加速度データをとるスケッチを書いて実際にデータが取得できるか試してみます。




動かしてみました。どうやら結果はそれらしく出ているようです。謎が深まります。




グラフにしてみました。やはり問題なさそうです。う~む。




理由はまだはっきりしていませんが、とりあえず動いたようです。スッキリしませんが、これで一旦決着としたいと思います。600円を無駄にせずによかった~。原因は追々突き止めていきたいと思います。
(^_^)/~



(追記)
まりすさん(https://twitter.com/maris_HY)の助言で謎がとけました!まりすさんありがとうございます!Wireライブラリの説明をきちんと読むべきでした。このサイトのNoteの部分を読んでください。

Arduino - Wire
http://arduino.cc/en/reference/wire

Wireライブラリはデバイスのアドレスを7bitで指定します。Wireライブラリに指定するアドレスは、R/Wを含む8bit のアドレスを右シフトすることで得られます。0x30, 0x31 を右にシフトすると、0x18となりますので、これが Wire ライブラリで指定するアドレスということになります。R/W の1bit は勝手につけてくれるようですね。

ということで、きちんと説明書は読みましょうというオチでした。(*^^*)


関連記事
Arduino 3軸加速度センサーで大ハマリ中。。
http://makers-with-myson.blog.so-net.ne.jp/2014-03-15

Arduino で3軸加速度センサーを試してみた!
http://makers-with-myson.blog.so-net.ne.jp/2014-03-08


※Arduino UNO の結線図を差し替えしました。(2016.4.9)





Arduinoをはじめよう 第2版 (Make:PROJECTS)

  • 作者: Massimo Banzi
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/03/16
  • メディア: 単行本(ソフトカバー)



Arduinoをはじめようキット

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス



GROVE - I2C 三軸加速度センサ ADXL345搭載

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス