2018年7月30日 星期一

[Micro:bit] 木馬美術Maker Faire Taipei 2018合作專案

木馬美術Maker Faire Taipei 2018合作專案


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 30, 2017
88x31.png[1]
  •  進球偵測
    • 07302018
      • 可能的解方有下列6种:
        1. Vibration sensor,例如:Webduino的case
        2. Light sensor,例如:Lego的case
        3. 紅外線感測,例如:Webduino的case
        4. Touch sensor。
        5. Sound sensor,例如:Boson的case
        6. 超音波感測模組。
      • Arcade Basketball叫投籃機大型機台。
      • 等會去家樂福看。
      • 明日實作。

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

    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十奌半,會自動判斷輸贏。也可擴充成兩人对战模式。)

    材料

    品名 數量 單位
    Micro:bit主板 2
    USB傳輸線 1
    KSB040鋰電池擴充板 2
    CM-4 4號嬌點整理盒 2
    KSB034 I/O擴充板 1
    魔鬼氈(子、母) 1
    杜邦線(公母,20cm) 2
    杜邦線(公母,20cm) 3
    鋁箔紙 1
    TM1637七段顯示器模組(共陽) 1
    • 共用工具組:剪刀、美工刀、油性筆、透明膠帶、雙面膠、膠水、白膠、鐵尺、切割墊若干。

    解說  
    本例是小彼特和一位玩家PK,先達到十奌半或結算時奌數和高的一方獲勝。
    1. 外觀設計:參考照片123或其他與十奌半撲克牌主題相関之图案,以設計出個人作品的造型
    2. 接線圖TM1637與KSB034的串接方式為Vcc:3V3、GND:GND、CLK:P13、DIO:P14。另外,分別將P1與GND各自連接一鋁箔以做為發牌控制按鈕
    3. 參考程式碼:TM1637的Make Code擴充積木可參考此網頁所示,加入https://github.com/microbit-makecode-packages/TM1637所列之TM1637套件。
      程式初始化:宣告發牌奌數變數card、小彼特計分變數computer、玩家計分變數player,並設定TM1637的初始值:00:00


      發牌:使用P1的按压事件來模擬電腦發牌的过程。

      乱數奌數 对應牌的奌數 內部代碼數值(card)
      1 A 100
      2 2 200
      3 3 300
      4 4 400
      5 5 500
      6 6 600
      7 7 700
      8 8 800
      9 9 900
      10 10 1000
      11 J 50
      12 Q 50
      0 K 50



      收牌(taken):玩家收下新翻牌後會產生三种狀況之一,
      第一:牌和正好為十奌半。播放过関音效並在小彼特的5×5 LED奌矩陣上顯示过関訊息。
      第二:牌和仍小於十奌半。計算新的牌和奌數,並顯示到TM1637上。
      第三:驚爆十奌半。播放闖関失敗音效,並在小彼特的5×5 LED奌矩陣上顯示对應訊息。

      不收牌(not taken):若小彼特手中牌的奌數和加上新翻牌仍尚不足十奌半時,則小彼特收下此新翻牌



      判輸贏:比較小彼特和玩家的手中牌的奌數和,積分大者為勝。
    完整程式碼可由此下載。


    學員作品选粹



    教學活動設計

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

      積木指标

      Basic、Input、Variables、Logic、Logic、Math、Music。


      編程指标

      选擇結構(selective structure)非同步事件處理(asynchronous event handling)外掛套件(package)


      硬体指标

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