Skip to content

活動

蠟燭

中等級數 | MakeCode, Python | LED 螢幕, 麥克風 | 布爾邏輯, 感應器, 選擇

步驟1:製作

它是什麼?

製作一個能被您吹熄滅的電子蠟燭! 新版 micro:bit 的內建麥克風能偵測您呼吸的聲音然後把蠟燭關機 - 以及再次開機。

介紹

編程指引

您將學到什麼

  • 如何使用隨機數字來點亮隨機的 LED
  • 如何根據感測器輸入來切換輸出
  • 如何使用布爾邏輯來製作一個能夠藉由相同事件所觸發來切換開啟或關閉的開關。

運作方式

  • 將一個 1 到 3 之間的隨機數字儲存在名為 flicker 的變數中。
  • 這個數字是被用來隨機打開和關閉 LED 好讓它看起來像火焰在閃爍。
  • micro:bit 的 LED 燈是以網格狀排列,行列和排列均為從 0 到 4。 程式會根據 flicker 變數中儲存的隨機數字打開和關閉位於螢幕最上方一行的 LED 燈 。
  • LED 燈的座標位置標註方法為先從左到右的橫向(x軸),再從上到下的縱向(y軸)。 火焰的中心位置位在座標 2, 0。
顯示 micro:bit 的 LED 螢幕座標的網格
  • 永久迴圈會保持動畫持續運作。
  • 該程式也使用一個叫做 lit 的變數來追蹤蠟燭是否有被點燃。 這是一個布爾變數。 布爾變數只能有兩個標準值:真或偽。
  • 當麥克風感測器偵測到一個響亮的聲音時,例如當您對著它吹氣時,程式碼將轉換 lit 的值而設定為 not lit。 所以,當您向麥克風吹氣時,如果 lit 為真,它將會被設置成偽,然後會清除螢幕並關閉 LED。
  • 而假如 lit 是偽的,它將會被設定成真然後我們將重啟動畫。

你需要的東西

  • 一個micro:bit
  • MakeCode 或, Python 編輯器
  • 電池組(選配)

步驟2:編碼

1from microbit import *
2import random
3
4lit = True
5
6while True:
7    if microphone.was_event(SoundEvent.LOUD):
8        lit = not lit
9        sleep(500)
10    if lit:
11        display.show(Image(
12        "00900:"
13        "09990:"
14        "09990:"
15        "09990:"
16        "09990"))
17        sleep(150)
18        flicker = random.randint(1, 3)
19        if flicker != 2:
20            display.set_pixel(2,0,0)
21            display.set_pixel(flicker,0,9)
22        sleep(150)
23    else:
24        display.clear()

步驟3:進階

  • 創造您自己的設計,用聲音來打開或關閉動畫。
  • 您可以透過在「on start」區塊中添加「set loud sound threshold」區塊來設定聲響門檻值,從而讓「on loud sound」區塊更靈敏或者更不靈敏。 這些可以在 Input 和「...more」選單中找到。 對較小的聲音使用較小的數字,對響亮的聲音使用較大的數字。
  • 在 Python 中,要更改聲音的門檻值,請使用 microphone.set_minimum (SoundEvent.LOUD,128),將其設在while True:迴圈之前,將數字 128 更改為您想要的聲響值。 這可以是 0 到 255 之間的任何數字,255 是最響的聲音。