目錄 購物車 {{currentCart.getItemCount()}}

oplate App 分享區

 

銀髮樂活  /  職能治療  /  運動健身  /  程式教育  /  app客製化

 

程式教育 > 基礎課程 > Lesson08 / 回家功課02

功課大綱

1.  LED燈光控制練習

 

功課內容

1.  顏色數值會不會有點搞不太清楚呢?我們實際練習一次吧。

     我們來作個閃燈的APP,想要呈現的效果是:
     連線完,按了「開始」按鈕後,小黑盤以每0.5秒為間隔開始一號燈亮紅燈 → 二號燈亮綠燈 → 三號燈亮黃燈 → 四號燈亮藍燈 → 五號燈亮紫燈 → 六號燈亮青燈 → 燈全關 → 重新從一號燈開始...不斷循環直到按「停止」按鈕為止。

     試著自己做做看,然後匯出用手機測試成果,是不是和影片中一樣。

參考解答說明

1.  參考解答Lesson08(.aia檔)

     我們一樣從Lesson06開始,另存專案新名稱為「Lesson08」,App名稱為「LED控制」。

     「畫面編排」中加進了「開始」、「停止」按紐和「計時器」元件。
     因為我們想要每0.5秒變換一次LED燈光,所以「計時間隔」設定為500。
     另外記得「啟用計時」要關掉。

2.  首先我們要知道題目中各個燈號的數值是多少。
     以下表格內容會在L08_顏色數值表格中。

3.  第一種燈號是一號燈亮紅光。
     所以是LED1的R是1,其他都是0,二進位表示 ”000000000000000001” ,十進位表示 ”1” 。

     第二種燈號是一號燈亮紅光 + 二號燈亮綠光。
     所以是LED1的R是1、LED2的G是1,其他都是0,二進位表示 ”000000010000000001” ,十進位表示 ”1025” 。

     以此類推找到其他燈號的十進位數值。

4.  如果我們把數值都先換成十進位,這樣會更清楚一點。
     圖中內容在「L08_顏色數值」另一個表格。

     這個表格把每個燈各個顏色的數值都列好了。
     我們再試一次第二種燈號,是一號燈亮紅光 + 二號燈亮綠光。
     表中一號燈亮紅光是1、二號燈亮綠光是1024,兩個相加是1025,和二進位表格中一樣。

     試試看  "一號燈亮紅光 + 二號燈亮綠光 + 三號燈亮黃燈 + 四號燈亮藍燈 + 五號燈亮紫燈 + 六號燈亮青燈"  的數值會多少?
     答案是1+1024+24+16384+320+196608=214361。

5.  每個燈光顏色的數值都準備好了,接下來就來看「程式設計」的部分吧。
     圖中為LED燈光控制的程式方塊。

6.  按「開始」按鈕後讓「計時器1」啟用。
     還記得「計時器」的用法嗎?忘記了可以再複習一下Lesson04喔。

7.  設定一個「變數」,初始值是一個清單。
     清單的順序就是亮燈顏色的順序,從一號燈亮紅光開始到所有燈關掉,總共有7個變換,所以清單就有7個數值。

8.  圖中標示的是說我們會從「顏色清單」項目中去選擇一個亮燈燈號的數值。
     要選擇清單中哪一個項目是用「顏色項目」變數來代表。
     如果「顏色項目」是2,就是選擇「顏色清單」中第2項,數值就是1025。

9.  接下來就要讓「顏色項目」能依照1 → 2 → 3 → 4 → 5 → 6 → 7 → 1 → 2...的順序循環下去。

     複習一下「計時器」的基本用法是,開始「啟用計時」,經過「計時間隔」的時間後執行某些動作。
     這裡要執行的動作包括了圖中標示的「顏色項目」每經過「計時間隔」0.5秒會加1,還有底下的發出亮燈「命令」。

     中間插進了一個程式方塊,並不會每次都執行,只有當條件滿足當「顏色項目」加1後大於7時才會執行。
     「顏色項目」加1後大於7時要把「顏色項目」重新設定為1,讓整個循環再次從1開始。

10.  按「停止」按鈕後要做三件事如圖所示。
       讓「計時器」停止計時、發出「命令」關掉所有的燈還有就是讓「顏色項目」回到初始值(這樣下次才能從1開始)。

11.  以上就是這次回家功課的說明。

       我另外加了一段程式方塊,在*藍芽斷線時讓「連線清單」的背景顏色變成灰色。

       * 有些情況(譬如命令寫錯了)會和藍芽斷線產生一樣的反應,就是沒有反應。
          這時加入這段程式能讓我們知道沒有反應是不是藍芽斷線的關係。