步驟1:製作
利用無線電通訊將一組 micro:bit 變成一群神奇的螢火蟲
您將學到什麼
- 如何在 micro:bit 之間使用無線電通訊來觸發事件
- 讓 micro:bit 的 LED 螢幕變亮或者變暗
- 如何使用隨機的數字和機會來模仿真實世界的行為
它是什麼?
螢火蟲是利用生物體之發光(在其體內發出的光)來相互交流的昆蟲。
本項目利用 micro:bit 的無線電通訊功能來模擬真實世界中螢火蟲的行為。 Python 版本是由 Nicholas H. Tollervey 所創建的,而 MakeCode 版本就是以其為基礎創建的。
將該程式燒錄到同個房間內的至少三個 micro:bit 中。 按下任何一個 micro:bi 上的按鍵 A,您應該能看到「一群」micro:bit 收到無線電消息後被點亮。 在黑暗的房間裡面使用大量的 micro:bit 效果最佳。
一旦一個 micro:bit 收到無線電訊息後,它就有十分之一的機會來傳送自己的無線電訊息,從而讓另一波的 micro:bit 開始發光。
當燈光停止時,在任何一個 micro:bit 上按下按鍵 A 來重啟「一群」通訊。
運作方式
- 當您按下其中一個 micro:bit 上的按鍵 A 時,該程式會利用無線電通訊來傳送一個訊息「flash」。
- 當每一個 micro:bit 收到訊息後,它將會隨機地等待一段從 50 到 350 毫秒之間的時間。 然後它會讓 LED 螢幕閃爍變亮,再逐漸變暗,來模仿螢火蟲發光的樣子。
- 然後會再隨機產生一個從 0 到 9 的數字。 如果數字是 0 的話,它將會傳送自己的「flash」無線電訊息來觸發更多的 micro:bit 螢火蟲發光。 所以它有十分之一的機會來觸發其他的 micro:bit 發光。
- 您可以混搭舊版和新版的 micro:bit,但是他們都必須有燒錄自己的 MakeCode 或 Python 版本的程式。 (無線電通訊在每種程式語言中的工作方式都略有差異。 MakeCode 程式不能通過無線電與 Python 程式通信,反之亦然。)
你需要的東西
- 至少 3 個 micro:bit,越多越好
- micro:bit 電池組(選配)
步驟2:編碼
1# A micro:bit Firefly.
2# By Nicholas H.Tollervey. Released to the public domain.
3import radio
4import random
5from microbit import display, Image, button_a, sleep
6
7# Create the "flash" animation frames. Can you work out how it's done?
8flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]
9
10# The radio won't work unless it's switched on.
11radio.on()
12
13# Event loop.
14while True:
15 # Button A sends a "flash" message.
16 if button_a.was_pressed():
17 radio.send('flash') # a-ha
18 # Read any incoming messages.
19 incoming = radio.receive()
20 if incoming == 'flash':
21 # If there's an incoming "flash" message display
22 # the firefly flash animation after a random short
23 # pause.
24 sleep(random.randint(50, 350))
25 display.show(flash, delay=100, wait=False)
26 # Randomly re-broadcast the flash message after a
27 # slight delay.
28 if random.randint(0, 9) == 0:
29 sleep(500)
30 radio.send('flash') # a-ha
31
32
步驟3:進階
- 更改螢幕閃爍時展示的圖像
- 修改程式碼,使它可能較多或較少地在其他 micro:bit 上觸發另一個閃爍事件。 隨機數字的範圍可以與您擁有的 micro:bit 的數量匹配:如果您擁有較少的 micro:bit,就較會如此。
- 使用不同的無線電群組號碼來製作更小的螢火蟲群組。 只有相同群組號碼的 micro:bit 能夠互相通訊。
- 試驗改變無線電訊號的功率。
使用 MakeCode 中的「radio set transmit power」區塊。
在 Python 中,利用radio.config(power=7)
來
選擇一個介於 0 (最弱的無線電訊號) 和 7 (最強) 之間的數字。
改變無線電功率有什麼效果?
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.