HaloCode, mBlock, Python

HaloCode按鈕切換燈程式設計

學會了前一篇的事件驅動程式設計方法之後,接下來可以製作一個簡單的切換燈光的應用,也就是一開始啟動的時候燈光是全熄滅的,而當按下按鈕時,燈光會開啟,但是再按一下的時候,燈光則又熄滅。

為了完成這樣的動作,首先要有一個變數用來記錄目前燈光的狀態,我們利用light_on這個變數來記錄,一開始的時候light_on要設為False,同時把燈也熄滅,當按下按鈕的時候,要先檢查此變數的狀態,再決定是要開燈還是關燈,程式設計如下:

import halo, event

light_on = False

@event.start
def on_start():
    global light_on
    light_on = False
    halo.led.off_all()

@event.button_pressed
def on_button_pressed():
    global light_on
    if light_on:
        light_on = False
        halo.led.off_all()
    else:
        light_on = True
        halo.led.show_all(25, 25, 25)

在這裡我們使用了2個事件,分別是光環板啟動的事件以及按鈕按下去的事件。光環板啟動之後,會執行on_start()函數,它負責把light_on這個變數設為False,並把所有的燈光都關閉。有一點要特別留意的是,因為light_on這個變數是放在函數的外面,它是屬於全域變數,因此在函數中使用之前,一定要先以global light_on這條敘述,明確地指出要存取的是外面的那個全域變數,如此在兩個不同的函數才會操作到同一個變數。

在按鈕事件中,我們先檢查light_on的狀態,才能夠決定要把燈打開或是關閉,所以這個變數是整個程式中最關鍵的部份。

發表迴響

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

WordPress.com 標誌

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

Google photo

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

Twitter picture

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

Facebook照片

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

連結到 %s