重力は上向き?
最初に何をするのでしょうか?
簡単な動作確認をしましょう!
ここまで来ていれば、I2C の章で、加速度センサーのデータを RTT コンソールに継続的に表示するプログラムをすでに書けるはずです。私のものは、その章の examples/show-accel.rs にあります。基板の裏側を上に向けて床と平行に持っただけでも、何か興味深いことに気づきませんか? (加速度センサーは基板の裏側に実装されているので、このように上下逆さまに持つと Z 軸は上を向くことを思い出してください。)
このように基板を持ったときに見えるはずなのは、X と Y の値がどちらも 0 にかなり近く、一方で Z の値はおよそ 1000 になっていることです。これは奇妙です。基板は動いていないのに、加速度は 0 ではありません。何が起きているのでしょうか? これは重力に関係しているはずですよね? なぜなら、重力加速度は 1 g だからです(なるほど、加速度センサーでは 1 g = -1000 です)。しかし、重力は物体を下向きに引っ張るので、Z 軸方向の加速度は負ではなく正であるはずです。
プログラムが Z 軸の向きを逆に扱っているのでしょうか? いいえ。基板を回転させて重力が X 軸や Y 軸に揃うようにして試してみても、加速度センサーが測定する加速度は常に上向きです。
ここで起きているのは、加速度センサーが測定しているのは 固有加速度 であって、あなた が観測している加速度ではない、ということです。この固有加速度とは、自由落下している観測者から見た基板の加速度のことです。自由落下している観測者は、地球の中心に向かって 1g の加速度で移動しています。その観測者から見ると、基板は実際には 1g の加速度で上向き(地球の中心から遠ざかる向き)に動いているのです。だから、固有加速度は上向きになるのです。これはまた、基板が自由落下していれば、加速度センサーは 0 の固有加速度を報告することも意味します。どうか、家では試さないでください。あるいは、落として MB2 を危険にさらす覚悟があるなら、どうぞ。
ええ、物理は難しいですね。先に進みましょう。