micro:bit Micropython API¶
microbit モジュール¶
ハードウェアと相互に直接関係するものはすべて microbit モジュールにあります。使いやすさを考慮して、すべてのスクリプトは次の方法で起動することをお勧めします:
from microbit import *
以下のドキュメントは、これを行ったことを前提としています。
いくつかの関数が直接利用できます:
# 指定したミリ秒数だけ休止します。
sleep(ms)
# micro:bit の電源が入ってから経過したミリ秒数を返します。
running_time()
# 温度を摂氏で返します
temperature()
# 数値をある区間の値から別の区間の値に変換します
scale(value_to_convert, from_=(min_value, max_value), to=(min_value, max_value))
# micro:bit をパニックモードにします(これは通常、デバイス抽象レイヤー
# がメモリ不足になったときに起き、ディスプレイに悲しい顔が出ます)。
# エラーコードには任意の整数値を指定できます。
panic(error_code)
# micro:bit をリセットします。
reset()\# micro:bit **V2** の内蔵スピーカーやエッジコネクタ端子に繋いだ外部
# スピーカー/ヘッドフォンの出力ボリュームを設定します(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()
が使えません。
イメージ¶
イメージ 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.SCISSORS
時計のイメージ
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)