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