LoginSignup
4
3

More than 5 years have passed since last update.

複数のI2Cモジュールを接続すると動作しない?

Posted at

障害内容

開発中のセンサーで下記の三軸加速度センサーの値を取得しようとするとinit()メソッドを呼び出した場所でプログラムが落ちてしまう。
https://www.switch-science.com/catalog/823/

原因調査

1.挿し口が壊れている?

GroveシールドのI2Cの挿し口を変更してみたが、結果は変わらなかった。

2.単体で動作するか調査

Groveシールドに刺さっているほかのモジュールをすべて抜いて、サンプルコードを実行すると予想通りの値が取得できた。
三軸加速度センサーの故障ではないことが確認できた。

3.I2Cのほかのモジュール(光センサ)を接続してテスト

init()メソッドで落ちた。
このことにより、三軸加速度センサーの問題ではなく、別のI2Cモジュールが問題と推測した。

ネットで調べても複数のI2Cモジュールを接続したら動かなくなるという事象は見当たらなかった。
だいたいこういう時は初歩的なことでミスをしていることが多い。
案の定、配線を確認してみると、ケーブルグランドで束ねられた先の接続先モジュールがI2Cのモジュール(光センサ)ではなくLEDモジュールにつながってしまっていた。

LEDモジュールを外し、I2Cモジュール(光センサ)を接続すると正常な動作を確認することが出来た。

調査結果

I2CコネクタにI2C接続ではないモジュールを接続すると、他のI2Cモジュールも動かなくなることが分かりました。
複数のI2Cモジュールは当然、問題なく接続して動作させることが出来ました。

まとめ

接続をうっかり間違えたのがいけなかったのですが、もし同じうっかりをしてしまった人がいれば参考になるかなと思い記事とさせていただきました。

次からは気を付けないとということで、各接続先にテプラでラベルを張り間違えないようにしました。
しかし今回はうっかりでArduinoが壊れなかったのが幸いですw

4
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3