ステップ1: 作る
説明
拍手などの大きな音が続いた時間を、新型micro:bit に内蔵のマイクで測ってみましょう。
はじめに
プログラミングガイド
学ぶこと
- マイクでとらえた音の大小でイベントを発生させる方法
- micro:bit に内蔵されているタイマーの使い方
- 音の大小を区別する「しきい値」を設定する方法
動作の仕組み
- プログラムのはじめに、大きな音(うるさくなった)と小さな音(静かになった)を分ける「しきい値」(境目になる値)になる数を設定します。 分ける境目を大きな音にしたければ、しきい値を大きくし、小さな音にしたければ、しきい値を小さくします。 しきい値は 0 から 255 までの任意の数にできます。
- 変数 start を 0 に設定します。 この変数は、大きな音がいつ始まったか記録するために使います。
- マイクが大きな音を捉えたら、micro:bit の現在の稼働時間を変数 start に設定します。そしてLED ディスプレイにアイコンを表示して、タイマーがスタートしたと分かるようにします。
- 稼働時間とは、micro:bit がプログラムを実行している時間をミリ秒(千分の1秒)単位で測っているものです。
- 大きな音が止むと、「静かになった」のイベントが発生します。
- 大きな音(うるさくなった)のイベントでタイマーがスタートしていれば、変数 start が 0 より大きく(>)なっているはずです。 そうであれば、変数 time に、現在の稼働時間から start の時間を引いたものを設定します。 これで大きな音がどれぐらいの時間続いたのかが分かります。
- 時間はミリ秒単位で測っているので、プログラムではそれを 1000 で割って秒単位に変換してから LED ディスプレィに表示します。
必要なもの
- micro:bit
- MakeCodeまたはPythonエディター
- バッテリーパック(オプション)
ステップ2: プログラムする
1from microbit import *
2microphone.set_threshold(SoundEvent.LOUD, 150)
3start = 0
4
5while True:
6 if microphone.was_event(SoundEvent.LOUD):
7 start = running_time()
8 display.show(Image.TARGET)
9
10 if microphone.was_event(SoundEvent.QUIET):
11 if start > 0:
12 time = running_time() - start
13 start = 0
14 display.clear()
15 sleep(100)
16 display.scroll(time / 1000)
ステップ3: 改善する
- 大きな音と小さな音を分けるしきい値を変更して試してみて、最適な値を見つけましょう。
- 拍手の大きさ測れるように、サウンドロガーのプロジェクト にあるコードを追加してみましょう。
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.