入出力端子¶
端子はボードに接続された外部デバイスと通信するための手段。使用できる端子は 19 あります。番号 0-16 と 19-20 を利用できます。端子 17 と 18 は利用できません。
たとえば、以下のスクリプトは端子 0 のデジタル読み取り、値に応じてマイクロビットの表示を変更します。
from microbit import *
while True:
if pin0.read_digital():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
各端子の機能¶
これらの端子は microbit モジュールの属性として利用できます: microbit.pin0 - microbit.pin20.
| 端子 | タイプ | 機能 |
|---|---|---|
| 0 | タッチ | パッド 0 |
| 1 | タッチ | パッド 1 |
| 2 | タッチ | パッド 2 |
| 3 | アナログ | 列 1 |
| 4 | アナログ | 列 2 |
| 5 | デジタル | ボタン A |
| 6 | デジタル | 行 2 |
| 7 | デジタル | 行 1 |
| 8 | デジタル | |
| 9 | デジタル | 行 3 |
| 10 | アナログ | 列 3 |
| 11 | デジタル | ボタン B |
| 12 | デジタル | |
| 13 | デジタル | SPI MOSI |
| 14 | デジタル | SPI MISO |
| 15 | デジタル | SPI SCK |
| 16 | デジタル | |
| 19 | デジタル | I2C SCL |
| 20 | デジタル | I2C SDA |
上の表は、使用可能な端子、タイプ(後述)、内部で接続されているものをまとめたものです。
パルス幅変調¶
ボードの端子は、オーディオアンプが行っているような電圧の変調によるアナログ信号を出力できません。端子は、3.3V のフル出力をイネーブルするか、または 0V にプルダウンするだけです。しかし、LED の明るさや電気モーターの速度を制御することは、その電圧を非常に高速にオン/オフし、オン時間とオフ時間を制御することによっても可能です。この技術はパルス幅変調(PWM)と呼ばれ、 write_analog メソッドで行います。
上には 3 つの異なる PWM 信号の図があります。それらはすべて同じ周期(つまり周波数)を持ちますが、時間幅周期が異なります。
最初のものは write_analog(511) で生成されたものであり、正確に 50% の時間幅を持ちます。パワーは時間の半分がオン、時間の半分がオフです。その結果、この信号の全エネルギーは、3.3V の代わりに 1.65V の場合と同じです。
第2の信号は 25% の時間幅周期を有し、 write_analog(255) を用いて生成できます。この端子に 0.825V が出力されている場合と同様の効果があります。
第 3 の信号は 75% の時間幅周期を有し、 write_analog(767) を用いて生成できます。第 2 の信号の 3 倍のエネルギーを有し、第 1 端子に 2.475V を出力することと同等です。
これは、大きな慣性を持っているモーターなどのデバイスや、人間の目ではわからないほど速く点滅している LED などのデバイスではうまくいきますが、音の発生ではあまりよい結果になりません。このボードは矩形波の音だけを生成可能で、非常に古いコンピュータゲームによく似たものです – そのようなゲームのほとんどもそうやっているからです。
クラス¶
3 種類の端子があり、利用法も異なります。それらは、以下に列挙されるクラスによって表されます。クラスは階層を形成するので、各クラスは前のクラスのすべての機能を持ち、独自のものを追加しています。
注釈
これらのクラスは実際には利用できません。新しいクラスのインスタンスを作成することはできません。ボード上の物理的な端子を表す、すでに提供されているインスタンスのみを使用できます。
-
class
microbit.MicroBitDigitalPin¶ -
read_digital()¶ 端子がハイの場合は 1 を返し、ローの場合は 0 を返します。
-
write_digital(value)¶ valueが 1 の場合はハイに設定し、0 の場合はローに設定します。
-
-
class
microbit.MicroBitAnalogDigitalPin¶ -
read_analog()¶ 端子の電圧を読み取り、0 (0V の意味)から 1023 (3.3V の意味)までの間の整数として返します。
-
write_analog(value)¶ PWM 信号を端子に出力します。時間幅周期は供給電圧
valueに比例します。valueには 0 (時間幅周期 0%)から 1023 (時間幅周期 100%)までの整数または浮動小数点数を指定できます。
-
set_analog_period(period)¶ 出力される PWM 信号の周期を
periodにミリ秒単位で設定します。有効な最小値は 1ms です。
-
set_analog_period_microseconds(period)¶ Set the period of the PWM signal being output to
periodin microseconds. The minimum valid value is 256µs.
-
-
class
microbit.MicroBitTouchPin¶ -
is_touched()¶ 端子を指で触れている場合は
True、そうでない場合はFalseを返します。このテストは、端子の容量をそれに接続されているものと一緒に測定することによって行われます。人体は非常に大きな容量を持っているので、端子に触れると読み取りが劇的に変化し、これを検出できます。
-
端子のプルモードは、端子が入力モードに変わると自動的に構成されます。入力モードは read_analog / read_digital / is_touched を呼び出すと自動的になります。これらのメソッドためのプルモードは、それぞれ、です NO_PULL, PULL_DOWN, PULL_UP です。 read_digital のモードに入っているときだけ set_pull を呼び出してプルモードをデフォルトから変更することができます 。
注釈
また、タッチセンスが機能するために、micro:bit は端子 0, 1, 2 にのみ外付けの弱い(10M)プルアップを装備しています。次のエッジコネクタのデータシートを参照してください: http://tech.microbit.org/hardware/edgeconnector_ds/