2018年7月19日 星期四

[Micro:bit] 蒸汽彼特(STEAM on Micro:bit)之創意發明王養成班教材──主題4:小彼特play十點半

蒸汽彼特(STEAM on Micro:bit)

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

主題4:小彼特play十點半


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 19, 2018
88x31.png[2]


難度

★★★★☆

任務

會用撲克牌玩十點半不稀奇,會用彼特寫程式來玩一局才叫威!
人和電腦PK十奌半,會自動判斷輸贏。也可擴充成兩人对战模式。)

材料


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


解說 
  1. 外觀設計:。
  2. 參考程式碼

學員作品选粹



教學活動設計

  1. 活動1:學員交換玩其他學員的作品,逐一進行PK賽。
  2. 活動2:設置多線多關(各關卡間以廣播串聯)之闖關賽,選出最厲害的「半點王」。
  3. 活動3:由十點半擴充成二十一點半,請學員改寫程式。
  4. 活動4:用兩塊板子,各自連接一顆TM1637。一塊當扮演玩家,一塊扮演電腦。玩家和電腦PK。

    積木指标

    Basic、Input、Variables、Logic、Radio。


    編程指标

    选擇結構(selective structure)非同步事件處理(asynchronous event handling)、動畫


    硬体指标

    廣播(radio)。

    STEAM指標

    TEAM。


    和108課綱的对照

        • 科技領域核心素養:科-J-A2 具備理解情境與獨立思考的能力,並運用適當科技工具與策略處理,以解決並處理生活問題與生命議題。
          • 科技領域/資訊科技學習重點
            • 學習表現:資p-IV-1 能選用適當的資訊科技組織思維,並進行有效的表達。
            • 學習內容:資P-IV-2 結構化程式設計(循序與選擇結構)。

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

                2018年7月15日 星期日

                [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/

                July 15, 2018
                88x31.png[2]

                任務

                來來來,coffee or tea?茶,有茶道;酒,有品酒;咖啡,有咖道(台語的「地板」?)。
                使用板載重力加速度感測器來練習茶/動畫

                材料

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

                解說 
                1. 外觀設計:在馬糞紙上畫出茶壺/酒瓶的外形,用工具剪下並在小彼特背後及此造型上貼妥魔鬼氈。
                2. 參考程式碼[3]
                  小彼特往左傾(tilt left)時展示倒酒動畫;
                  右傾(tilt right)時播放倒茶動畫。

                  因此,需有一塊主人彼特(master Micro:bit)當做茶壺或酒瓶來倒入僕人彼特(slave Micro:bit)的茶杯或酒杯中[4]。
                1. 程式初始時設妥廣播群組(group),並將開麥拉旗號action放下(disable)。 
                2. 按A鍵則重置(reset)
                3. 往左傾時,舉起開麥拉旗號action、播放酒杯漸空的倒酒動畫(酒杯漸空)。播完後發出通知碼0給僕人彼特,誏它接著啟動酒杯漸滿的倒酒動畫。
                4. 往右傾時,舉起開麥拉旗號action、顯示茶壺图示,並發出通知碼1給僕人彼特,誏它接著啟動茶壺漸滿的倒茶動畫。


                  1. 設定廣播群組並清除LED奌矩陣畫面。
                  2. 按A鍵則清除LED畫面
                  3. 若收到的廣播通知碼為0時,則啟動酒杯漸滿的倒酒動畫。
                  4. 若收到的廣播通知碼為1時,則啟動茶壺漸滿的倒茶動畫

                學員作品选粹



                教學活動設計

                1. 活動1:將公版程式改成倒三杯動畫。
                2. 活動2:

                  積木指标

                  Basic、Input、Variables、Logic、Radio。


                  編程指标

                  选擇結構(selective structure)非同步事件處理(asynchronous event handling)、動畫


                  硬体指标

                  廣播(radio)。

                  STEAM指標

                  TEAM。


                  和108課綱的对照

                      • 科技領域核心素養:科-J-A2 具備理解情境與獨立思考的能力,並運用適當科技工具與策略處理,以解決並處理生活問題與生命議題。
                        • 科技領域/資訊科技學習重點
                          • 學習表現:資p-IV-1 能選用適當的資訊科技組織思維,並進行有效的表達。
                          • 學習內容:資P-IV-2 結構化程式設計(循序與選擇結構)。

                              参考資料
                              1. 本PBL教材皆採:任務解說(含筆者多年教學經驗分享)、教學活動設計三大段的寫作架構撰文。
                              2. 六種授權條款
                              3. 感謝換心一文帶給我們的靈感。
                              4. 這就是資訊科學常聽到的主/從式架構(client/ server architecture)。

                              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. 六種授權條款