課題

話を簡単にするために、ここではボードを水平に保った状態でX軸の加速度だけを測ることにします。そうすることで、前のページで確認した架空の 1gを引く必要がなくなります。架空の1gはボードの向きによってX Y Zのどれにでも現れるので、補正するのはむずかしいです。

パンチングマシンがやるべきことは、次の通りです。

  • デフォルトでは、アプリケーションはボードの加速度を「観測」していません。
  • X軸に大きな(しきい値を超える)加速度が感知されたとき、アプリケーションは計測をはじめます。
  • 計測中、アプリケーションは最大加速度を記録、更新し続けます。
  • 計測期間が終わると、アプリケーションは最大加速度を報告します。報告はrprintln!マクロを使って行います。

では実装して、あなたのパンチがどのくらい強いか教えてください。;-)

まだ紹介していないAPIに、便利なものがふたつあります。 ひとつ目はset_accel_scale。大きなgを測定するときに必要になります。 ふたつ目はembedded_halCountdownトレイトです。これを計測時間のカウントダウンに使用する場合は、これまでの章でしたようにblock!マクロを使うのではなく、nb::Result型をパターンマッチで処理する必要があります。