2018年9月28日 星期五

[Micro:bit] 蒸汽彼特(STEAM on Micro:bit)之創意發明王養成班教材──主題18:小彼特搏神杯

蒸汽彼特(STEAM on Micro:bit)

之創意發明王養成班教材[1]

主題18:小彼特搏神杯


FB2http://gg.gg/TedLeeMicrobitFB/
URL2http://gg.gg/TedLeeMicrobit/

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB1http://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/
URL1http://gg.gg/TedLeeURL/

Sep. 28, 2018
88x31.png[2]

難易度

★★☆☆

任務

神啊,請賜給我神秘的力量,來三杯神杯吧!
(做兩個彎彎的半月紅筊杯,允杯時會奏樂歡慶。)

材料

品名 數量 單位
Micro:bit主板 1
USB傳輸線 1
KSB040鋰電也擴充板 1
鱷魚夾(五色,五條) 1
CM-4 4號嬌點整理盒 1
不織布 1
PP 1
廢紙 1
魔鬼氈(子、母) 2

  • 共用工具組:剪刀、美工刀、油性筆、透明膠帶、雙面膠、膠水、白膠、鐵尺、切割墊…若干

源思

我阿母每逢过年过節拜拜要收尾時都會請出來徵詢眾神明是否滿意今日備用的供品。另外,擲筊是中国人淵遠流長的民間習俗。它有三种呈現方式:笑杯、陰杯、神杯/聖杯(啥,沒玩过…Orz~,那趕緊惡補一下)。我們是否能使用小彼特來創作一对中西合璧、古今融合的小玩意兒呢?

外觀設計

首先,我們一起來看一下各种式樣的神杯。心中有個譜後,拿出稿紙畫出半月杯的設計稿。請留意中間要留出适当的空位給小彼特安家喔!

功能設計

我們誏兩神杯上的小彼特共用同一隻程式。操作步驟如下:

  1. 左杯按A鈕展示滿月動畫;右杯按B鈕展示蝕月動畫。
  2. 左右杯一起按A+B鈕(可改為shake)表示開始掷筊
  3. 一共要掷三次。若三次都是神杯則在兩只杯上的出現God,表示是允杯
  4. 否則表示老天另有安排,請另尋他法再來請示神明。

功能解說

參考ElecFreaks的猜拳遊戲程式架構:按A/B鈕表示选拳,按A+B鈕表示选好確認並發送廣播信號。最重要的是所有自動判斷輸贏的逻輯全寫在forever()裡。(註:因為JavaScript採多執行緒(multi-thread)排程(scheduling)執行,造成要有特定的程式寫作方式,否則會出現很詭灵異的現象~。)
以下我們分別針对按鈕A、按鈕B、按鈕A+B、廣播事件處理、forever()五塊程式項目分述之:
  • 按鈕A:,左杯掷筊前設定使用。先設定左杯的廣播群組(group)代碼(若超过兩組以上的掷筊情境,各組請錯開使用不同代碼以免產生訊號混淆。),然後呼叫副程式(subroutine)L_animation()來播放左杯動畫。這裡使用副程式來撰寫是為了誏程式邏輯簡單化考量。
  • 按鈕B:,右杯掷筊前設定使用。先設定右杯的廣播群組(group)代碼,然後呼叫副程式(subroutine)R_animation()來播放右杯動畫。
  • 按鈕A+B:
  • 廣播事件處理:收到廣播後,設定rx_flag並將接收資料變數receivedNumber之值(0:陰爻;1:陽爻)存入變數rx_data,以供隨後判斷掷杯結果(笑杯、哭杯、神杯)。
  • forever():
    「我的擲筊是陽爻」的情況和擲筊是陰爻的情況是对稱的,請自行对照前述之逻輯即可理解。
完整程式碼可由此下載。

教學活動設計

  1. 活動1:神杯大賽 以三分鐘為限,比比看誰先掷到神杯。
  2. 活動2:補完計畫 將範例程式加入笑杯處理。
  3. 活動3:月形動畫 参考這個月形攝影製作一動畫,也許從左杯跑到右杯完整呈現出月亮的陰晴园缺會是一個不錯的想法~。
  4. 活動4:廟宇文化專題 繼本文被某大報報導後,X港YY宮也來訊要訂做小彼特求灵簽、奌光明灯…。身為麥客家族的一員,趕緊來幫忙家代工吧!
  5. 活動5:啥,不能用丟的不过癮。啊不然改做溼八豆好了~。

    延伸學習

    1. 丟神杯 參考花灯骨架做法,把小彼特藏進殼裡就可以直接用丟的來搏的了。或者用木頭塊鑿空藏進去也不錯!
    2. 為什麼神杯要做成半月形的?為什麼它要設計成一面是平的,另一面是凸的呢?
    3. 奌光明灯 使用小彼特來奌亮所有的光明灯吧!

    積木指标

    Basic、Input、Music、Radio、Logic、Variables、Math、Functions


    編程指标

    循序結構(sequence structure)、选擇結構(selection structure)非同步事件處理(asynchronous event handling)、多執行緒程式架構(multi-threading framework)


    硬体指标

    按扭、重力加速度感測器。

    STEAM指標

    TEAM。


    和108課綱的对照

        • 科技領域核心素養:科-J-B2 理解資訊與科技的基本原理,具備科技、資訊、媒體的應用能力,並能分析人與科技、資訊、媒體的互動關係。
          • 科技領域/資訊科技學習重點
            • 學習表現:資a-IV-4 能具備探索資訊科技之興趣。
            • 學習內容:資T-IV-2 資訊科技應用專題(程式設計應用專題)

                参考資料
                1. 本PBL教材皆採:任務解說(含筆者多年教學經驗分享)、教學活動設計三大段的寫作架構撰文。
                2. 六種授權條款

                沒有留言: