2018年7月12日 星期四

[Micro:bit] 蒸汽彼特(STEAM on Micro:bit)之創意發明王養成班教材──主題11:小彼特妖怪手錶

蒸汽彼特(STEAM on Micro:bit)

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

主題11:小彼特妖怪手錶


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/

July 12, 2018
88x31.png[2]


任務

法力高強的小彼特把森林裡老妖收服在寶貝手錶裡了,上緊發條讓它轉動吧!
利用不織布設計手錶的外型並以編程來控制故事腳本的逻輯。)

材料


品名 數量 單位
Micro:bit主板 1
USB傳輸線 1
KSB040鋰電也擴充板 1
CM-4 4號嬌點整理盒 1
不織布 1
長尾夾 1
魔鬼氈(子、母) 1
    • 共用工具組:剪刀、美工刀、油性筆、、透明膠帶、雙面膠、膠水、白膠、鐵尺、切割墊若干。


    解說 
    1. 外觀設計:在稿紙上畫出妖怪手錶的外觀,再將設計好的手錶外框拓印到不織布上並裁剪下來
    2. 根据小綠人好客動畫,設計手錶的計時動畫
    3. 功能程式碼
    程式初始化(initialization):隨機產生驚喜抽獎surprise,誏手錶開始計時。隨後播放特定音效及图案後,依照向左或向右的箭頭指示按下按鈕A或B
     

    按鈕A:獲得Luck 7幸運符一枚,並開始奏樂

    按鈕B:獲得魔王関免費招待卷一張
     

    計時動畫副程式Clock

      1.  let surprise = 0
      2. function clock() {
      3. basic.showLeds(`
      4.         . . # . .
      5.         . . # . .
      6.         . . # . .
      7.         . . . . .
      8.         . . . . .
      9.         `)
      10. music.playTone(330, music.beat(BeatFraction.Whole))
      11. basic.pause(100)
      12. basic.showLeds(`
      13.         . . # # .
      14.         . . # # .
      15.         . . # . .
      16.         . . . . .
      17.         . . . . .
      18.         `)
      19. music.playTone(330, music.beat(BeatFraction.Whole))
      20. basic.pause(100)
      21. basic.showLeds(`
      22.         . . # . .
      23.         . . # # #
      24.         . . # . .
      25.         . . . . .
      26.         . . . . .
      27.         `)
      28. music.playTone(330, music.beat(BeatFraction.Whole))
      29. basic.pause(100)
      30. basic.showLeds(`
      31.         . . # . .
      32.         . . # . .
      33.         . . # # #
      34.         . . . . .
      35.         . . . . .
      36.         `)
      37. music.playTone(330, music.beat(BeatFraction.Whole))
      38. basic.pause(100)
      39. basic.showLeds(`
      40.         . . # . .
      41.         . . # . .
      42.         . . # . .
      43.         . . . # #
      44.         . . . . .
      45.         `)
      46. music.playTone(330, music.beat(BeatFraction.Whole))
      47. basic.pause(100)
      48. basic.showLeds(`
      49.         . . # . .
      50.         . . # . .
      51.         . . # . .
      52.         . . . # .
      53.         . . . . #
      54.         `)
      55. music.playTone(330, music.beat(BeatFraction.Whole))
      56. basic.pause(100)
      57. basic.showLeds(`
      58.         . . # . .
      59.         . . # . .
      60.         . . # . .
      61.         . . # . .
      62.         . . # . .
      63.         `)
      64. music.playTone(330, music.beat(BeatFraction.Whole))
      65. basic.pause(100)
      66. basic.showLeds(`
      67.         . . # . .
      68.         . . # . .
      69.         . . # . .
      70.         . # . . .
      71.         # . . . .
      72.         `)
      73. music.playTone(330, music.beat(BeatFraction.Whole))
      74. basic.pause(100)
      75. basic.showLeds(`
      76.         . . # . .
      77.         . . # . .
      78.         . . # . .
      79.         # # . . .
      80.         . . . . .
      81.         `)
      82. music.playTone(330, music.beat(BeatFraction.Whole))
      83. basic.pause(100)
      84. basic.showLeds(`
      85.         . . # . .
      86.         . . # . .
      87.         # # # . .
      88.         . . . . .
      89.         . . . . .
      90.         `)
      91. music.playTone(330, music.beat(BeatFraction.Whole))
      92. basic.pause(100)
      93. basic.showLeds(`
      94.         # . # . .
      95.         . # # . .
      96.         . . # . .
      97.         . . . . .
      98.         . . . . .
      99.         `)
      100. music.playTone(330, music.beat(BeatFraction.Whole))
      101. basic.pause(100)
      102. basic.showLeds(`
      103.         . # # . .
      104.         . # # . .
      105.         . . # . .
      106.         . . . . .
      107.         . . . . .
      108.         `)
      109. music.playTone(330, music.beat(BeatFraction.Whole))
      110. basic.pause(100)
      111. basic.showLeds(`
      112.         . . # . .
      113.         . . # . .
      114.         . . # . .
      115.         . . . . .
      116.         . . . . .
      117.         `)
      118. }
      119. input.onButtonPressed(Button.A, () => {
      120. basic.clearScreen()
      121. basic.showIcon(IconNames.Meh)
      122. music.playTone(330, music.beat(BeatFraction.Half))
      123. music.playTone(330, music.beat(BeatFraction.Half))
      124. music.playTone(330, music.beat(BeatFraction.Half))
      125. music.playTone(262, music.beat(BeatFraction.Double))
      126. music.playTone(294, music.beat(BeatFraction.Half))
      127. music.playTone(294, music.beat(BeatFraction.Half))
      128. music.playTone(294, music.beat(BeatFraction.Half))
      129. music.playTone(247, music.beat(BeatFraction.Double))
      130. })
      131. input.onButtonPressed(Button.B, () => {
      132. basic.clearScreen()
      133. basic.showIcon(IconNames.Angry)
      134. music.beginMelody(music.builtInMelody(Melodies.Nyan), MelodyOptions.Once)
      135. })
      136. surprise = Math.random(2)
      137. clock()
      138. music.beginMelody(music.builtInMelody(Melodies.Wawawawaa), MelodyOptions.Once)
      139. basic.clearScreen()
      140. basic.pause(500)
      141. for (let i = 0; i < 3; i++) {
      142. basic.showLeds(`
      143.         # . # . #
      144.         # # # # .
      145.         . . # . .
      146.         # # # # .
      147.         # . # . #
      148.         `)
      149. basic.pause(500)
      150. basic.clearScreen()
      151. basic.pause(500)
      152. }
      153. if (surprise == 0) {
      154. basic.showArrow(ArrowNames.East)
      155. } else {
      156. basic.showArrow(ArrowNames.West)
      157. }

    學員作品选粹



    教學活動設計

    1. 活動1:請學員在稿紙上寫下手錶的功能發想,教師再使用創意思考整理術,帶領學員整理出一個公版的範例程式供參。
    2. 活動2:

    積木指标

    Basic、Music、Input、Functions、Variables、Loops、Math。


    編程指标

    副程式(subroutines)乱數(random number)重覆結構(repetitive structure)非同步事件處理(asynchronous event handling)、動畫


    硬体指标

    無。

    STEAM指標

    TEAM。


    和108課綱的对照

        • 科技領域核心素養:科-J-A2 具備理解情境與獨立思考的能力,並運用適當科技工具與策略處理,以解決並處理生活問題與生命議題。
        • 科技領域/資訊科技學習重點
          • 學習表現:資t-IV-1 能了解資訊系統的基本組成架構與運算原理。
          • 學習內容:資P-IV-2 結構化程式設計。

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

              沒有留言: