課題
話を簡単にするため、ボードを水平に保ったまま、加速度は X 軸方向だけを測定します。そうすれば、先ほど観測した 見かけの 1g を差し引く必要がありません。ボードの向きによって、その 1g は X、Y、Z の成分を持ちうるため、差し引くのは難しいからです。
punch-o-meter が満たすべき要件は次のとおりです。
- デフォルトでは、アプリはボードの加速度を「観測」していません。
- 大きな X 軸加速度が検出されたとき(つまり、加速度があるしきい値を超えたとき)、アプリは新しい測定を開始する必要があります。
- その測定区間のあいだ、アプリは観測された最大加速度を追跡し続ける必要があります
- 測定区間が終了したら、アプリは観測された最大加速度を報告しなければなりません。この値は
rprintln!マクロを使って報告できます。
試してみて、どれくらい強くパンチできるか教えてください ;-)。
注 この課題で役立つ、まだ説明していない API が 2 つあります。 1 つ目は、高い g 値を測定するのに必要な
set_accel_scaleです。 2 つ目は、embedded_halのCountdownトレイトです。これを使って測定区間を管理する場合は、 これまでの章で見てきたblock!マクロを使う代わりに、nb::Result型に対してパターンマッチを行う必要があります。