2017年10月22日 星期日

[Micro:bit] Micro:bit Blockly PBL教材──主題2-6:健康計步器(增強版)@Ted Lee的土饅頭

Micro:bit Blockly PBL教材[1]

主題2-6:健康計步器(增強版)


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/

Oct. 22, 2017
88x31.png[2]

任務

上一篇我們已經協助蔣勳先生設計好他專屬的健康計步器了。經蔣先生本人試用後,他開出了增強版的功能需求單:
  1. A鍵:Start,開始計步。
  2. B鍵:Reset,重置,讓計步器歸零。
  3. Shake:計步。

接到任務後,小彼特首席設計師立刻修改了上一版的雛形。經實測,示範影片如下:

什麼,您想試玩先?那有啥問題,首席不是給人叫爽的。來,您來,這兒有座

解方

為了記錄按鍵A是否已按下而啟動計步功能,程式使用了一個程式寫作的小技巧叫哨兵(sentinel),也只有當哨兵舉火為號時才發起進攻。
我們重金禮聘這個盯梢的傭兵名喚flag,他的任務是專門監控玩家是否按下A 鍵---這是個非同步事件(asynchronous event)[3]。
只要A鍵被按了,馬上放煙火警示(flag變為1)
;等到警報處理妥後(按下B鍵歸零),警示才會被關閉(改回0)

完整程式碼如下,.hex档請按我下載。


  1. let flag = 0
  2. let steps = 0
  3. input.onButtonPressed(Button.B, () => {
  4.     steps = 0
  5.     flag = 0
  6. })
  7. input.onGesture(Gesture.Shake, () => {
  8.     if (flag == 1) {
  9.         steps += 1
  10.         music.playTone(262, music.beat(BeatFraction.Whole))
  11.     }
  12. })
  13. input.onButtonPressed(Button.A, () => {
  14.     flag = 1
  15. })
  16. steps = 0
  17. flag = 0
  18. basic.forever(() => {
  19.     basic.showNumber(steps)
  20. })


後記:為了誏耳朵更声歷其境,我們在每計步一次時發出一音效。在某場研習時,有個小瓶油建訍用ba ding,所以我們就從善如流啰~

活動挑戰

  1. 大擂台(三人一組,一挑战者,一裁判,一主考官。裁判用寫好的程式,幫挑战者計數,請挑战者說出主考官出題的十個国家的首都 )。
  2. 增加設定計步目標功能,例如:走到1000步就達標。
  3. 改用倒計時方式。

和108課綱的对照

  • 學習表現:
    1. 資t-III-3 能應用運算思維描述問題解決的方法。
    2. 生k-IV-2 能了解科技產物的設計原理、發展歷程、與創新關鍵。
  • 學習內容:
    1. 資A-III-2 能建立康健的數位使用習慣與態度。
    2. 生P-IV-1 創意思考的方法。

参考資料
  1. 本PBL教材皆採:任務解說(含筆者多年教學經驗分享)、教學活動設計三大段的寫作架構撰文。
  2. 六種授權條款
  3. 非同步可想像成電話插播的突發事件。當然,我們可以決定要不要緊急處理它啰~。

沒有留言: