今回の記事は、加速度センサとジャイロセンサを使いたくてMPU9250とArduino MEGAをI2C通信でつなげようとした時につまづいたポイントのメモです。
#症状:
センサの値をシリアルモニタで読み取ろうとしてたら、値が途中で止まった。(数十秒程度は取得できた)センサ単体で使う分にはこの問題は生じなかったが、出力強めのDCモータと併せて使おうとした際に電磁ノイズの影響か、この症状が発生した。
#原因:
AruduinoのI2C通信のデフォルトプルアップ抵抗の値が適切じゃなかったっぽい。
以下の記事参照
#対策:
内部プルアップ抵抗を無効にし、2-3kΩくらいの抵抗をSDAとSCL線に挟んでやると、止まることなく動いた。
#まとめ:
抵抗などの電子回路部品は適切な値のものを使用しましょう、ArduinoのI2Cのデフォルトの内部プルアップ抵抗はそのまま使うと困ることあるよ、と言う話でした。(MPU6050でも同じ対策が必要)