Skip to content

アクティビティ

拍手計

中級 | MakeCode, Python | LED表示, マイク | センサー, 変数, 抽出, 算術演算子, 計測

ステップ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: 改善する

  • 大きな音と小さな音を分けるしきい値を変更して試してみて、最適な値を見つけましょう。
  • 拍手の大きさ測れるように、サウンドロガーのプロジェクト にあるコードを追加してみましょう。