HaloCode, mBlock, Python

HaloCode麥克風應用

HaloCode內建的麥克風除了可以具備語音辨識的功能之外,在還沒有連上WiFi時也可以有一些簡單的聲音控制功能,這些功能在程式的設計上非常地簡單。

要取得麥克風的聲音大小,可以利用halo.microphone.get_loudness(“maximum")這個函數,它接受2個不同的參數,分別是"maximum"以及"average",前者是取出偵測期間出現過的最大值,而後者則是偵測期間的平均值,以下程式是最簡單的應用:

import halo, event
import time

while True:
    halo.led.ring_graph(halo.microphone.get_loudness("maximum"))
    time.sleep(0.1)

此段程式利用led_ring_graph()依據取得的聲音大小設定LED光環燈光的顯示比例,執行之後它就會不停地偵測週遭環境的聲音,並以燈光來顯示它的聲音強度,如果你對於實際上取得的音量值有興趣的話,也可以加上print()函數進行觀察,程式如下:

import halo, event
import time

while True:
    value = halo.microphone.get_loudness("maximum")
    print(value)
    halo.led.ring_graph(value)
    time.sleep(0.1)

除了光環的控制之外,也可以用聲音來控制LED燈光的強度,以下是一個還滿有趣的程式應用:

import halo, event
import time

while True:
    value = halo.microphone.get_loudness("maximum")
    val = int((value/100)*255)
    halo.led.show_all(val, val, val)
    time.sleep(0.01)

在上述的程式中,我們把收到的音量大小轉換成0-255的數值範圍,再讓它去控制燈光顯示的強度,這樣光環板就可以根據外界環境的聲音大小來變換燈光的強弱。

另外,同學們是否想要利用聲音來控制燈光的開或關呢?結合前一篇製作按鈕開關燈的程式技巧,我們可以在聲音大到一定程度的時候開燈或是關燈,把每一次狀態記下來,當目前是關燈的狀態的時候就開燈,反之亦然,就可以完成聲控夜燈的功能了,程式碼如下:

import halo, time

light_on = False
halo.led.off_all()

while True:
    value = halo.microphone.get_loudness("maximum")
    print(value)
    if value > 90:
        if light_on:
            light_on = False
            halo.led.off_all()
        else:
            light_on = True
            halo.led.show_all(25, 25, 25)
        time.sleep(2)
    time.sleep(0.1)

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s