Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all articles
Browse latest Browse all 673

[Micro:bit]小彼特魔幻秀──光影魔術手

$
0
0
作者/攝影

原作、設計者:劉正吉老師(感謝作者的授權)

文字整理:CAVEDU宗諭

文章分類 教學文
時間

1小時內

成本
難度 * * *(1~10)
材料表

挑戰

  Micro:bit可有多方面的創意應用,魔術也是其中之一!就讓我們一起來看看,劉正吉老師如何運用Micro:bit主板上的光線感測器,設計出「光影魔術手」這個有趣的魔術專案。

 

  先來看看「光影魔術手」的影片:

 

程式設計

  看完影片後,有觸發您的程式思維嗎?接下來,就讓我們一步步建構「光影魔術手」幕後的程式。

 

Step1:為了之後主程式的需要,我們先宣告兩個變數「light」和「magic」。先從基本積木櫃中,拉出「當啟動時」積木,然後從變數積木櫃中,拉出兩個「變數⋯⋯設為」積木,將它們接上「當啟動時」積木。接上後,將第一個變數積木名稱改為「light」,值仍維持0;將第二個變數積木名稱改為「magic」,然後從邏輯積木櫃中拉出「false」積木,將它接上「magic」積木。

圖1

 

  讀者們是否有注意到在前面影片中,劉正吉老師的手第一次在Micro:bit主板前揮動時,小彼特並沒有任何反應,是在他按了Micro:bit主板上的按鈕A(左邊那一顆)後,主板上的LED燈才開始出現圖樣。為達成這樣的效果,我們必須在程式中設定一些條件。

 

Step2:讓我們從輸入積木櫃中拉出「當按鈕A被按下」積木,然後複製「變數magic設為false」積木,把它接上「當按鈕A被按下」積木,並把「false」改為「true」。

圖2

 

Step3:複製Step2的建構的積木,並把按鈕A改成按鈕B,以及true改成false。

圖3

 

Step4:複製Step3建構的積木,並把按鈕B改成按鈕A+B。刪除「變數magic設為false」積木,並從基本積木櫃中點選「更多」,拉出其中的「清空 畫面」積木,接上「當按鈕A+B被按下」。

圖4

 

這樣,變數和條件就設定好了,接下來我們就要進入到主程式了。

 

Step5:我們先從基本積木櫃中拉出「重複無限次」積木,接著從邏輯積木櫃中,拉出「如果true⋯⋯那麼」積木,並接上「重複無限次」積木。然後我們從變數積木櫃中,拉出變數「magic」積木,接上「如果true」那邊。這代表,如果變數magic的值為true的話,就可以觸發一些程式。於是,我們便可從此了解,為什麼前面的步驟要設定「當按鈕A被按下」的條件,是為要讓主程式運作。

圖5

 

Step6:繼續建構主程式。複製「變數light設為0」積木,把它接上「如果magic⋯⋯那麼」積木的「那麼」部分。從輸入積木櫃中拉出「光線感測值」積木,並接在「變數light設為0」積木的0那邊。這樣的意思是,當變數magic的值為true,變數light的值就會從0,變成接收光線感測值。

圖6

 

Step7:為要做進一步的條件設定,我們再從邏輯積木櫃中,拉出「如果true⋯⋯那麼」積木,並接在「變數light設為光線感測值」下方。接著,我們從邏輯積木櫃中,拉出一個「小於」積木,接在true那邊。再從變數積木櫃中,拉出變數「light」積木,把它放入「小於」積木前面那一個0那邊,然後把後面那一個0改成70。

 

補充說明

  在此需注意的是,70這個值是劉正吉老師當時所處環境的光線臨界值。我們以根據所處環境正常時的光線值,以及用手遮住光感測器時的光線值,將此兩個數值平均,作為臨界值。

圖7

 

Step8:接下來,我們要在「那麼」的地方加入一個「方法」。讓我們先把積木介面切換成JavaScript程式碼。

圖8

 

圖9 在if (light<70){的下方加入紅框框內的程式碼

 

Step9:切換回程式積木畫面,可看見如下圖。「光影魔術手」程式至此大功告成!

圖10

 

補充說明

  在此要說明的是,為何我們不直接用基本積木櫃中的showIcon積木就好了?因為如果我們用showIcon積木,就無法使用Math.random()方法。Math.random()方法會根據括號內所寫入的數字,隨機出現等於或小於該數字的正整數(包括0)。例如,這裡我們寫入的數字為39,Math.random()方法便會隨機出現0~39的數字。

 

  至於為什麼數字是39呢?因為showIcon積木內建了40個圖案,編號是從0至39,透過Math.random()方法,以及最外面的「重複無限次」積木,當我們的手揮過小彼特主板時,程式會隨機自這40個圖案中出現一個。若您對於寫程式碼不熟悉,您也可直接使用基本積木櫃中的showIcon積木,然後指定一種圖案即可。

 

按鈕B的用處是什麼?

  原來,魔術師有時總是要找觀眾上來體驗一下,若要讓觀眾上來嘗試,魔術師必須先偷偷按下按鈕B,這樣,觀眾再怎麼試圖案都不會改變;當魔術師要施展魔術時,則要偷偷按下按鈕A, 就可以開始施展光影魔術了。

  趕快來玩玩看「光影魔術手」吧!

 

相關文章


Viewing all articles
Browse latest Browse all 673

Trending Articles