Micro:bit 的網路設計

經常在我們設計一個產品時,產品內的一個晶片行為會影響到下一個晶片的行為,這時我們會在產品內設計一個傳遞訊息的網路,來達到訊息互通的目的。Micro:bit 也有這樣的功能,透過其下Pin0 到Pin2 這三個接腳,可以輸出或輸入訊息,並且透過訊息的接收,進而觸發下一個行為。

要送出資訊與接收資訊我們用下列格式來傳遞訊息:

pin1.write_digital(1)  # 讓訊號開啟
pin1.write_digital(0)  # 讓訊號關閉
input = pin2.read_digital()  # 取得訊號 (可能是 1 或 0)

我們用write_digital() 這個函數把訊號寫入,這裡的參數1 代表訊號開啟,0代表訊號關閉,讀取時用read_digital() 來接收訊號,接收的值會是0 或是1。透過這簡單的訊號輸出和輸入的動作,我們可以設計兩個小程式,分別刷在兩台Micro:bit 上。我們的目標是當一台(綠色的)Micro:bit 按下A 鍵時,LED螢幕顯示愛心的符號,否則就顯示開心的符號。並且我們希望透過網路的連結控制另外一台(紅色的)Micro:bit 也同步第一台Micro:bit 的顯示。要如何做到這樣的結果呢?

第一台(綠色的)Micro:bit 程式如下:

from microbit import *
while True:
    if button_a.is_pressed():
        pin0.write_digital(1)
        display.show(Image.HEART)
    else:
        pin0.write_digital(0)
        display.show(Image.HAPPY)

 第二台(紅色的)Micro:bit 程式如下:

from microbit import *
while True:
    input = pin2.read_digital()
    if input:
        display.show(Image.HEART)
    else:
        display.show(Image.HAPPY)

 

將程式分別刷在兩台機器之後,我們要留意配線的方式。如下圖:

2124642F 8D6A 4265 8DF5 AF87A9D6BE5B

因為綠色的Micro:bit 是透過Pin0 將資料輸出,紅色的Micro:bit 是透過Pin2來接收資料,因此紅色的線要連接Pin0 和Pin2。黑色的線是為了做出一個電子通路,所以分別接在兩台Micro:bit 的GND 上。

我們可以看看兩台Micro:bit 同步顯示圖像的成果。