micro:bit Micropython API

microbit モジュール

ハードウェアと相互に直接関係するものはすべて microbit モジュールにあります。使いやすさを考慮して、すべてのスクリプトは次の方法で起動することをお勧めします:

from microbit import *

以下のドキュメントは、これを行ったことを前提としています。

いくつかの関数が直接利用できます:

# 指定したミリ秒数だけ休止します。
sleep(ms)
# micro:bit の電源が入ってから経過したミリ秒数を返します。
running_time()
# micro:bit をパニックモードにします(これは通常、デバイス抽象レイヤーがメモリ不足になったときに
# 起き、ディスプレイに悲しい顔が出ます)。エラーコードには任意の整数値を指定できます。
panic(error_code)
# micro:bit をリセットします。
reset()\# micro:bit の組込みスピーカーやエッジコネクタ端子に繋いだ外部スピーカー/ヘッドフォンの
# 出力ボリュームを設定します(0-255)。
set_volume(128)    # V2

残りの機能は、後述するように microbit モジュール内のオブジェクトおよびクラスによって提供されます。

ここで使った API は数値として整数だけを利用しています(つまり、浮動小数点数は必要ないということですが、受け付けるものもあります)。したがって標準の時間単位にはミリ秒を使用します。

注釈

利用できるモジュールの一覧は REPL で help('modules') とすることで参照できます。

ボタン

2つのボタンがあります:

button_a
button_b

これらはどちらもオブジェクトであり、次のメソッドがあります:

# メソッドを呼んだときにボタンが押されているかにより True または False
# を返します。
button.is_pressed()
# デバイスが始動まやは前回にこのメソッドが呼び出されてからボタンが
# 押されたかにより True または False を返します。
button.was_pressed()
# ボタン押下の回数を返し、このカウンタをゼロにリセットします。
button.get_presses()

ディスプレイ

LED ディスプレイは display オブジェクトを介して利用します:

# ピクセル (x, y)の照度を得ます。照度は 0 (ピクセルがオフ)から 9 (ピクセルが最大照度)
# までの値をとります。
display.get_pixel(x, y)
# ピクセル (x, y)の照度に val (0 [オフ] から 9 [最大照度] の範囲)
# を設定します。
display.set_pixel(x, y, val)
# ディスプレィをクリアします。
display.clear()
# イメージを表示します。
display.show(image, delay=0, wait=True, loop=False, clear=False)
# iterable のイメージまたは文字のそれぞれを delay ミリ秒間隔で表示する。
display.show(iterable, delay=400, wait=True, loop=False, clear=False)
# 文字列 string をディスプレイでスクロールします(メッセージを表示するなら display.show
# よりも効果的)。
display.scroll(string, delay=400)

サウンドイベント V2

サウンドイベントはマイクから入力された音の変化を表します:

# 拍手や叫び声のように「静かな音」(`quiet`)から「大きな音」(`loud`)への変化を
# 表す値です。
SoundEvent.LOUD = SoundEvent('loud')
# 発話やBGMのように「大きな音」(`loud`)から「静かな音」(`quiet`)への変化を
# 表す値です。
SoundEvent.QUIET = SoundEvent('quiet')

マイク V2

マイクには microphone オブジェクトでアクセスします:

# 記録されている最新のサウンドイベントの名前を返します。
current_event()
# サウンドイベントには `SoundEvent.LOUD` と `SoundEvent.QUIET` があります。
# 直前の呼出しから少なくとも一度は指定のサウンドイベントが発生した場合は `true` 、
# そうでない場合は `false` を返します。
was_event(event)
# イベント履歴のタプルを返します。最新のものが最後に表示されます。
# また、戻る前にサウンドイベントの履歴をクリアします。
get_events()
# 0-255 の範囲の閾値レベル# たとえば `set_threshold(SoundEvent.LOUD, 250)` は音が非常に
# 大きい場合にのみトリガされます(>= 250)。
set_threshold(128)
# 0-255の範囲で表される音圧レベルを返します。
sound_level()

端子

コネクタの端子、 V2 ロゴ、 V2 スピーカーにデジタルおよびアナログの入出力機能を提供します。一部の端子は LED マトリクスとボタンを駆動する I/O に内部接続されています。

各端子は microbit モジュールで直接オブジェクトとして提供されます。これにより API が比較的フラットに保たれ、利用が非常に簡単になります。

  • pin0
  • pin1
  • ...
  • pin15
  • pin16
  • 注意: P17-P18 は利用できません。
  • pin19
  • pin20
  • pin_logo V2
  • pin_speaker V2

これらの端子はそれぞれ MicroBitPin クラスのインスタンスであり、次のAPIを提供します。

# 値 value を 0, 1, False, True のいずれかにできます。
pin.write_digital(value)
# 1 か 0 を返します。
pin.read_digital()
# value は 0 から 1023 の範囲の値です。
pin.write_analog(value)
# 0 から 1023 の範囲の整数値を返します。
pin.read_analog()
# 端子の PWM 出力周期をミリ秒単位で設定します。
# (https://ja.wikipedia.org/wiki/パルス幅変調 を参照)
pin.set_analog_period(int)
# 端子の PWM 出力周期をマイクロ秒単位で設定します。
# (https://ja.wikipedia.org/wiki/パルス幅変調 を参照)
pin.set_analog_period_microseconds(int)
# タッチ端子 0, 1, 2 のみ使えます。端子に触れているかをブール値で返します。
pin.is_touched()
# micro:bit V2 ではロゴも使えます。
# タッチモードの設定。value には RESISTIVE または CAPACITIVE を指定できます。
pin.set_touch_mode(value)

V2 とマークしてあるピンは特殊で、以下の API を提供しています:

pin_logo:

# ロゴにタッチしたかを示す真偽値をかえします
pin_logo.is_touched()
# タッチモードの設定。value には RESISTIVE または CAPACITIVE を指定できます。
pin.set_touch_mode(value)

pin_speaker:

先述した MicroBitPin ですが、 pin.is_touched() はありません。

イメージ

注釈

いつも自分でイメージを作成する必要はありません。 display.image を使用してディスプレイに表示されるイメージに直接アクセスできます。 display.image は Image の単なるインスタンスなので、同じメソッドをすべて使用できます。

イメージ API

# 空の 5x5 イメージを作成。
image = Image()
# 文字列からイメージを作成 - 文字列中の各文字は LED を表す - 0 (またはスペース)はオフ、
# "9 は最大照度。コロン ":" は行の終端を示します。
image = Image('90009:09090:00900:09090:90009:')
# 与えたサイズの空のイメージを作成します。
image = Image(width, height)
# 指定の width と height でイメージを初期化します。buffer は長さが
# width * height の配列です。
image = Image(width, height, buffer)

# メソッド
# イメージの width (最大 5)を返します。
image.width()
# イメージの height (最大 5)を返します。
image.height()
# 指定の位置のピクセルを設定します(0 から 9 の範囲)。組込みのイメージでは
# 失敗します。
image.set_pixel(x, y, value)
# 指定の位置のピクセルを得ます(0 から 9 の範囲)。
image.get_pixel(x, y)
# イメージを左に 'n' 回シフトした新しいイメージを返します。
image.shift_left(n)
# イメージを右に 'n' 回シフトした新しいイメージを返します。
image.shift_right(n)
# イメージを上に 'n' 回シフトした新しいイメージを返します。
image.shift_up(n)
# イメージを下に 'n' 回シフトした新しいイメージを返します。
image.shift_down(n)
# イメージのコンパクトな文字列表現を得ます。
repr(image)
# イメージのより可読性のある文字列表現を得ます。
str(image)

#演算子
# 2つのイメージを重ね合わせた新しいイメージを返します。
image + image
# 各ピクセルの照度に n を掛けた新しいイメージを返します。
image * n

組込みのイメージ

Image.HEART Image.HEART_SMALL Image.HAPPY Image.SMILE Image.SAD Image.CONFUSED Image.ANGRY Image.ASLEEP Image.SURPRISED Image.SILLY Image.FABULOUS Image.MEH Image.YES Image.NO Image.TRIANGLE Image.TRIANGLE_LEFT Image.CHESSBOARD Image.DIAMOND Image.DIAMOND_SMALL Image.SQUARE Image.SQUARE_SMALL Image.RABBIT Image.COW Image.MUSIC_CROTCHET Image.MUSIC_QUAVER Image.MUSIC_QUAVERS Image.PITCHFORK Image.XMAS Image.PACMAN Image.TARGET Image.TSHIRT Image.ROLLERSKATE Image.DUCK Image.HOUSE Image.TORTOISE Image.BUTTERFLY Image.STICKFIGURE Image.GHOST Image.SWORD Image.GIRAFFE Image.SKULL Image.UMBRELLA Image.SNAKE

時計のイメージ

Image.CLOCK1 Image.CLOCK2 Image.CLOCK3 Image.CLOCK4 Image.CLOCK5 Image.CLOCK6 Image.CLOCK7 Image.CLOCK8 Image.CLOCK9 Image.CLOCK10 Image.CLOCK11 Image.CLOCK12

矢印のイメージ

Image.ARROW_N Image.ARROW_NE Image.ARROW_E Image.ARROW_SE Image.ARROW_S Image.ARROW_SW Image.ARROW_W Image.ARROW_NW

次のものは、アニメーションを自動的に表示したり、手動で反復処理したりするのに便利なイメージの Python リストです。

Image.ALL_CLOCKS Image.ALL_ARROWS

加速度センサー

加速度センサーは accelerometer オブジェクトを介して利用します:

# デバイスの X 軸を読みます。ミリg単位で計測します。
accelerometer.get_x()
# デバイスの Y 軸を読みます。ミリg単位で計測します。
accelerometer.get_y()
# デバイスの Z 軸を読みます。ミリg単位で計測します。
accelerometer.get_z()
# X, Y, Z の3軸すべてを(この順番の並びで)得ます。
accelerometer.get_values()
# 現在のジェスチャの名前を返します。
accelerometer.current_gesture()
# 指定の名前のジェスチャが現在行われているかにより True または False を返します。
accelerometer.is_gesture(name)
# 最後に呼び出されてから、指定の名前のジェスチャが行われたかにより True または False を
# 返します。
accelerometer.was_gesture(name)
# ジェスチャの履歴のタプルを返します。直近のものが最後に並びます。
accelerometer.get_gestures()

認識ジェスチャーは以下のとおりです: up, down, left, right, face up, face down, freefall, 3g, 6g, 8g, shake

コンパス

コンパスは compass コンパスオブジェクトを介して利用します:

# コンパスを調整します(これは正確な計測のために必要です)。
compass.calibrate()
# "北" からの相対角度を示す数値を返します。
compass.heading()
# micro:bit の周りの磁場の強度を示す数値を返します。
compass.get_field_strength()
# コンパスが調整されているかにより True または False を返します。
compass.is_calibrated()
# コンパスの調整されていた状態をリセットします。
compass.clear_calibration()

I2C バス

micro:bit には I2C バスがあり、 i2c オブジェクトを介して利用します。このオブジェクトには以下のメソッドがあります:

# アドレス addr のデバイスから n バイト読み込みます。repeat=True はストップビットが
# 送信されないことを意味します。
i2c.read(addr, n, repeat=False)
# アドレス addr のデバイスに buf を書き出します。repeat=True はストップビットが
# 送信されないことを意味します。
i2c.write(addr, buf, repeat=False)

サウンド V2

micro:bit V2 には、表現力豊かなサウンドのセットが用意されています。microbitモジュールを介してアクセスし、 audio モジュールで再生できます。

組込みのサウンド

Sound.GIGGLE Sound.HAPPY Sound.HELLO Sound.MYSTERIOUS Sound.SAD Sound.SLIDE Sound.SOARING Sound.SPRING Sound.TWINKLE Sound.YAWN

スピーカー V2

スピーカーはデフォルトで有効になっていて、 speaker オブジェクトを使ってアクセスできます。無効化や有効化することもできます:

# 組込みのスピーカーを無効化します
speaker.off()
# 組込みのスピーカーを有効化します
speaker.on()
# スピーカーは有効であるか無効であるかによって True または False を返すます
speaker.is_on()

UART

I/O 端子に接続されたシリアルデバイスとの通信には uart を使います:

# ボーレート 9600 で(端子 0 [TX] と 1 [RX] を使う)通信をセットアップします。
uart.init()
# 読込みを待っている文字を受信しているかにより True または False を
# 返します。
uart.any()
# 受信している文字を n だけ読んで返します。
uart.read(n)
# 受信している文字を可能なだけ(読んで)返します。
uart.read()
# 改行文字に達するまでのすべての文字を(読んで)返します。
uart.readline()
# 指定のバッファにバイト列を読み込みます。
uart.readinto(buffer)
# 接続したデバイスにバッファのバイト列を書き出します。
uart.write(buffer)