HaloCode, mBlock, Python

HaloCode燈光漸變Python程式設計

善加利用Python的變數和迴圈的使用,可以讓HaloCode的燈光變化更加地有趣,其中,讓燈光由最亮到最暗,或是由最暗到最亮的逐次變化,是其中很常使用的小技巧。

halo.show_all(R, G, B)中的RGB三種顏色值之範圍是0-255,因此利用迴圈即可達成最暗到最亮的燈光漸變效果,程式碼如下:

import halo, time

for i in range(256):
    halo.led.show_all(i, i, i)
    time.sleep(0.01)

但是以上的程式只會被執行一次,一般來說,我們會讓光環板中的程式碼無限次執行,因此會為上述的程式加上一個while True:的迴圈,如下所示:

import halo

while True:
    for i in range(256):
        halo.led.show_all(i, i, i)

由於可以重複不斷地執行,即可看出燈光漸變的效果,所以在上面的程式就把time.sleep()函數移除,讓執行的速度快一些。

上述的程式會讓燈光從最暗漸變到最亮不斷地重複,但是在for迴圈執行完畢之後的最亮的狀態之下瞬間又會最暗,看起來有些突兀,為了讓效果更加平順一些,通常我們還會加上另外一個迴圈,讓燈光從最亮漸變到最暗,程式如下:

import halo

while True:
    for i in range(256):
        halo.led.show_all(i, i, i)
    for i in reversed(range(256)):
        halo.led.show_all(i, i, i)

第2個迴圈利用reserved()函數把range(256)的數列進行反序放置即可執到數值由大到小的目標,另外一種方式是利用range(255, -1, -1),這樣也是可以的。

因為Python在操作數學函數也相當地方便,所以,如果直接利用三角函數中的SIN函數來計算亮度,效果也不錯喔,程式碼如下:

import halo, math

while True:
    for d in range(360):
        value = int(256 * math.sin(d/180*math.pi))
        halo.led.show_all(value, value, value)

發表迴響

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

WordPress.com 標誌

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

Google photo

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

Twitter picture

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

Facebook照片

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

連結到 %s