因為光環板本身有12顆LED可以使用,而且是以環狀的方式來排列,讓它變成一個電子輪盤是再直覺不過的設計了。它的LED編號是從1開始,最後一個則是12,我們只要利用一個變數,再加上halo.led.show_single(id, r, g, b)這個函數,就可以輕易地完成電子輪盤的設計。程式如下:
import halo, time
while True:
for id in range(1, 13):
halo.led.off_all()
halo.led.show_single(id, 25, 25, 25)
time.sleep(0.1)
這個程式利用一個for迴圈以及與range()函數的配合,range(1, 13)產生了1到12之間的數列,逐一放到halo.led.show_single()函數中,而為了避免LED太亮,這次我們把顏色值都只設定25,讓它們亮度低一些。
在顯示指定的LED之間需要先利用halo.led.off_all()函數把所有的燈光都關閉,之後再點亮指定id的LED,如此就可以營造出一個LED在進行圓形環繞的效果。
上述的程式在光環板一啟動的時候就會開始不斷地讓LED進行環繞的效果,如果我們打算讓這個效果只有在按下按鈕才會開始的話,那麼就要使用另外一種方式,也就是以事件驅動式的方式來設計程式。它的寫法和上述的方式不太一樣,請同學們可以比較一下:
import halo, time, event
@event.button_pressed
def on_button_pressed():
while True:
for id in range(1, 13):
halo.led.off_all()
halo.led.show_single(id, 25, 25, 25)
time.sleep(0.1)
使用事件驅動程式的設計方式是要先匯入event模組,之後每一個事件都是以@event.作為開頭,在句點之後再加上事件的名稱。按鈕按下的事件名稱為button_pressed,所以事件設定的一開頭就是@event.button_pressed,接著,在下一列的地方再加上一個用來處理這個事件的副程式,通常都會以on_ 開頭,後面再加上事件的名稱,所以後面才是def on_button_pressed():這樣的副程式定義。