MicroPython輸出入接腳控制

以下的程式是用來偵測第0支輸出入接腳(pin0, P0)是某導通,如果你在那個接腳加上一個實際的按鈕,就可以用來偵測該按鈕是否有被按下去過。

from microbit import *
display.show(Image.HAPPY)
while True:
if pin0.is_touched():
display.show(Image.HEART)

當第一眼看到micro:bit時,不知道同學們是否被那麼多金屬的接腳吸引到?雖然不是每一支接腳都可以拿來作為輸出入使用,但是可以用的接腳其實也夠多了。先來看看接腳有哪些:

利用擴充接頭和麵包板,這次我們接出4個LED並排如下:

程式如下:

from microbit import *
leds = [pin0, pin1, pin2, pin8]
while True:
for led in leds:
led.write_digital(1)
sleep(200)
led.write_digital(0)

在程式的第3行中同學們有沒有注意到我們使用的腳位?從pin0, pin1, pin2,接下來是pin8?第4個LED沒有使用pin4的原因是它其實有其它的用途。事實上,3, 4, 6, 7, 9, 10是和板子上的LED矩陣共用的,而第5和第11個pin則是按鈕A和按鈕B,所以我們在輸出時就把這幾個接腳避開了。不過,如果接腳真的不夠用的話,把display(也就是LED矩陣)關閉的話,那幾支和它共用的接腳就可以使用了。接下來我們就把LED關閉,外接上8個LED試試,請看以下的連接照片:

在這個例子中我們就把LED矩陣顯示器先關閉,程式編寫如下:

from microbit import *
leds = [pin0, pin1, pin2, pin3, pin4, pin6, pin7, pin8]
display.off()
while True:
for led in leds:
led.write_digital(1)
sleep(50)
led.write_digital(0)
for led in reversed(leds):
led.write_digital(1)
sleep(50)
led.write_digital(0)

在這個程式中的第3行裡面的leds串列中詳列了所有要用來外接顯示LED的針腳,從pin0到pin8,中間只有pin5被跳過,原因是這個針腳是和按鈕A共用的,所以並不適合拿來做輸出信號之用。另外,和前一支程式不同的地方在於我們加上了一個迴圈(第10行到第13行),這個迴圈進行LED反向顯示的功能,如此就可以讓程式可以正反來回顯示LED燈號。程式的執行結果如下: