Arduino 3軸加速度センサーのI2C接続うまく行きましたー [Arduino]
未解決だった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)
『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
- メディア: 単行本(ソフトカバー)
GROVE - I2C 三軸加速度センサ ADXL345搭載
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
シリアルプリントしたときに出てくる15000などの数字はどういったことを表しているのか教えていただきたいです。
自分も同じものを使用しているので参考にしたいと思っています。
素人質問で申し訳ないです。よろしくお願いします。
by だせいがく (2014-12-08 14:14)
だせいがくさん、コメントにまったく気づいていませんでした。加速度センサーネタを書こうと久しぶりに振り返ってみてコメントにあることに気づきました。スイマセン。
数字そのものは重力加速度で正規化する必要があります。水平が保たれ静止した状態で観測された値を9.81m/s^2 とすれば他の値も算出できます。
http://makers-with-myson.blog.so-net.ne.jp/2016-03-29
に重力加速度の影響を除去するための考察も書いていますので参考にしてください。
by ys_oota (2016-03-30 01:10)