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)