顯示具有 MakeCode 標籤的文章。 顯示所有文章
顯示具有 MakeCode 標籤的文章。 顯示所有文章

2025年8月5日 星期二

[micro:bit] 剪刀、石頭、布

記錄比賽結果,做出統計圖表,看看 micro:bit 和人類(或另一台 micro:bit)對戰時贏了幾場、輸了幾場、平手幾次



Python程式


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
def on_button_pressed_a():
    global win
    basic.show_string("Win")
    if mode == 0:
        basic.show_number(win)
    else:
        win += 1
    basic.show_number(win)
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_gesture_shake():
    global randomnumber
    randomnumber = randint(0, 2)
    if randomnumber == 0:
        basic.show_icon(IconNames.SMALL_SQUARE)
    elif randomnumber == 2:
        basic.show_icon(IconNames.SQUARE)
    else:
        basic.show_icon(IconNames.SCISSORS)
input.on_gesture(Gesture.SHAKE, on_gesture_shake)

def on_logo_pressed():
    global mode
    mode = (mode + 1) % 2
    if mode == 0:
        basic.show_string("View")
    else:
        basic.show_string("Edit")
input.on_logo_event(TouchButtonEvent.PRESSED, on_logo_pressed)

def on_button_pressed_ab():
    global tie
    basic.show_string("Tie")
    if mode == 0:
        basic.show_number(tie)
    else:
        tie += 1
    basic.show_number(tie)
input.on_button_pressed(Button.AB, on_button_pressed_ab)

def on_button_pressed_b():
    global lose
    basic.show_string("Lose")
    if mode == 0:
        basic.show_number(lose)
    else:
        lose += 1
    basic.show_number(lose)
input.on_button_pressed(Button.B, on_button_pressed_b)

randomnumber = 0
tie = 0
lose = 0
win = 0
mode = 0
mode = 0
win = 0
lose = 0
tie = 0

2025年7月24日 星期四

[micro:bit] 鋼鐡之心

 


Python 程式:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
def on_button_pressed_a():
    global Run, Mode
    Run = 0
    Mode = (Mode + 1) % 9
    basic.show_number(Mode)
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_b():
    global Run, Temp
    Run = 1
    basic.show_icon(IconNames.ANGRY)
    Temp = (Temp + 1) % 2
    if Mode != 5:
        ContinuousServo.turn_off_motor(DigitalPin.P2)
    if Mode != 6:
        strip.clear()
        strip.show()
    if Mode == 6 or Mode == 7:
        strip.show_rainbow(1, 360)
        strip.show()
input.on_button_pressed(Button.B, on_button_pressed_b)

Temp = 0
strip: neopixel.Strip = None
Run = 0
Mode = 0
basic.show_icon(IconNames.ANGRY)
Mode = 0
Run = 0
ContinuousServo.spin_one_way(AnalogPin.P2)
ContinuousServo.spin_other_way(AnalogPin.P2)
ContinuousServo.turn_off_motor(DigitalPin.P2)
strip = neopixel.create(DigitalPin.P1, 16, NeoPixelMode.RGB)
strip.show_rainbow(1, 360)
strip.clear()
strip.show()
strip.show_rainbow(1, 360)
mp3Player.mp3_set_serial(SerialPin.P0)
mp3Player.set_volume(25)

def on_forever():
    global Temp, Mode
    if Run == 1:
        if Mode == 1:
            basic.show_icon(IconNames.HEART)
            basic.pause(500)
            basic.show_icon(IconNames.SMALL_HEART)
            basic.pause(500)
        elif Mode == 2:
            if input.light_level() >= 100:
                basic.show_icon(IconNames.HEART)
            else:
                basic.show_icon(IconNames.SMALL_HEART)
        elif Mode == 3:
            if input.compass_heading() >= 100:
                basic.show_icon(IconNames.HEART)
            else:
                basic.show_icon(IconNames.SMALL_HEART)
        elif Mode == 4:
            if input.sound_level() >= 150:
                if Temp == 0:
                    basic.show_icon(IconNames.HEART)
                else:
                    basic.show_icon(IconNames.SMALL_HEART)
                Temp = (Temp + 1) % 2
        elif Mode == 5:
            if Temp == 0:
                ContinuousServo.spin_one_way_with_speed(AnalogPin.P2, 50)
            else:
                ContinuousServo.spin_other_way_with_speed(AnalogPin.P2, 50)
        elif Mode == 6:
            strip.rotate(1)
            strip.show()
            basic.pause(200)
        elif Mode == 7:
            if Temp == 0:
                ContinuousServo.spin_one_way_with_speed(AnalogPin.P2, 50)
                strip.rotate(1)
            else:
                ContinuousServo.spin_other_way_with_speed(AnalogPin.P2, 50)
                strip.rotate(-1)
            strip.show()
            basic.pause(200)
        elif Mode == 8:
            mp3Player.set_tracking(1, mp3Player.repeatList.NO)
            mp3Player.execute(mp3Player.playType.PLAY)
            Mode = 0
basic.forever(on_forever)

2025年7月4日 星期五

用樹藝AI說雲林溪故事

材料:種子、玉米籜、micro:bit、Smart AI Lens、MP3 Player、LED

積木程式:


Python程式:

# 0:介紹、1測驗
def RightWrong(num: number, ans: str):
    global Number2, mode
    if answer[num] == ans:
        mp3Player.set_tracking(18, mp3Player.repeatList.NO)
        basic.show_icon(IconNames.YES)
    else:
        mp3Player.set_tracking(19, mp3Player.repeatList.NO)
        basic.show_icon(IconNames.NO)
    basic.pause(5000)
    Number2 = (Number2 + 1) % 20
    if Number2 == 15:
        mp3Player.set_tracking(20, mp3Player.repeatList.NO)
        mode = 0
        basic.show_leds("""
            . . # # #
            . . . # #
            . . . . #
            # # . . .
            # # . . .
            """)
    else:
        mp3Player.set_tracking(Number2 + 6, mp3Player.repeatList.NO)
        basic.pause(2000)
        basic.show_icon(IconNames.SQUARE)
def doLight():
    if Run == 0 or Run == 5:
        pins.digital_write_pin(DigitalPin.P2, 1)
        pins.digital_write_pin(DigitalPin.P9, 0)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif Run == 1 or Run == 6:
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P9, 1)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif Run == 2 or Run == 7:
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P9, 0)
        pins.digital_write_pin(DigitalPin.P13, 1)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif Run == 3 or Run == 8:
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P9, 0)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 1)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif Run == 4 or Run == 9:
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P9, 0)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 1)
LED_status = 0
count = 0
oldRun = 0
Run = 0
mode = 0
Number2 = 0
answer: List[str] = []
basic.show_leds("""
    # # . . .
    # # . . .
    . # # . .
    . # # # #
    . . # # #
    """)
basic.pause(500)
mp3Player.mp3_set_serial(SerialPin.P1)
mp3Player.set_volume(25)
mp3Player.set_tracking(20, mp3Player.repeatList.NO)
PlanetX_AILens.init_module()
PlanetX_AILens.switchfunc(PlanetX_AILens.FuncList.CARD)
basic.show_leds("""
    . . # # #
    . . . # #
    . . . . #
    # # . . .
    # # . . .
    """)
pins.digital_write_pin(DigitalPin.P2, 0)
pins.digital_write_pin(DigitalPin.P9, 0)
pins.digital_write_pin(DigitalPin.P13, 0)
pins.digital_write_pin(DigitalPin.P14, 0)
pins.digital_write_pin(DigitalPin.P15, 0)
answer = ["B""C""C""B""D""C""B""B""C""C"]

def on_every_interval():
    global LED_status, count, oldRun
    cardMode = 0
    if cardMode == 0:
        if oldRun == Run:
            if count > 10:
                if LED_status == 0:
                    LED_status = 1
                    pins.digital_write_pin(DigitalPin.P2, 1)
                    pins.digital_write_pin(DigitalPin.P9, 1)
                    pins.digital_write_pin(DigitalPin.P13, 1)
                    pins.digital_write_pin(DigitalPin.P14, 1)
                    pins.digital_write_pin(DigitalPin.P15, 1)
                else:
                    LED_status = 0
                    pins.digital_write_pin(DigitalPin.P2, 0)
                    pins.digital_write_pin(DigitalPin.P9, 0)
                    pins.digital_write_pin(DigitalPin.P13, 0)
                    pins.digital_write_pin(DigitalPin.P14, 0)
                    pins.digital_write_pin(DigitalPin.P15, 0)
            else:
                count = count + 1
        else:
            oldRun = Run
            count = 0
loops.every_interval(500, on_every_interval)

def on_forever():
    global Run, mode, Number2
    PlanetX_AILens.camera_image()
    if mode == 0 and PlanetX_AILens.number_card(PlanetX_AILens.numberCards.ONE):
        Run = 0
        mp3Player.set_tracking(1, mp3Player.repeatList.NO)
    elif mode == 0 and PlanetX_AILens.number_card(PlanetX_AILens.numberCards.TWO):
        Run = 1
        mp3Player.set_tracking(2, mp3Player.repeatList.NO)
    elif mode == 0 and PlanetX_AILens.number_card(PlanetX_AILens.numberCards.THREE):
        Run = 2
        mp3Player.set_tracking(3, mp3Player.repeatList.NO)
    elif mode == 0 and PlanetX_AILens.number_card(PlanetX_AILens.numberCards.FOUR):
        Run = 3
        mp3Player.set_tracking(4, mp3Player.repeatList.NO)
    elif mode == 0 and PlanetX_AILens.number_card(PlanetX_AILens.numberCards.FIVE):
        Run = 4
        mp3Player.set_tracking(5, mp3Player.repeatList.NO)
    elif mode == 0 and PlanetX_AILens.number_card(PlanetX_AILens.numberCards.SIX):
        mp3Player.set_tracking(16, mp3Player.repeatList.NO)
        mode = 1
        Number2 = 0
        basic.pause(5000)
        basic.show_icon(IconNames.SQUARE)
        mp3Player.set_tracking(Number2 + 6, mp3Player.repeatList.NO)
    elif mode == 1 and PlanetX_AILens.letter_card(PlanetX_AILens.letterCards.A):
        mp3Player.set_tracking(Number2 + 6, mp3Player.repeatList.NO)
        RightWrong(Number2, "A")
    elif mode == 1 and PlanetX_AILens.letter_card(PlanetX_AILens.letterCards.B):
        mp3Player.set_tracking(Number2 + 6, mp3Player.repeatList.NO)
        RightWrong(Number2, "B")
    elif mode == 1 and PlanetX_AILens.letter_card(PlanetX_AILens.letterCards.C):
        mp3Player.set_tracking(Number2 + 6, mp3Player.repeatList.NO)
        RightWrong(Number2, "C")
    elif mode == 1 and PlanetX_AILens.letter_card(PlanetX_AILens.letterCards.D):
        mp3Player.set_tracking(Number2 + 6, mp3Player.repeatList.NO)
        RightWrong(Number2, "D")
    elif mode == 1 and PlanetX_AILens.letter_card(PlanetX_AILens.letterCards.E):
        mp3Player.set_tracking(20, mp3Player.repeatList.NO)
        mode = 0
        basic.show_leds("""
            . . # # #
            . . . # #
            . . . . #
            # # . . .
            # # . . .
            """)
    basic.pause(2500)
basic.forever(on_forever)


 

2025年4月8日 星期二

傾聽作品:拍掌牛擺頭外也能啟閉鳥叫聲

上一篇文章:彩虹鳥和行動牛



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
def on_button_pressed_a():
    radio.send_string("action cow")
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_b():
    radio.send_string("rainbow bird")
input.on_button_pressed(Button.B, on_button_pressed_b)

def on_sound_loud():
    global mode
    if listen == 1:
        mode = (mode + 1) % 2
        basic.show_icon(IconNames.HEART)
        servos.P1.set_angle(60)
        basic.pause(500)
        servos.P1.set_angle(120)
        basic.pause(500)
        servos.P1.set_angle(90)
        basic.show_icon(IconNames.ANGRY)
input.on_sound(DetectedSound.LOUD, on_sound_loud)

listen = 0
mode = 0
strip = neopixel.create(DigitalPin.P2, 4, NeoPixelMode.RGB)
strip.show_rainbow(1, 360)
strip.show()
servos.P1.set_angle(90)
mode = 0
radio.set_group(88)
basic.show_icon(IconNames.ANGRY)
listen = 1
mode = 0

def on_every_interval():
    if mode == 1:
        strip.rotate(1)
        strip.show()
loops.every_interval(500, on_every_interval)

def on_forever():
    global listen
    if mode == 1:
        listen = 0
        for index in range(randint(10, 200)):
            music.play_sound_effect(music.create_sound_effect(WaveShape.SAWTOOTH,
                    randint(1, 5000),
                    randint(1, 5000),
                    randint(0, 1024),
                    randint(0, 1024),
                    randint(40, 100),
                    SoundExpressionEffect.VIBRATO,
                    InterpolationCurve.CURVE),
                SoundExpressionPlayMode.UNTIL_DONE)
        basic.pause(600)
        listen = 1
        basic.pause(randint(1000, 10000))
basic.forever(on_forever)

2025年4月7日 星期一

用micro:bit實作小鳥叫聲

參考資料:Jonny’s Bird

用隨機變數取替加速器資料。


Python程式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def on_forever():
    for index in range(randint(10, 200)):
        music.play_sound_effect(music.create_sound_effect(WaveShape.SAWTOOTH,
                randint(1, 5000),
                randint(1, 5000),
                randint(0, 1024),
                randint(0, 1024),
                randint(40, 100),
                SoundExpressionEffect.VIBRATO,
                InterpolationCurve.CURVE),
            SoundExpressionPlayMode.UNTIL_DONE)
    basic.pause(randint(1000, 10000))
basic.forever(on_forever)


2024年12月4日 星期三

[樹藝:micro:bit] 時尚兔玩AI

 

主要材料:樹藝、micro:bit、Smart AI Lens

MakeCode程式碼:


Python程式:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
def on_button_pressed_a():
    global ID
    ID = (ID + 1) % 6
    basic.show_string("" + str((ID)))
    if ID == 0:
        PlanetX_AILens.switchfunc(PlanetX_AILens.FuncList.CARD)
    else:
        PlanetX_AILens.switchfunc(PlanetX_AILens.FuncList.THINGS)
    basic.pause(3000)
input.on_button_pressed(Button.A, on_button_pressed_a)

def doLight():
    if RUN == 0 or (RUN == 5 or RUN == 11):
        pins.digital_write_pin(DigitalPin.P1, 1)
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif RUN == 1 or (RUN == 6 or RUN == 12):
        pins.digital_write_pin(DigitalPin.P1, 0)
        pins.digital_write_pin(DigitalPin.P2, 1)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif RUN == 2 or (RUN == 7 or RUN == 13):
        pins.digital_write_pin(DigitalPin.P1, 0)
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P13, 1)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif RUN == 3 or (RUN == 8 or RUN == 14):
        pins.digital_write_pin(DigitalPin.P1, 0)
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 1)
        pins.digital_write_pin(DigitalPin.P15, 0)
    elif RUN == 4 or (RUN == 9 or RUN == 15):
        pins.digital_write_pin(DigitalPin.P1, 0)
        pins.digital_write_pin(DigitalPin.P2, 0)
        pins.digital_write_pin(DigitalPin.P13, 0)
        pins.digital_write_pin(DigitalPin.P14, 0)
        pins.digital_write_pin(DigitalPin.P15, 1)
def checkCard():
    global RUN
    if PlanetX_AILens.number_card(PlanetX_AILens.numberCards.ZERO) and RUN != 0:
        RUN = 0
        radio.send_number(10)
        basic.show_number(0)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.ONE) and RUN != 1:
        RUN = 1
        radio.send_number(1)
        basic.show_number(1)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.TWO) and RUN != 2:
        RUN = 2
        radio.send_number(2)
        basic.show_number(2)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.THREE) and RUN != 3:
        RUN = 3
        radio.send_number(3)
        basic.show_number(3)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.FOUR) and RUN != 4:
        RUN = 4
        radio.send_number(9)
        basic.show_number(4)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.FIVE) and RUN != 5:
        RUN = 5
        radio.send_number(5)
        basic.show_number(5)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.SIX) and RUN != 6:
        RUN = 6
        radio.send_number(4)
        basic.show_number(6)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.SEVEN) and RUN != 7:
        RUN = 7
        radio.send_number(8)
        basic.show_number(7)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.EIGHT) and RUN != 8:
        RUN = 8
        radio.send_number(7)
        basic.show_number(8)
    elif PlanetX_AILens.number_card(PlanetX_AILens.numberCards.NINE) and RUN != 9:
        RUN = 9
        radio.send_number(6)
        basic.show_number(9)

def on_button_pressed_b():
    if ID == 1:
        PlanetX_AILens.learn_object(PlanetX_AILens.learnID.ID1)
    elif ID == 2:
        PlanetX_AILens.learn_object(PlanetX_AILens.learnID.ID2)
    elif ID == 3:
        PlanetX_AILens.learn_object(PlanetX_AILens.learnID.ID3)
    elif ID == 4:
        PlanetX_AILens.learn_object(PlanetX_AILens.learnID.ID4)
    elif ID == 5:
        PlanetX_AILens.learn_object(PlanetX_AILens.learnID.ID4)
    basic.pause(6000)
input.on_button_pressed(Button.B, on_button_pressed_b)

def checkLOGO():
    global RUN
    if PlanetX_AILens.object_check(PlanetX_AILens.learnID.ID1) and RUN != 11:
        RUN = 11
        basic.show_string("A")
        radio.send_number(16)
    elif PlanetX_AILens.object_check(PlanetX_AILens.learnID.ID2) and RUN != 12:
        RUN = 12
        basic.show_string("B")
        radio.send_number(17)
    elif PlanetX_AILens.object_check(PlanetX_AILens.learnID.ID3) and RUN != 13:
        RUN = 13
        basic.show_string("C")
        radio.send_number(18)
    elif PlanetX_AILens.object_check(PlanetX_AILens.learnID.ID4) and RUN != 14:
        RUN = 14
        basic.show_string("D")
        radio.send_number(19)
    elif PlanetX_AILens.object_check(PlanetX_AILens.learnID.ID5) and RUN != 15:
        RUN = 15
        basic.show_string("E")
        radio.send_number(20)
RUN = 0
ID = 0
basic.show_icon(IconNames.HEART)
PlanetX_AILens.init_module()
PlanetX_AILens.switchfunc(PlanetX_AILens.FuncList.CARD)
ID = 0
basic.show_leds("""
    . # . . #
    # . # . #
    # # # . #
    # . # . #
    # . # . #
    """)
RUN = 0
radio.set_group(49)
pins.digital_write_pin(DigitalPin.P1, 0)
pins.digital_write_pin(DigitalPin.P2, 0)
pins.digital_write_pin(DigitalPin.P13, 0)
pins.digital_write_pin(DigitalPin.P14, 0)
pins.digital_write_pin(DigitalPin.P15, 0)
Old_Run = 0
count = 12
LED_status = 0

def on_every_interval():
    global LED_status, count, Old_Run
    if Old_Run == RUN:
        if count > 10:
            if LED_status == 0:
                LED_status = 1
                pins.digital_write_pin(DigitalPin.P1, 1)
                pins.digital_write_pin(DigitalPin.P2, 1)
                pins.digital_write_pin(DigitalPin.P13, 1)
                pins.digital_write_pin(DigitalPin.P14, 1)
                pins.digital_write_pin(DigitalPin.P15, 1)
            else:
                LED_status = 0
                pins.digital_write_pin(DigitalPin.P1, 0)
                pins.digital_write_pin(DigitalPin.P2, 0)
                pins.digital_write_pin(DigitalPin.P13, 0)
                pins.digital_write_pin(DigitalPin.P14, 0)
                pins.digital_write_pin(DigitalPin.P15, 0)
        else:
            count = count + 1
    else:
        Old_Run = RUN
        count = 0
loops.every_interval(500, on_every_interval)

def on_forever():
    PlanetX_AILens.camera_image()
    if ID == 0:
        checkCard()
    else:
        checkLOGO()
    if count < 10:
        doLight()
    basic.pause(200)
    basic.show_leds("""
        . # . . #
        # . # . #
        # # # . #
        # . # . #
        # . # . #
        """)
basic.forever(on_forever)

[樹藝micro:bit]歡樂蛙聽語音

 

主要材料:樹藝、micro:bit、語音辨識IC
MakeCode程式碼:


Python程式碼:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
def on_asr_vocabulary_list_learning_entry_7():
    strip.show_rainbow(1, 360)
    radio.send_number(16)
    basic.show_string("Craft")
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_7,
    on_asr_vocabulary_list_learning_entry_7)

def on_asr_vocabulary_list_learning_entry_6():
    strip.show_rainbow(1, 360)
    radio.send_number(17)
    basic.show_string("NFU")
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_6,
    on_asr_vocabulary_list_learning_entry_6)

def on_button_pressed_a():
    asr.set_asr_learn()
    basic.show_leds("""
        # . . . .
        # . . . .
        # . . . .
        # . . . .
        # # # # .
        """)
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_asr_vocabulary_list_learning_entry_8():
    strip.show_rainbow(1, 360)
    radio.send_number(19)
    basic.show_string("Smart")
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_8,
    on_asr_vocabulary_list_learning_entry_8)

def on_asr_vocabulary_list_learning_entry_10():
    strip.show_rainbow(1, 360)
    radio.send_number(20)
    basic.show_string("Tree Art")
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_10,
    on_asr_vocabulary_list_learning_entry_10)

def on_asr_vocabulary_list_learning_entry_4():
    basic.show_leds("""
        # # . # #
        # # . # #
        # . # . #
        # . . . #
        . # # # .
        """)
    strip.show_color(neopixel.colors(NeoPixelColors.PURPLE))
    strip.show()
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_4,
    on_asr_vocabulary_list_learning_entry_4)

def on_button_pressed_b():
    asr.del_asr_learn()
    basic.show_leds("""
        . # # # .
        # . . . .
        # . . . .
        # . . . .
        . # # # .
        """)
input.on_button_pressed(Button.B, on_button_pressed_b)

def on_asr_vocabulary_list_learning_entry_5():
    basic.show_leds("""
        # . . . #
        # . # . #
        # . # . #
        # . . . #
        . # # # .
        """)
    strip.show_color(neopixel.colors(NeoPixelColors.GREEN))
    strip.show()
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_5,
    on_asr_vocabulary_list_learning_entry_5)

def on_asr_vocabulary_list_learning_entry_9():
    strip.show_rainbow(1, 360)
    radio.send_number(18)
    basic.show_string("STEAM")
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_9,
    on_asr_vocabulary_list_learning_entry_9)

def on_asr_vocabulary_list_learning_entry_2():
    basic.show_leds("""
        . # # # .
        # . . . #
        # . . . #
        # . . . #
        . # # # .
        """)
    strip.show_color(neopixel.colors(NeoPixelColors.BLACK))
    strip.show()
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_2,
    on_asr_vocabulary_list_learning_entry_2)

def on_asr_vocabulary_list_learning_entry_3():
    basic.show_leds("""
        . # # # .
        # # # # #
        # # # # #
        # # # # #
        . # # # .
        """)
    strip.show_color(neopixel.colors(NeoPixelColors.RED))
    strip.show()
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_3,
    on_asr_vocabulary_list_learning_entry_3)

def on_asr_vocabulary_list_hi_shaun():
    basic.show_icon(IconNames.HEART)
    radio.send_number(0)
asr.on_asr(asr.vocabularyList.HI_SHAUN, on_asr_vocabulary_list_hi_shaun)

def on_asr_vocabulary_list_learning_entry_1():
    basic.show_leds("""
        . # . # .
        # . # . #
        . # . # .
        # . # . #
        . # . # .
        """)
    strip.show_rainbow(1, 360)
    radio.send_number(1)
asr.on_asr(asr.vocabularyList.LEARNING_ENTRY_1,
    on_asr_vocabulary_list_learning_entry_1)

strip: neopixel.Strip = None
basic.show_icon(IconNames.HAPPY)
strip = neopixel.create(DigitalPin.P0, 32, NeoPixelMode.RGB)
strip.show_rainbow(1, 360)
radio.set_group(49)

def on_forever():
    strip.rotate(1)
    strip.show()
    basic.pause(sonar.ping(DigitalPin.P1, DigitalPin.P2, PingUnit.CENTIMETERS) * 10)
basic.forever(on_forever)