2020年3月31日 星期二

[micro:bit] 蒸汽彼特(STEAM on Micro:bit)II──主題9:小彼特心臟病

蒸汽彼特(STEAM on micro:bit)II

主題9:小彼特心臟病


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/

Mar. 31, 2020
88x31.png[1]




難易度

★★☆☆☆

主題

根據撲克牌遊戲來設計類似的小彼特玩法。

任務

小阿聰總是神經大條,對事情的反應老是慢半拍。請設計一個特訓機來協助他反應up up!
利用導電原理,使用鋁箔(aluminum foil)作為接觸端點,並以鱷魚夾(crocodile clip)搭建出電路迴路來偵測瞬間觸碰的反應識別

材料

編號 品名 單位 數量
1 小彼特主板 1
2 傳輸線 1
3 鱷魚夾 4
4 鋁箔紙 1
5 瓦楞紙板/PP板/木板… 1

造形設計

設計我們想們想要的外觀(例如這款由世界最偉大的林先生親手繪製的大象圖案,留出要黏貼發牌、奇數牌玩家、偶數牌玩家及GND四個鋁箔觸碰點的位置,再根據我們事先畫好的設計稿剪裁之

功能設計=硬(電路設計)+軟(程式設計)

參考撲克牌心臟病的實際玩法https://reurl.cc/z8MaW7)來制定我們的遊戲規則。例如:兩位玩家(以奇數或偶數數字搶答區別,文後以奇數玩家及偶數玩家簡稱之)都先將一手放在GND觸碰(touch)的共地鋁箔上。然後,選由其中的一位玩家按小彼特的A按鈕發牌。當牌數為偶數時,先前被指定為偶數需作答的玩家有按下觸碰則得一分。反之,若先前被指定為奇數需作答的玩家因誤判而按下觸碰時就扣一分。最後,在比賽時間結束後,按下A按鈕會自動顯示贏家代碼,奇數玩家為A,偶數玩家為B。平手則以=表示。


導電原理:從電源正極出發,經開關到LED後回到電源負極的電路迴路(circuit loop),開關就是擔任迴路導通的切換關口。像本單元中的鋁箔正是做為迴路的導通開關之用。


電路設計如圖所示
另一方面,程式邏輯(program logic)参考樣版(template)步驟為:(變數played表示發牌的狀態,0:未發,1已發;card:記錄發牌的點數;scored_A/scored_B:奇數/偶數玩家的得分記錄)。

  1. 發牌(觸碰P0):程式流程為,轉換成對應的程式碼為
  2. 作答(觸碰P1/P2:程式流程為,轉換成對應的程式碼為
  3. 判斷輸贏(小彼特主板的按鈕A):程式流程為,轉換成對應的程式碼為。
參考程式碼可按https://reurl.cc/qdOR70下載。教學投影片可由https://reurl.cc/9EOkja下載

教學活動設計

  1. 敏捷王 採三戰兩勝分組進行競賽。選出最終的年度最佳「敏捷王」。
  2. 搶答機 請將上述的範例程式做適度的修改,並設計十道題目,由紅白兩隊各派十人參賽。主持人念完題目後開始按機搶答。
  3. 心臟病 用四塊小彼特WXYZ模擬四家對戰,並再放置一塊小彼特D來顯示各家翻出的牌。
    一開始按下小彼特D的A按鈕將52張牌平均發給小彼特WXYZ。
    然後由小彼特WXYZ輪流按按鈕A出牌,並顯示在小彼特D上。
    每家出完牌後即開始等候按下按鈕B搶答。
    搶答的先後次序由小彼特D來仲裁。
    (建議使用WiFi來處理五塊小彼特之間的訊息傳遞。根據筆者實測,多塊小彼特通訊會產生信號干擾而導致封包遺失(packet lose)https://reurl.cc/j7kzEn)的窘境。)

積木指標

Basic、Input、Logic、Math、Variables

編程指

循序結構(sequence structure)判斷結構(decision structure)非同步事件處理(asynchronous event handling)

硬體指

鋁箔紙、鱷魚夾。

参考資料
  1. 六種授權條款