可以連上網路,就可以做很多的事,但是要連上網路,對於有WiFi功能的光環板來說,當然是先連上基地台囉。
以下是連上基地台的基本程式碼:
import halo, event
@event.start
def on_start():
halo.led.show_all(25, 0, 0)
halo.wifi.start(ssid = 'ssid', password = 'password', mode = halo.wifi.WLAN_MODE_STA)
while not halo.wifi.is_connected():
pass
halo.led.show_all(0, 25, 0)
這是一段標準的連上基地台的程式碼,只要提供基地台的SSID以及連線密碼,它會在光環板啟動的時候先點亮紅燈,之後就開始進行連線的作業,一旦連線成功之後,就會把LED的燈光改為綠燈,意思是說,如果你發現燈光已經是綠色的了,那就表示此時的光環板已經連上WiFi基地台了,如果你的基地台是有上網功能的,那麼接下來的程式就可以連接上網路,執行網路的相關應用了!
HaloCode最有趣的功能之一就是內建語音辨識的功能,但由於語音辨識實際上是由光環板進行收音,之後再把錄音的檔案傳送到後端的微軟伺服器執行語音辨識,之後再把辨識的結果傳回來給光環板,因此,連上WiFi才會是執行語音辨識的第一個步驟。
在連上網際網路之後,進行語音辨識程式設計首先要設定的是要執行辨識的伺服器網址以及要連線用的Token,這個是固定的步驟,也就是下列程式的第3行和第3行,只要照著抄就可以了。
import halo, event
import time
halo.speech_recognition.set_recognition_url(halo.speech_recognition.SERVER_MICROSOFT, "{NAVIGATEURL}")
halo.speech_recognition.set_token(halo.speech_recognition.SERVER_MICROSOFT, "{ACCESSTOKEN}")
@event.start
def on_start():
halo.led.show_all(25, 0, 0)
halo.wifi.start(ssid = 'ssid', password = 'password', mode = halo.wifi.WLAN_MODE_STA)
while not halo.wifi.is_connected():
pass
halo.led.show_all(0, 25, 0)
@event.button_pressed
def on_button_pressed():
time.sleep(0.5)
halo.led.show_all(25, 25, 25)
halo.speech_recognition.start(halo.speech_recognition.SERVER_MICROSOFT, halo.speech_recognition.LAN_ENGLISH, 3)
cmd = str(halo.speech_recognition.get_result_code())
print(cmd)
if 'on' in cmd:
halo.led.show_all(255, 255, 255)
elif 'off' in cmd:
halo.led.off_all()
elif 'blue' in cmd:
halo.led.show_all(0, 0, 255)
elif 'red' in cmd:
halo.led.show_all(255, 0, 0)
else:
halo.led.show_all(0, 25, 0)
上述的程式中,光環板start事件用來執行連上基地台的作業,當順利連接上時,會以淡綠色的燈號來表示。
在按鈕的事件中,我們先點亮微亮的白光讓使用者知道開始進行錄音的功能,之後利用speech_recognition.start()函數開始3秒的收音以及辨識的工作,這個函數會自動執行所有的功能。之後,辨識的結果可以透過speech_recognition.get_result_code()函數來取得,在這個程式中,我們把取得的結果轉換成字串放在變數cmd中,然後再檢查cmd字串中的內容來決定接下來光環板的燈光操作。
本程式在上傳到光環板之後,即可利用語音控制燈光,但是僅限於使用英文,同學們可以試試看。而且有一個小技巧,就是如果你講的是一個英文句子,它的辨識率會比較高喔,因為我們在程式中使用in來檢查是否存在你所想要的單字,講句子在識別上並不會有程式上的問題。