BBC Micro:bitのプルダウン抵抗2の記事でプルダウン抵抗を組み立ててみた。

これから本題のマイクロビットの標準機能のプルダウン抵抗について見ていきたい。


まずは下記のコードを試した。

from microbit import *

pu = pin0.get_pull()
display.scroll(pu)

フラッシングが終了した時点で下記のエラーが出力された。

line3 valueError Pin 0 in unused mode.

GPIO 0 ピンを使っていないとどうやらエラーになるらしい。

念の為に下記のコードも試してみた。

from microbit import *

md = pin0.get_mode()
display.scroll(md)

結果は下記になった。

unused




上記の状態のままにして、下記のコードを作成してみた。

from microbit import *

while True:
    # デジタル信号を受け取った後に改めて、モードとPULLの設定を確認する
    if pin0.read_digital():
        md = pin0.get_mode()
        display.scroll(md)
        sleep(500)
        pu = pin0.get_pull()
        display.scroll(pu)

実行結果は下記の通り。

read_digital
0

どうやら、GPIOピンで何らかの事をすると、自動でモードとプルの設定が行われるらしい。

ただ、get_pull()の結果の 0 の意味が何なのか?がわからない。




get_pull()からどんな値が返ってくるのか?を把握するために下記のコードを試した。

from microbit import *

while True:
	pin0.set_pull(pin0.PULL_UP)
	sleep(500)
	pu = pin0.get_pull()
	display.scroll(pu)
	sleep(500)
	pin0.set_pull(pin0.PULL_DOWN)
	sleep(500)
	pu = pin0.get_pull()
	display.scroll(pu)
	sleep(500)
	pin0.set_pull(pin0.NO_PULL)
	sleep(500)
	pu = pin0.get_pull()
	display.scroll(pu)
	sleep(500)

実行結果から、

PULL_UP:0

PULL_DOWN:1

NO_PULL:2

であることがわかった。


この結果から、GPIOピンでread_digital()をすると、自動でPULL_UP(プルアップ抵抗)に設定されるらしい。




マイクロビットの標準機能である内蔵されたプルダウン抵抗を使ってみる為に下記のコードを試した。

from microbit import *

display.show(Image.SAD)

pin0.set_pull(pin0.PULL_DOWN)

while True:
    if pin0.read_digital():
        display.show(Image.HAPPY)
        sleep(2000)
        display.show(Image.SAD)

勇気を出して、自作のプルダウン抵抗を外してみた。



実行結果はショートすることなく、BBC Micro:bitのプルダウン抵抗1の動画と同じになった。