課題
話を簡単にするために、ここではボードを水平に保った状態でX軸の加速度だけを測ることにします。そうすることで、前のページで確認した架空の 1gを引く必要がなくなります。架空の1gはボードの向きによってX Y Zのどれにでも現れるので、補正するのはむずかしいです。
パンチングマシンがやるべきことは、次の通りです。
- デフォルトでは、アプリケーションはボードの加速度を「観測」していません。
- X軸に大きな(しきい値を超える)加速度が感知されたとき、アプリケーションは計測をはじめます。
- 計測中、アプリケーションは最大加速度を記録、更新し続けます。
- 計測期間が終わると、アプリケーションは最大加速度を報告します。報告は
rprintln!マクロを使って行います。
では実装して、あなたのパンチがどのくらい強いか教えてください。;-)
注 まだ紹介していないAPIに、便利なものがふたつあります。 ひとつ目は
set_accel_scale。大きなgを測定するときに必要になります。 ふたつ目はembedded_halのCountdownトレイトです。これを計測時間のカウントダウンに使用する場合は、これまでの章でしたようにblock!マクロを使うのではなく、nb::Result型をパターンマッチで処理する必要があります。