micro:bit Pythonサンプルプログラム集

LED

前を見ている白フィッシャーくんと手を振っている青フィッシャーくん
from microbit import *      # マイクロビットのライブラリのインポート

display.off()               # マイクロビットのディスプレイを消す

pin16.write_digital(0)      # 16番ピンの出力を 0 (OFF) にする

while True:                 # ループ(繰り返し)する
    pin16.write_digital(1)  # 16番ピンのデジタル出力を 1(ON) にする
    sleep(500)              # 0.5秒間 スリープ(停止) する
    pin16.write_digital(0)
    sleep(500)              # 0.5秒間 スリープ(停止) する

配線:LEDランプをOUT1(P16)に接続します。

動作:LEDランプが点滅します。

DIDACTA
サンプルプログラム

LED×2

手を振っているフィッシャーくん
from microbit import *          # マイクロビットのライブラリのインポート

display.off()                   # マイクロビットのディスプレイを消す

pin16.write_digital(0)          # 16番ピンの出力を 0 (OFF) にする
pin15.write_digital(0)          # 15番ピンの出力を 0 (OFF) にする

while True:                     # ループ(繰り返し)する

    pin16.write_digital(1)      # 16番ピンのデジタル出力を 1(ON) にする
    sleep(500)                  # 0.5秒間 スリープ(停止) する
    pin16.write_digital(0)      # 16番ピンの出力を 0 (OFF) にする
    sleep(500)                  # 0.5秒間 スリープ(停止) する

    pin15.write_digital(1)      # 15番ピンのデジタル出力を 1(ON) にする
    sleep(500)                  # 0.5秒間 スリープ(停止) する
    pin15.write_digital(0)      # 15番ピンのデジタル出力を 1(ON) にする
    sleep(500)                  # 0.5秒間 スリープ(停止) する

配線:赤LEDランプをOUT1(P16)に接続し、緑LEDランプをOUT2(P15)に接続します。

動作:赤と緑のLEDランプが交互に点滅します。

DIDACTA
サンプルプログラム

LED×2 A Bボタン

ガッツポーズするフィッシャーくん
from microbit import *              # マイクロビットのライブラリのインポート

display.off()                       # マイクロビットのディスプレイを消す

pin16.write_digital(0)              # 16番ピンの出力を 0 (OFF) にする
pin15.write_digital(0)              # 15番ピンの出力を 0 (OFF) にする

while True:                         # ループ(繰り返し)する

    if button_b.get_presses():      # マイクロビットのボタンB が押されたら
        pin16.write_digital(1)      # 16番ピンのデジタル出力を 1(ON) にする
        sleep(500)                  # 0.5秒間 スリープ(停止) する
        pin16.write_digital(0)      # 16番ピンのデジタル出力を 0(OFF) にする

    if button_a.get_presses():      # マイクロビットのボタンA が押されたら
        pin15.write_digital(1)      # 15番ピンの出力を 1 (ON) にする
        sleep(500)                  # 0.5秒間 スリープ(停止) する
        pin15.write_digital(0)      # 15番ピンのデジタル出力を 0(OFF) にする

配線:赤LEDランプをOUT1(P16)に接続し、緑LEDランプをOUT2(P15)に接続します。

動作:マイクロビットのAボタンを押すと緑LEDランプ、Bボタンを押すと赤LEDランプが押している間点灯します。

DIDACTA
サンプルプログラム

スイッチ&LED - PUSH BUTTON (DIGITAL)

こちらを見ている青フィッシャーくんと
								手を振っている白フィッシャーくん
from microbit import *            # マイクロビットのライブラリのインポート

display.off()                     # マイクロビットのディスプレイを消す

pin16.write_digital(0)            # 16番ピンのデジタル出力を 0 (OFF) にする

while True:                       # ループ(繰り返し)する
    p1 = pin1.read_digital()      # p1 という変数へ 1番ピンで取得した デジタルの値を格納する

    if str(p1) == '1':            # p1 の値が '1'  のとき

        pin16.write_digital(1)    # 16番ピンのデジタル出力を 1 (ON) にする
        sleep(50)                 # 0.5秒間 スリープ(停止) する
        pin16.write_digital(0)    # 16番ピンのデジタル出力を 0 (OFF) にする

配線:LEDランプをOUT1(P16)に接続し、プッシュボタンをINPUT1(P1)に接続します。

動作:プッシュボタンを押している間LEDランプが点灯します。

DIDACTA
サンプルプログラム

フォトトランジスタ1 - PHOTO sensor (DIGITAL)

上体起こしをするフィッシャーくん
from microbit import *                  # マイクロビットのライブラリのインポート

display.off()                           # マイクロビットのディスプレイを消す

pin16.write_digital(0)                  # 16番ピンのデジタル出力を 0 (OFF) にする

while True:                             # ループ(繰り返し)する
    p1 = pin1.read_digital()            # p1 という変数へ 1番ピンで取得した デジタルの値を格納する

    if str(p1) == '0':                  # p1 の値が '0'  のとき

        pin16.write_digital(1)          # 16番ピンのデジタル出力を 1 (ON) にする
        sleep(50)                       # 0.5秒間 スリープ(停止) する
        pin16.write_digital(0)          # 16番ピンのデジタル出力を 0 (OFF) にする

配線:LEDランプをOUT1(P16)に接続し、カラーセンサーをINPUT1(P1)に接続します。

動作:カラーセンサーが明るさを判別して、暗くなるとLEDランプが点灯します。

DIDACTA
サンプルプログラム

フォトトランジスタ2 - PHOTO sensor (DIGITAL) 2

腕立て伏せをするフィッシャーくん
from microbit import *                       # マイクロビットのライブラリのインポート

display.off()                                # マイクロビットのディスプレイを消す

pin16.write_digital(0)                       # 16番ピンのデジタル出力を 0 (OFF) にする

while True:                                  # ループ(繰り返し)する
    p1 = pin1.read_digital()                 # p1 という変数へ 1番ピンで取得した デジタルの値を格納する

    if p1 == 0:                              # p1 の値が 0  のとき

        pin16.write_digital(0)               # 16番ピンのデジタル出力を 0 (OFF) にする

    if p1:                                   # p1 の値が 1  のとき

        pin16.write_digital(1)               # 16番ピンのデジタル出力を 1 (ON) にする

配線:LEDランプをOUT1(P16)に接続し、カラーセンサーをINPUT1(P1)に接続します。

動作:カラーセンサーが明るさを判別して、暗くなるとLEDランプが消灯します。

DIDACTA
サンプルプログラム

フォトトランジスタ3 - PHOTO sensor (DIGITAL) B

背中を合わせながら何かを語っているフィッシャーくん
from microbit import *                      # マイクロビットのライブラリのインポート

display.off()                               # マイクロビットのディスプレイを消す

pin16.write_digital(0)                      # 16番ピンのデジタル出力を 0 (OFF) にする

while True:                                 # ループ(繰り返し)する
    p1 = pin1.read_digital()                # p1 という変数へ 1番ピンで取得した デジタルの値を格納する

    if p1 == 1:                             # p1 の値が 1  のとき

        pin16.write_digital(0)              # 16番ピンのデジタル出力を 0 (OFF) にする

    if not p1:                              # p1 の値が  1 でないとき

        pin16.write_digital(1)              # 16番ピンのデジタル出力を 1 (ON) にする

配線:LEDランプをOUT1(P16)に接続し、カラーセンサーをINPUT1(P1)に接続します。

動作:カラーセンサーが明るさを判別して、暗くなるとLEDランプが点灯します。

DIDACTA
サンプルプログラム

フォトトランジスタ4 - PHOTO sensor (ANALOG)

背中を合わせながら語り合っているフィッシャーくん
from microbit import *                     # マイクロビットのライブラリのインポート

display.off()                              # マイクロビットのディスプレイを消す

pin16.write_digital(0)                     # 16番ピンのデジタル出力を 0 (OFF) にする

while True:                                # ループ(繰り返し)する
    p1 = pin1.read_analog()                # p1 という変数へ 1番ピンで取得した デジタルの値を格納する

    print(p1)                              # p1 の値を出力 (パソコン画面に)する

    if p1 <= 550:                          # p1 の値が550以下なら ※動作させる環境により異なります

        pin16.write_digital(0)             # 16番ピンのデジタル出力を 0 (OFF) にする

    if p1 > 550:                           # p1 の値が550より大きければ ※動作させる環境により異なります

        pin16.write_digital(1)             # 16番ピンのデジタル出力を 1 (ON) にする

配線:LEDランプをOUT1(P16)に接続し、カラーセンサーをINPUT1(P1)に接続します。

動作:カラーセンサーが明るさを判別して、暗くなるとLEDランプが消灯します。

DIDACTA
サンプルプログラム

フォトトランジスタ5 - PHOTO sensor (ANALOG) - RECOGNIZING BLACK LINE

カラーセンサーの上に座っているフィッシャーくん
from microbit import *              # マイクロビットのライブラリのインポート

display.off()                       # マイクロビットのディスプレイを消す


pin16.write_digital(0)              # 16番ピンのデジタル出力を 0 (OFF) にする

while True:                         # ループ(繰り返し)する
    p1 = pin1.read_analog()         # p1 という変数へ 1番ピンで取得した アナログの値を格納する

    print(p1)                       # p1 の値を 出力 (パソコン画面に)する

    if p1 <= 350:                   # p1の値が 350 以下なら ※動作させる環境により異なります

        pin16.write_digital(0)      # 16番ピンのデジタル出力を 0 (OFF) にする

    if p1 > 350:                    # p1の値が 350より大きければ ※動作させる環境により異なります

        pin16.write_digital(1)      # 16番ピンのデジタル出力を 1 (ON) にする

配線:LEDランプをOUT1(P16)に接続し、カラーセンサーをINPUT1(P1)に接続します。

動作:カラーセンサーが黒いラインを読み取ると、LEDランプが消灯します。

DIDACTA
サンプルプログラム

カラーセンサー - COLOR recognition

白フィッシャーくんの背中を押している青フィッシャーくん
from microbit import *           # マイクロビットのライブラリのインポート

display.off()                   # マイクロビットのディスプレイを消す

pin16.write_digital(0)          # 16番ピンのデジタル出力を 0 (OFF) にする

pin8.write_digital(1)           # 8番ピンのデジタル出力を 1 (ON) にする

while True:                     # ループ(繰り返し)する
    p1 = pin1.read_analog()     # p1 という変数へ 1番ピンで取得した アナログの値を格納する

    print(p1)                   # p1 の値を 出力 (パソコン画面に)する

    if p1 <= 100:            # p1 の値が 100以下なら
        pin14.write_digital(1)  # 14番ピンのデジタル出力を 1 (ON) にする
        pin15.write_digital(0)  # 15番ピンのデジタル出力を 0 (OFF) にする
        pin16.write_digital(0)  # 16番ピンのデジタル出力を 0 (OFF) にする

    if p1 >= 550:            # p1 の値が 550以下なら
        pin16.write_digital(1)  # 16番ピンのデジタル出力を 1 (ON) にする
        pin15.write_digital(0)  # 15番ピンのデジタル出力を 0 (OFF) にする
        pin14.write_digital(0)  # 14番ピンのデジタル出力を 0 (OFF) にする

    if p1 < 550 and p1 > 100:  # p1 の値が 550 よりも小さく 100 よりも大きいなら
        pin15.write_digital(1)  # 15番ピンのデジタル出力を 1 (ON) にする
        pin16.write_digital(0)  # 16番ピンのデジタル出力を 0 (OFF) にする
        pin14.write_digital(0)  # 14番ピンのデジタル出力を 0 (OFF) にする

配線:赤LEDランプをOUT1(P16)、緑LEDランプをOUT2(P15)、白LEDランプをOUT3(P14)に接続します。そして、カラーセンサーをINPUT1(P1)に接続します。

動作:カラーセンサーによって読み取られた色の暗明により、各LEDランプが点灯します。

DIDACTA
サンプルプログラム

DCモーター A Bボタン - ROTATION CONTROL

万歳をしているフィッシャーくん
from microbit import *           # マイクロビットのライブラリのインポート

display.off()                    # マイクロビットのディスプレイを消す

pin16.write_digital(0)           # 16番ピンのデジタル出力を 0 (OFF) にする
pin15.write_digital(0)           # 15番ピンのデジタル出力を 0 (OFF) にする

while True:                      # ループ(繰り返し)する
    if button_b.was_pressed():   # マイクロビットのBボタンを押したとき
        pin16.write_digital(1)      # 16番ピンのデジタル出力を 1 (ON) にする
        pin15.write_digital(0)      # 15番ピンのデジタル出力を 0 (OFF) にする
        sleep(500)                  # 0.5秒間スリープ(停止)する
        pin16.write_digital(0)      # 16番ピンのデジタル出力を 0 (OFF) にする

    if button_a.was_pressed():  # マイクロビットのBボタンを押したとき
        pin16.write_digital(0)      # 16番ピンのデジタル出力を 0 (OFF) にする
        pin15.write_digital(1)      # 15番ピンのデジタル出力を 1 (ON) にする
        sleep(500)                  # 0.5秒間スリープ(停止)する
        pin15.write_digital(0)      # 15番ピンのデジタル出力を 0 (OFF) にする

配線:モーターをOUT1(P16)に接続します。

動作:マイクロビットのAボタンを押すと、プロペラは『反時計方向』に回転します。Bボタンを押すと、プロペラは『時計方向』に回転します。プロペラはモーターへの極性が変わることで回転方向が変わります。

DIDACTA
サンプルプログラム

ポテンショメーター

青フィッシャーくんを慰めている白フィッシャーくん
from microbit import *      # マイクロビットのライブラリのインポート
display.off()               # マイクロビットのディスプレイを消す

pin0.write_digital(0)       # 0番ピンのデジタル出力を 0  にする

pin13.write_digital(1)      # 13番ピンのデジタル出力を 1 (ON) にする
pin14.write_digital(1)      # 14番ピンのデジタル出力を 1 (ON) にする
pin15.write_digital(1)      # 15番ピンのデジタル出力を 1 (ON) にする
sleep(500)                  # 0.5秒間 スリープ(停止) する
pin13.write_digital(0)      # 13番ピンのデジタル出力を 0 (OFF) にする
pin14.write_digital(0)      # 15番ピンのデジタル出力を 0 (OFF) にする
pin15.write_digital(0)      # 14番ピンのデジタル出力を 0 (OFF) にする

while True:                 # ループ(繰り返し)する

    p0 = pin0.read_analog()   # p0という変数へ 0番ピンのアナログの値を格納する
    print("p0: " + str(p0))          # p0 の値を出力(パソコンの画面に)する

    if p0 > 100 and p0 < 400:    # p0の値が 100 より大きい かつ 400 より小さければ  
        pin13.write_digital(1)      # 13番ピンのデジタル出力を 1 (ON) にする
    else:                        # それ以外ならば
        pin13.write_digital(0)      # 13番ピンのデジタル出力を 0 (OFF) にする

    if p0 > 400 and p0 < 700:    # p0の値が 400 より大きい かつ 700 より小さければ
        pin14.write_digital(1)      # 14番ピンのデジタル出力を 1 (ON) にする
    else:                        # それ以外ならば
        pin14.write_digital(0)      # 14番ピンのデジタル出力を 0 (OFF) にする

    if p0 > 700:                 # p0の値が 700 よりも大きいなら
        pin15.write_digital(1)      # 15番ピンのデジタル出力を 1 (ON) にする
    else:                        # それ以外ならば
        pin15.write_digital(0)      # 15番ピンのデジタル出力を 0 (OFF) にする
    sleep(50)                    # 0.5秒間 スリープ(停止) する

配線:ポテンショメーターをOUT+5V、OUT8、INPUT(P0)に接続します。

動作:ポテンショメーターを回すと入力値によって各LEDランプが点灯します。

DIDACTA
サンプルプログラム

エンコーダーモーター - COUNTER CONTROL

座ってこちらを見ているフィッシャーくん
from microbit import *          # マイクロビットのライブラリのインポート

display.off()                   # マイクロビットのディスプレイを消す

pin15.write_digital(0)          # 15番ピンのデジタル出力を 0 (OFF) にする
pin16.write_digital(0)          # 16番ピンのデジタル出力を 0 (OFF) にする

while True:                     # ループ(繰り返し)する
    if button_a.get_presses():      # マイクロビットのAボタンを押したとき
        pin15.write_digital(0)          # 15番ピンのデジタル出力を 0 (OFF) にする
        pin16.write_digital(1)          # 16番ピンのデジタル出力を 1 (ON) にする
        count = 0                       # count という変数を0にする

        while count < 23:                   # count が 23より小さい間ループ繰り返す
            if pin1.read_analog() < 10:     # 1番ピンのアナログの値が 10 よりも小さいときに
                count = count + 1                # count の値を +1 する
                pin16.write_digital(0)           # 16番ピンのデジタル出力を 0 (OFF) にする
                sleep(50)                        # 0.5秒間 停止(スリープ)する
                pin16.write_digital(1)           # 16番ピンのデジタル出力を 0 (OFF) にする
                sleep(10)                        # 0.1秒間 停止(スリープ)する
        pin16.write_digital(0)                  # 16番ピンのデジタル出力を 0 (OFF) にする

    if button_b.get_presses():      # マイクロビットのAボタンを押したとき
        pin15.write_digital(0)       # 15番ピンのデジタル出力を 0 (OFF) にする
        pin16.write_digital(1)       # 16番ピンのデジタル出力を 1 (ON) にする
        count = 0                    # count という変数を0にする

        while count < 76:           # count が 76より小さい間ループ繰り返す
            if pin1.read_analog() < 10:  # 1番ピンのアナログの値が 10 よりも小さいときに
                count = count + 1         # count の値を +1 する
        pin16.write_digital(0)            # 16番ピンのデジタル出力を 0 (OFF) にする

配線:モーターをOUT1(P16)に、カウンタ電源(緑と赤のワイヤー)はOUT+5Vに、信号線はP1に接続します。

動作:マイクロビットのAボタンを押すと、エンコーダーモーターは『反時計方向』に一定数回転します。Bボタンを押すと、エンコーダーモーターは『時計方向』に一定数回転します。モーターへの極性が変わることで回転方向が変わります。

DIDACTA
サンプルプログラム

ステップモーター

from microbit import *          # マイクロビットのライブラリのインポート

display.off()                   # マイクロビットのディスプレイを消す

pin8.write_digital(0)           # 8番ピンのデジタル出力を 0 (OFF) にする  - 1 とする
pin9.write_digital(0)           # 9番ピンのデジタル出力を 0 (OFF) にする  - 2 とする
pin10.write_digital(0)          # 10番ピンのデジタル出力を 0 (OFF) にする - 3 とする
pin12.write_digital(0)          # 12番ピンのデジタル出力を 0 (OFF) にする - 4 とする

speed = 1                       # スリープの間隔の値の変数(ミリ秒)

while True:                     # ループ(繰り返し)する
    if button_a.get_presses():  # マイクロビットのAボタンを押したとき
        for n in range(12):
            pin8.write_digital(1)   # 1
            pin10.write_digital(1)  # 3
            sleep(speed)                # speed分 スリープする
            pin8.write_digital(0)   # 1
            pin10.write_digital(0)  # 3

            pin8.write_digital(1)   # 1
            pin12.write_digital(1)  # 4
            sleep(speed)                # speed分 スリープする
            pin8.write_digital(0)   # 1
            pin12.write_digital(0)  # 4

            pin9.write_digital(1)   # 2
            pin12.write_digital(1)  # 4
            sleep(speed)                # speed分 スリープする
            pin9.write_digital(0)   # 2
            pin12.write_digital(0)  # 4

            pin9.write_digital(1)   # 2
            pin10.write_digital(1)  # 3
            sleep(speed)                # speed分 スリープする
            pin9.write_digital(0)   # 2
            pin10.write_digital(0)  # 3

    if button_b.get_presses():  # マイクロビットのBボタンを押したとき
        for n in range(12):
            pin8.write_digital(1)   # 1
            pin10.write_digital(1)  # 3
            sleep(speed)                # speed分 スリープする
            pin8.write_digital(0)   # 1
            pin10.write_digital(0)  # 3

            pin8.write_digital(1)   # 1
            sleep(speed)                # speed分 スリープする
            pin8.write_digital(0)   # 1

            pin8.write_digital(1)   # 1
            pin12.write_digital(1)  # 4
            sleep(speed)                # speed分 スリープする
            pin8.write_digital(0)   # 1
            pin12.write_digital(0)  # 4

            pin12.write_digital(1)  # 4
            sleep(speed)                # speed分 スリープする
            pin12.write_digital(0)  # 4

            pin9.write_digital(1)   # 2
            pin12.write_digital(1)  # 4
            sleep(speed)                # speed分 スリープする
            pin9.write_digital(0)   # 2
            pin12.write_digital(0)  # 4

            pin9.write_digital(1)   # 2
            sleep(speed)                # speed分 スリープする
            pin9.write_digital(0)   # 2

            pin9.write_digital(1)   # 2
            pin10.write_digital(1)  # 3
            sleep(speed)                # speed分 スリープする
            pin9.write_digital(0)   # 2
            pin10.write_digital(0)  # 3

            pin10.write_digital(1)  # 3
            sleep(speed)                # speed分 スリープする
            pin10.write_digital(0)  # 3

配線:モーターをOUT1(P16)に、カウンタ電源(緑と赤のワイヤー)はOUT+5Vに、信号線はP1に接続します。

動作:AボタンとBボタンのそれぞれでフルステップとハーフステップでモータを制御できます。スピードはdelayコマンドで調整することができます。また、正確な制御のためにステップカウンターがプログラムに必要になります。

DIDACTA
サンプルプログラム