microbit モジュール
ハードウェアと相互に直接関係するものはすべて microbit モジュールにあります。使いやすさを考慮して、すべてのスクリプトは次の方法で起動することをお勧めします:
from microbit import *
以下のドキュメントは、これを行ったことを前提としています。
いくつかの関数が直接利用できます:
# 指定したミリ秒数だけ休止します。
sleep(ms)
# micro:bit の電源が入ってから経過したミリ秒数を返します。
running_time()
# micro:bit をパニックモードにします(これは通常、デバイス抽象レイヤーがメモリ不足になったときに
# 起き、ディスプレイに悲しい顔が出ます)。エラーコードには任意の整数値を指定できます。
panic(error_code)
# micro:bit をリセットします。
reset()
残りの機能は、後述するように 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)
端子
コネクタの端子に、デジタルおよびアナログの入出力機能を提供します。一部の端子は 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)
# タッチ端子 0, 1, 2 のみ使えます。端子に触れているかをブール値で返します。
pin.is_touched()
イメージ
イメージ API
# 空の 5×5 イメージを作成。
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)
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)
コメント