Skip to content

活動

掌聲測量儀

中等級數 | MakeCode, Python | LED 螢幕, 麥克風 | 感應器, 測量, 算術運算符, 變數, 選擇

步驟1:製作

它是什麼?

藉由這個新的 micro:bit 上的麥克風計時器來測量掌聲 - 或任何響亮的聲音 - 持續了多久。

介紹

編程指引

您將學到什麼

  • 如何藉由麥克風來測量響亮或者輕微的聲響以觸發事件
  • 如何使用 micro:bit 內建的計時器
  • 如何設定響亮和輕微聲音的門檻值

運作方式

  • 在程式開始時,設定觸發響亮聲音事件的門檻值。 使用較大的數字就會需要較大的聲響來觸發事件,數字越小,則較小的聲音便可。 你可以使用 0 到 255 之間的任何數字。
  • 將一個名為 start 的變數設定為 0。 這是用來記錄大的聲響開始的時間。
  • 當麥克風偵測到大的聲響時,將 start 變數設定成 micro:bit 目前的運行時間,同時在 LED 螢幕上顯示一個圖標,這樣就可以知道計時已經開始了。
  • 運行時間是測量 micro:bit 開始運行程式的時間,以毫秒為單位(千分之一秒)。
  • 當響亮聲響停止時,會觸發靜音事件。
  • 如果已經有了一個大的響聲事件,而且計時器已開始,那麼 start 變數的值會大於 0。 此時,另一個變數 time 的值會被設定為新的目前運行時間減去開始時間。 這告知我們大的響聲持續了多長時間。
  • 由於時間以毫秒為單位測量,因此程式將它除以 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:進階

  • 對大的聲聲和小的聲音事件進行不同門檻值實驗,以找到最適合您的值。
  • 添加聲音記錄器項目的程式碼,這樣您也可以測量出掌聲有多大聲