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_0、Pin.DRIVE_1などの駆動強度が増加していくいずれかの値を取ります。実際の電流駆動能力はポートに依存します。すべてのポートがこの引数を実装しているわけではありません。altはピンの代替機能を指定し、取り得る値はポートに依存します。この引数はPin.ALTおよびPin.ALT_OPEN_DRAINモードでのみ有効です。ピンが複数の代替機能に対応している場合に使用できます。1つの代替機能のみが対応している場合、この引数は必要ありません。すべてのポートがこの引数を実装しているわけではありません。
上記のとおり、Pinクラスでは特定のピンに代替機能を設定できますが、そのようなピンに対するそれ以上の操作は指定しません。代替機能モードで構成されたピンは通常GPIOとしては使用されず、代わりに他のハードウェアペリフェラルによって駆動されます。そのようなピンで対応している唯一の操作は、コンストラクタまたは
Pin.init()メソッドを呼び出すことによる再初期化です。代替機能モードで構成されたピンがPin.IN、Pin.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()を参照してください。
- 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ポートで利用可能なメソッド¶
mimxrt + alif のみ¶
STM32 のみ¶
定数¶
以下の定数は、コンストラクタ、
init()、およびirq()を介してPinオブジェクトを構成するために使用されます。これらはポートの利用可否ごとにグループ化されています。すべてのOpenMVポートで利用可能な定数¶
STM32 のみ¶
- AF_OD: int¶
代替機能オープンドレインモード(
ALT_OPEN_DRAINと同じ値)。
- OUT_OD: int¶
オープンドレイン出力モード(
OPEN_DRAINと同じ値)。
mimxrt のみ¶