0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

micro:bitAdvent Calendar 2024

Day 16

micro:bitを拍手👏でコントロール

Last updated at Posted at 2024-12-17

micro:bitのV2以降には本体に「マイク」がついています。

micro:bitを音声で操作できたらすごいのですが、それはちょっと難しそうなので、代わりに「拍手の回数」でmicro:bitを操作できるようにしてみました。例えば、拍手1回でメッセージ表示、拍手2回で音を鳴らす、ということができます。

プログラムは以下の通りです。

image.png

ためしに、何度か「拍手」をしてみてください。「拍手したよ」関数が呼び出され、画面に拍手の回数が表示されます。拍手してから2秒間に拍手した回数がカウントされます。もしあなたがこのプログラムを使用したい場合は、「拍手したよ」関数内で、回数に応じて、処理を実行すればOKです。

プログラムの説明

プログラムが行っている事は難しくありません。
変数「拍手回数」と「拍手中?」を作成してください。

  • まわりの音がうるさくなったとき
    • 拍手されたよイベントを発生させる
  • 拍手されたよイベントを受け取ったとき
    • 拍手回数をインクリメント
    • (初回拍手時のみ) 拍手監視イベントを発生させる
  • 拍手監視イベントを受け取ったとき
    • 2000ミリ秒待って、拍手おわったよイベントを発生させる
  • 拍手おわったよイベントを受け取ったとき
    • 「拍手したよ」関数を呼び出す
    • 拍手回数をゼロに戻す

イベント

今回、イベントを初めて利用してみました。イベントとは、micro:bitのボタンが押された、本体を揺さぶられた、などを伝える仕組みです。例えば、micro:bitのAボタンが押された時には、以下のイベントが発生します。
発生源:MICROBIT_ID_BUTTON_A
値:MICROBIT_BUTTON_EVT_CLICK

発生したイベントは「イベントが届いたとき」ブロックで受け取ります。例えば以下のようにすると、「ボタンAが押された時」ブロックと同じことが実行できます。

image.png

このようにイベントはmicro:bitのシステム内でも多様されていますが、プログラムでも自由に使用することができます。

イベントについての詳細はこちら

※ただし、このページによると、発生源(event source)は、「ランタイムで既に使用されているソースIDは使用しないように」と記載されています。

※また、「予約済みのソースIDの完全な表については、messageBusページを参照してください。」とありますが、そんな表はどこにもありません。検索しましたが、完全な表はこちらにあり、ページ内「ID」で検索すればよいそうです。

今回、発生源として「MICROBIT_ID_IO_P0」を使用しました。これは、上記注意事項に反しています。しかし以下のように考え、今回は使用しました。

  • micro:bitのP0端子には何も接続していないため
  • プログラムのサンプルを見やすくするため(IDを独自に定義すると、変数を増やす必要がある)

おわりに

作ってみましたが、意外と認識精度が良いので驚きました。必要に応じて「うるさいかどうかのしきい値」を変更して、お使いください。
これで、作ったラジコンの操作できないか、挑戦してみようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?