{{ 'fb_in_app_browser_popup.desc' | translate }} {{ 'fb_in_app_browser_popup.copy_link' | translate }}
{{ 'in_app_browser_popup.desc' | translate }}
{{word('consent_desc')}} {{word('read_more')}}
{{setting.description}}
{{ childProduct.title_translations | translateModel }}
{{ getChildVariationShorthand(childProduct.child_variation) }}
{{ getSelectedItemDetail(selectedChildProduct, item).childProductName }} x {{ selectedChildProduct.quantity || 1 }}
{{ getSelectedItemDetail(selectedChildProduct, item).childVariationName }}
功課大綱
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. 以上就是這次回家功課的說明。
我另外加了一段程式方塊,在*藍芽斷線時讓「連線清單」的背景顏色變成灰色。
* 有些情況(譬如命令寫錯了)會和藍芽斷線產生一樣的反應,就是沒有反應。
這時加入這段程式能讓我們知道沒有反應是不是藍芽斷線的關係。