2017年4月16日 星期日

Motoblockly Sensor board學Blockly (閃耀的彩色LED燈 (Loop & For... 迴圈))

在 S4A Sensor Board 上有三顆,分別是D10(綠色)、D11(紅色)、D12(黃色);在這個Section開始,我們將學習如何一次控制三顆LED,進而學習迴圈的進階應用。

Step 01. 一閃一閃彩色 LED 燈

說明:
  1. 這個 Step 將利用程式的時間差,同時控制D10、D11、D12三顆LED燈。
  2. 練習過程,請學習者自行調整不同腳位LED的順序與時間量,並觀察調整後的變化。
範例:
  1. 如圖一,依序啟動 (數位腳位為 ) 和關閉(數位腳位為 ) LED 數位腳位 D10、D11、D12,將積木方塊堆疊在程式開始棕色積木的【迴圈】中,觀察執行程式的變化。
  2. 範例檔:請選擇匯入 XML_ColorLED_01.xml ,可開啟本Step的範例,或利用 Arduino IDE 開啟 IDE_ColorLED_01.ino 執行程式的結果。

Step 02. 模擬紅綠燈

說明:
  1. 這個 Step 將利用程式迴圈與時間差,同時控制D10、D11、D12三顆LED燈。
  2. 模擬紅綠燈號時,須注意紅綠燈的變化順序,燈號長亮時間與閃爍時間,可以透過不同的時間輛進行控制。
  3. 練習過程,請學習者自行調整不同腳位LED的順序與時間量,並觀察調整後的變化。
範例:
  1. 如圖二,依序啟動 (數位腳位為 ) 和關閉(數位腳位為 低) LED 數位腳位 D10、D11、D12,將積木方塊堆疊在程式開始棕色積木的【迴圈】中,觀察執行程式的變化。
  2. 在這個Step有 XML_ColorLED_02.xml、XML_ColorLED_03.xml 兩個範例,XML_ColorLED_02.xml 這個範例是利用時間差依序執行所有的程式,XML_ColorLED_03.xml 則是利用了迴圈(for...)的概念,在程式迴圈中,將部分重複的程式,利用迴圈(for...),判斷執行次數,執行需要程式重複執行的部分,比較兩個範例可以發現,透過迴圈(for...)的應用,可以有效縮短程式的行列數與檔案大小。
  3. 範例檔:請選擇匯入 XML_ColorLED_02.xml、XML_ColorLED_03.xml 兩個範例,可開啟本Step的範例,或利用 Arduino IDE 開啟 IDE_ColorLED_02.ino、IDE_ColorLED_03.ino 執行程式的結果。從執行結果可以發現這兩個程式的執行結果是一樣,唯一的差別在程式的編輯差異,這也是程式因人而異與有趣的地方。
備註
在執行上列 Step 練習時,有一個小問題必須注意,S4A Sensor Board V2 擴充板因為批號的不同,D10、D11、D12腳位的 LED 燈號顏色不見得與本課程的範例一致。例如,以筆者的擴充板來說,分別有D10(綠色)、D11(紅色)、D12(黃色)和D10(紅色)、D11(黃色)、D12(綠色)兩種。為了解決類似問題或時間量變更的問題,方便程式的變更與程式版本的控制,我們在後續的課程 Session,將提到利用「變數」或副程式的概念來解決這類問題。

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...