Skip to content

活動

鄰近信標

進階 | MakeCode, Python | LED 螢幕, 無線電 | 無線電波, 算術運算符, 通訊

步驟1:製作

這是什麼?

使用廣播來感測另一個micro:bit有多近,然後製作尋寶遊戲或使用它來幫助人們知道自己處於安全的社交距離。

介紹

編程指引

運作方式

  • 這個專案您至少需要2個micro:bit。 我們會創建兩個不同的程式,一個作為信標程式,不斷地發送低功率廣播訊息。 另一個程式在接收器上運作。
  • 當接收者從信標接收消息時,它將其強度存儲在名為訊號的變數中,並在其LED顯示螢幕上顯示。
  • 廣播信號越靠近發射器,信號越強,因此,如果信號較強,則意味著另一個micro:bit可能很接近。
  • 如果廣播信號較弱,則另一個micro:bit可能距離較遠。
  • 顯示一個條狀圖,信號越強,距離越近,條狀圖就變得越大。 它使用數學map積木對應廣播信號強度數字從-95(弱)到-42(強)的範圍對應到0到9的範圍,我們可以用來繪製條狀圖。

Python版本

  • Python沒有內建的條狀圖或地圖功能,因此作業方式略有不同。 當您靠近信標時,所有的LED燈都會點亮,而且您越靠近它們,它們發出的光就越亮。
  • 它使用 radio.receive_full()命令獲取廣播強度讀數。 這提供了訊息,信號強度和時間戳記。 我們只想知道信號強度,因此我們使用 signal = message [1] 提取信號並將其儲存在名為 signal的變數中。
  • 信號強度可能在-98(最弱)到-45(最強)的範圍內,而且Python程式定義了function,稱為map來將此範圍內的數字轉換至0到9的範圍,我們可以使用該範圍來調整LED燈的亮度:0表示關閉,9表示LED可以最亮。 (您可能想在其他Python專案中重複使用此函數,因為它的工作原理與MakeCode中的 map 積木非常相似。)
  • Python程式創建一個 5x5 的圖片叫作light 使用light = Image(5,5) light.fill()命令更改其亮度。

你需要的東西

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

步驟2:編碼

發射器/信標

1from microbit import *
2import radio
3radio.config(group=1, power=1)
4radio.on()
5
6while True:
7    radio.send('1')
8    sleep(200)
9

接收器

1from microbit import *
2import radio
3radio.config(group=1)
4radio.on()
5light = Image(5,5) # create an empty image
6
7# function to map signal stength to LED brightness
8def map(value, fromMin, fromMax, toMin, toMax):
9    fromRange = fromMax - fromMin
10    toRange = toMax - toMin
11    valueScaled = float(value - fromMin) / float(fromRange)
12    return toMin + (valueScaled * toRange)
13
14while True:
15    message = radio.receive_full()
16    if message:
17        signal = message[1]
18        brightness = map(signal, -98, -44, 0, 9)
19        light.fill(round(brightness))
20        display.show(light)
21

步驟3:進階

  • 結合信標和接收器編碼,這樣您就可以擁有一個能夠完成兩項任務的micro:bit。
  • 製作腕帶,以便您佩戴來接近探測器
  • 當您相距1或2米時,信號的強度有多大? 修改編碼並在有人離得太近時觸發視覺或聽覺警報。
  • 使用以下程式製作尋寶遊戲:隱藏信標並將接收器編碼放在許多micro:bits上
  • 如果您在室外或大空間中,請透過更改發射器功率進行實驗。 可以是0到7之間的任何數字