micro:bit Micropython API

警告

1.0 リリースに向けて作業中のため、このAPIは頻繁に変更される可能性があります。このページは、現時点での micro:bit API を反映していて、開発者向けのものです(必ずしも子供に優しいわけではありません)。開発者以外の人が情報を探すのには、このドキュメンテーションに関連しているチュートリアルが適しています。

The microbit モジュール

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

from microbit import *

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

いくつかの機能が直接利用可能です:

# 指定したミリ秒数だけ休止します。
sleep(ms)
# micro:bit の電源が入ってから経過したミリ秒数を返します。
running_time()
# micro:bit をパニックモードにします(これは通常、デバイス抽象レイヤーがメモリ不足になったときに
# 起き、ディスプレイに悲しい顔が出ます)。エラーコードには任意の整数値を指定できます。
panic(error_code)
# micro:bit をリセットします。
reset()

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

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

ボタン

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

button_a
button_b

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

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

LED ディスプレイ

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)

端子

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

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

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

これらの端子はそれぞれ 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)
# 端子に触れているかをブール値で返します。
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.CLOCK12 # 12 時を示す時計
Image.CLOCK11
... # 多くの時計イメージ (Image.CLOCKn)
Image.CLOCK1 # clock at 1 o'clock
Image.ARROW_N
... # 方角を示す矢印 N, NE, E, SE, S, SW, W, NW (microbit.Image.ARROW_direction)
Image.ARROW_NW
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
# 組込みのリスト - アニメーションに便利。例: display.show(Image.ALL_CLOCKS)
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)

UART

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

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