HaloCode, mBlock, Python

HaloCode電子輪盤程式設計

因為光環板本身有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():這樣的副程式定義。

發表迴響

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

WordPress.com 標誌

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

Google photo

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

Twitter picture

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

Facebook照片

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

連結到 %s