class Pin -- I/Oピンの制御

ピンオブジェクトはI/Oピン(GPIO、汎用入出力とも呼ばれます)を制御するために使用します。ピンオブジェクトは通常、出力電圧を駆動したり入力電圧を読み取ったりできる物理的なピンに関連付けられます。Pinクラスにはピンのモード(IN、OUTなど)を設定するメソッドや、デジタル論理レベルを取得・設定するメソッドがあります。ピンのアナログ制御については ADC クラスを参照してください。

ピンオブジェクトは、特定のI/Oピンを一意に指定する識別子を使用して構築します。識別子の許容される形式と、その識別子がマッピングされる物理ピンはポートごとに異なります。識別子として使用できるのは整数、文字列、またはポートとピン番号のタプルです。

使用モデル:

from machine import Pin

# create an output pin on header pin P0
p0 = Pin("P0", Pin.OUT)

# set the value low then high
p0.value(0)
p0.value(1)

# create an input pin on header pin P2, with a pull-up resistor
p2 = Pin("P2", Pin.IN, Pin.PULL_UP)

# read and print the pin value
print(p2.value())

# reconfigure P0 in input mode with a pull-down resistor
p0.init(p0.IN, p0.PULL_DOWN)

# install an IRQ callback
p0.irq(lambda p: print(p))

コンストラクタ

class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)

指定した id に関連付けられたピンペリフェラル(GPIOピン)にアクセスします。コンストラクタで追加の引数が指定された場合、それらはピンの初期化に使用されます。指定されなかった設定は以前の状態のまま維持されます。

引数は次のとおりです。

  • id は必須で、任意のオブジェクトを指定できます。指定可能な値の型には、int(内部のPin識別子)、str(Pin名)、tuple([port, pin] のペア)があります。

  • mode はピンのモードを指定し、次のいずれかになります。

    • Pin.IN - ピンを入力用に構成します。出力として見た場合、ピンはハイインピーダンス状態になります。

    • Pin.OUT - ピンを(通常の)出力用に構成します。

    • Pin.OPEN_DRAIN - ピンをオープンドレイン出力用に構成します。オープンドレイン出力は次のように動作します。出力値が0に設定されている場合、ピンは低レベルでアクティブになります。出力値が1の場合、ピンはハイインピーダンス状態になります。すべてのポートがこのモードを実装しているわけではなく、一部のポートでは特定のピンでのみ対応している場合があります。

    • Pin.ALT - ピンをポート固有の代替機能を実行するように構成します。このように構成されたピンに対しては、他のPinメソッド(Pin.init() を除く)は適用できません(呼び出すと未定義の、またはハードウェア固有の結果になります)。すべてのポートがこのモードを実装しているわけではありません。

    • Pin.ALT_OPEN_DRAIN - Pin.ALT と同じですが、ピンがオープンドレインとして構成されます。すべてのポートがこのモードを実装しているわけではありません。

    • Pin.ANALOG - ピンをアナログ入力用に構成します。ADC クラスを参照してください。

  • pull はピンに(弱い)プル抵抗が接続されているかどうかを指定し、次のいずれかになります。

    • None - プルアップ抵抗もプルダウン抵抗もありません。

    • Pin.PULL_UP - プルアップ抵抗が有効です。

    • Pin.PULL_DOWN - プルダウン抵抗が有効です。

  • value はPin.OUTおよびPin.OPEN_DRAINモードでのみ有効で、指定された場合は初期出力ピン値を指定します。指定されない場合、ピンペリフェラルの状態は変更されません。

  • drive はピンの出力電力を指定し、Pin.DRIVE_0Pin.DRIVE_1 などの駆動強度が増加していくいずれかの値を取ります。実際の電流駆動能力はポートに依存します。すべてのポートがこの引数を実装しているわけではありません。

  • alt はピンの代替機能を指定し、取り得る値はポートに依存します。この引数は Pin.ALT および Pin.ALT_OPEN_DRAIN モードでのみ有効です。ピンが複数の代替機能に対応している場合に使用できます。1つの代替機能のみが対応している場合、この引数は必要ありません。すべてのポートがこの引数を実装しているわけではありません。

上記のとおり、Pinクラスでは特定のピンに代替機能を設定できますが、そのようなピンに対するそれ以上の操作は指定しません。代替機能モードで構成されたピンは通常GPIOとしては使用されず、代わりに他のハードウェアペリフェラルによって駆動されます。そのようなピンで対応している唯一の操作は、コンストラクタまたは Pin.init() メソッドを呼び出すことによる再初期化です。代替機能モードで構成されたピンが Pin.INPin.OUT、または Pin.OPEN_DRAIN で再初期化されると、代替機能がピンから削除されます。

メソッド

init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None

指定したパラメータを使用してピンを再初期化します。指定された引数のみが設定されます。残りのピンペリフェラルの状態は変更されません。引数の詳細についてはコンストラクタのドキュメントを参照してください。

None を返します。

value(x: Any = None, /) int | None

このメソッドでは、引数 x が指定されているかどうかに応じて、ピンの値を設定または取得できます。

引数が省略された場合、このメソッドはピンのデジタル論理レベルを取得し、低電圧信号と高電圧信号にそれぞれ対応する0または1を返します。このメソッドの動作はピンのモードに依存します。

  • Pin.IN - このメソッドは現在ピンに存在する実際の入力値を返します。

  • Pin.OUT - このメソッドの動作と戻り値は未定義です。

  • Pin.OPEN_DRAIN - ピンが状態「0」の場合、このメソッドの動作と戻り値は未定義です。それ以外の場合、ピンが状態「1」であれば、このメソッドは現在ピンに存在する実際の入力値を返します。

引数が指定された場合、このメソッドはピンのデジタル論理レベルを設定します。引数 x はブール値に変換できるものなら何でもかまいません。True に変換される場合、ピンは状態「1」に設定され、それ以外の場合は状態「0」に設定されます。このメソッドの動作はピンのモードに依存します。

  • Pin.IN - 値はピンの出力バッファに格納されます。ピンの状態は変化せず、ハイインピーダンス状態のままです。格納された値は、ピンが Pin.OUT または Pin.OPEN_DRAIN モードに変更されるとすぐにピン上でアクティブになります。

  • Pin.OUT - 出力バッファは指定された値に即座に設定されます。

  • Pin.OPEN_DRAIN - 値が「0」の場合、ピンは低電圧状態に設定されます。それ以外の場合、ピンはハイインピーダンス状態に設定されます。

値を設定する場合、このメソッドは None を返します。

__call__(x: Any = None, /) int | None

ピンオブジェクトは呼び出し可能です。call メソッドは、ピンの値を設定・取得するための(高速な)ショートカットを提供します。これは Pin.value([x]) と同等です。詳細については Pin.value() を参照してください。

on() None

ピンを「1」の出力レベルに設定します。

off() None

ピンを「0」の出力レベルに設定します。

irq(handler: Callable[[Pin], None] | None = None, trigger: int = Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority: int = 1, wake: int | None = None, hard: bool = False) None

ピンのトリガーソースがアクティブになったときに呼び出される割り込みハンドラを構成します。ピンモードが Pin.IN の場合、トリガーソースはピン上の外部値です。ピンモードが Pin.OUT の場合、トリガーソースはピンの出力バッファです。それ以外の場合、ピンモードが Pin.OPEN_DRAIN であれば、トリガーソースは状態「0」については出力バッファ、状態「1」については外部ピン値です。

引数は次のとおりです。

  • handler は割り込みがトリガーされたときに呼び出されるオプションの関数です。ハンドラは、Pin インスタンスである引数を1つだけ取る必要があります。

  • trigger は割り込みを生成できるイベントを構成します。指定可能な値は次のとおりです。

    • Pin.IRQ_FALLING 立ち下がりエッジでの割り込み。

    • Pin.IRQ_RISING 立ち上がりエッジでの割り込み。

    これらの値はOR演算で結合して、複数のイベントでトリガーすることができます。

  • priority は割り込みの優先度レベルを設定します。取り得る値はポート固有ですが、より高い値は常により高い優先度を表します。

  • wake はこの割り込みがシステムを起こすことができる電源モードを選択します。どのOpenMVポートでも対応していないため、デフォルトのままにしてください。

  • hard がtrueの場合、ハードウェア割り込みが使用されます。これによりピンの変化からハンドラが呼び出されるまでの遅延が短縮されます。ハード割り込みハンドラはメモリを割り当てることができません。割り込みハンドラの記述 を参照してください。すべてのポートがこの引数に対応しているわけではありません。

このメソッドはコールバックオブジェクトを返します。

以下のメソッドはコアのPin APIに対する拡張です。これらはポートの利用可否ごとにグループ化されています。

すべてのOpenMVポートで利用可能なメソッド

low() None

ピンを「0」の出力レベルに設定します。off() のエイリアスです。

high() None

ピンを「1」の出力レベルに設定します。on() のエイリアスです。

mimxrt + alif のみ

toggle() None

出力ピンをトグルします。「0」を「1」に、またはその逆に反転させます。STM32では公開されていません(STM32でこれが必要な場合は value(not value()) を使用してください)。

STM32 のみ

mode(mode: int | None = None, /) int
mode(mode: int, /) None

ピンのモードを取得または設定します。mode 引数の詳細についてはコンストラクタのドキュメントを参照してください。

pull(pull: int | None = None, /) int
pull(pull: int, /) None

ピンのプル状態を取得または設定します。pull 引数の詳細についてはコンストラクタのドキュメントを参照してください。

定数

以下の定数は、コンストラクタ、init()、および irq() を介して Pin オブジェクトを構成するために使用されます。これらはポートの利用可否ごとにグループ化されています。

すべてのOpenMVポートで利用可能な定数

IN: int

ピンモード: ハイインピーダンスのデジタル入力。

OUT: int

ピンモード: プッシュプルのデジタル出力。STM32では OUT_PP のエイリアスです。

OPEN_DRAIN: int

ピンモード: オープンドレイン出力。0 を駆動するとラインが低レベルに引き下げられ、1 を駆動するとハイインピーダンスに解放されます。

PULL_UP: int

ピンの内部プルアップ抵抗を有効にします。

PULL_DOWN: int

ピンの内部プルダウン抵抗を有効にします。

IRQ_FALLING: int

立ち下がりエッジでトリガーするには irq() に渡します。

IRQ_RISING: int

立ち上がりエッジでトリガーするには irq() に渡します。

STM32 のみ

ALT: int

ピンモード: 代替機能(プッシュプル)。alt= と併用して、ピンをルーティングするペリフェラル機能を選択します。AF_PP のエイリアスです。

ALT_OPEN_DRAIN: int

ピンモード: 代替機能(オープンドレイン)。AF_OD のエイリアスです。

ANALOG: int

ピンモード: アナログ入力。デジタル入出力バッファが切り離され、ピンを ADC チャンネルで駆動できるようになります。

AF_PP: int

代替機能プッシュプルモード(ALT と同じ値)。

AF_OD: int

代替機能オープンドレインモード(ALT_OPEN_DRAIN と同じ値)。

OUT_PP: int

プッシュプル出力モード(OUT と同じ値)。

OUT_OD: int

オープンドレイン出力モード(OPEN_DRAIN と同じ値)。

PULL_NONE: int

ピンの内部プルアップ/プルダウン抵抗を無効にします。

mimxrt のみ

PULL_UP_47K: int

約47 kΩの内部プルアップ抵抗を有効にします。

PULL_UP_22K: int

約22 kΩの内部プルアップ抵抗を有効にします。

PULL_HOLD: int

パッドのバスキーパー/ホールド機能を有効にします。ピンはフローティングする代わりに現在の論理レベルをラッチします。

DRIVE_OFF: int

ピンの出力ドライバを無効にします。

DRIVE_0: int

最も低い駆動強度設定(最も高い直列インピーダンス)。R0 基準(3.3 Vで約150 Ω / 1.8 Vで260 Ω)。

DRIVE_1: int

DRIVE_0 より1段階上の駆動強度。

DRIVE_2: int

DRIVE_0 より2段階上の駆動強度。

DRIVE_3: int

DRIVE_0 より3段階上の駆動強度(出力ピンのデフォルト)。

DRIVE_4: int

DRIVE_0 より4段階上の駆動強度。

DRIVE_5: int

DRIVE_0 より5段階上の駆動強度。

DRIVE_6: int

最も強い駆動強度設定。