クラス Pin -- I/O ピンの制御¶
Pin はI/Oピンを制御するための基本オブジェクトです。ピンのモード(入出力など)を設定するメソッドと、デジタルロジックレベルを取得および設定するメソッドを持っています。ピンのアナログ制御については、ADCクラスを参照してください。
使用モデル:
ボード上のすべてのピンは pyb.Pin.board.Name として事前に定義されています:
x1_pin = pyb.Pin.board.X1
g = pyb.Pin(pyb.Pin.board.X1, pyb.Pin.IN)
ボードのピンに対応する CPU ピンは pyb.Pin.cpu.Name として利用できます。CPU ピンの場合、名前はポート文字の後にピン番号が続きます。PYBv1.0では、pyb.Pin.board.X1 と pyb.Pin.cpu.A0 は同じピンです。
文字列も使えます:
g = pyb.Pin('X1', pyb.Pin.OUT_PP)
独自の名前を付けられます:
MyMapperDict = { 'LeftMotorDir' : pyb.Pin.cpu.C12 }
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
名前がどのピンにマッピングさえているか問い合わせられます:
pin = pyb.Pin("LeftMotorDir")
独自のマッピング関数も追加できます:
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
つまり、 pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP)
を呼び出した場合、 "LeftMotorDir"
は直接マッパー関数に渡されます。
要約すると、以下の順序でどのように順序ピン番号にマッピングされるかが決まります:
直接のピンオブジェクト指
ユーザー提供のマッピング関数
ユーザー提供のマッピング(オブジェクトは辞書キーとして使用可能でなければならない)
ボードピンと一致する文字列指定
CPU ポート/ピンにマッチする文字列指定
pyb.Pin.debug(True)
を設定すると、特定のオブジェクトがどのようにピンにマッピングされるかについてのデバッグ情報を得られます。
すべてのピンオブジェクトはピンマッパーを経由して、gpio ピンのいずれかにマッピングされます。
コンストラクタ¶
- class pyb.Pin(id, ...)¶
id に関連付けられた新しいPinオブジェクトを作成します。追加の引数が指定されている場合、それらはピンの初期化に使用されます。初期化の引数については
pin.init()
を参照してください。
クラスメソッド¶
- classmethod Pin.debug([state])¶
デバッグ状態を取得または設定します(オンかオフかによって
True
またはFalse
を指定)。
- classmethod Pin.dict([dict])¶
ピンマッパー辞書を取得または設定します。
- classmethod Pin.mapper([fun])¶
ピンマッパー関数を取得または設定します。
メソッド¶
- Pin.init(mode, pull=Pin.PULL_NONE, *, value=None, alt=-1)¶
ピンを初期化します:
mode には次のいずれかの値を指定できます:
Pin.IN
- ピンを入力用に設定します。Pin.OUT_PP
- ピンを出力用に設定し、プッシュプル制御を持つように設定します。Pin.OUT_OD
- ピンを出力用に設定し、オープンドレイン制御を持つように設定します。Pin.ALT
- ピンを代替機能用に設定します。入力または出力として使用できます。Pin.AF_PP
- ピンを代替機能用に設定し、プッシュプル制御を持つように設定します。Pin.AF_OD
- ピンを代替機能用に設定し、オープンドレイン制御を持つように設定します。Pin.ANALOG
- ピンをアナログ用に設定します。
pull には次のいずれかの値を指定できます:
Pin.PULL_NONE
- プルアップまたはプルダウン抵抗なし。Pin.PULL_UP
- プルアップ抵抗を有効にします。Pin.PULL_DOWN
- プルダウン抵抗を有効にします。
ピンの
Pin.PULL_UP
またはPin.PULL_DOWN
のプルモードが有効になっている場合、そのピンは 3V3 または GND に対して効果的な40kオームの抵抗があります(ただし、ピン Y5 は11kオームの抵抗になります)。value が None でない場合、ピンを有効にする前にポートの出力値を設定します。
alt は、 mode が
Pin.ALT
,Pin.AF_PP
,Pin.AF_OD
のいずれかの場合に適用されます。ピンに関連付けられた代替機能のインデックスまたは名前を設定します。この引数は以前は af と呼ばれていましたが、必要に応じて引き続き利用できます。
戻り値:
None
- Pin.value([value])¶
ピンのデジタルロジックレベルを取得または設定します:
引数なしの場合、ピンのロジックレベルに応じて0または1を返します。
value
を指定した場合、ピンのロジックレベルを設定します。value
にはブール値に変換できるものなら何でも指定できます。True
に変換できる場合、ピンは High に設定され、それ以外の場合は Low に設定されます。
- Pin.__str__()¶
ピンオブジェクトに関する文字列を返します。
- Pin.af()¶
ピンの現在の設定された代替機能を返します。返される整数は、init 関数の af 引数に指定できる定数の1つに対応します。
- Pin.af_list()¶
このピンで利用可能な代替機能の配列を返します。
- Pin.gpio()¶
このピンに関連付けられたGPIOブロックのベースアドレスを返します。
- Pin.mode()¶
ピンの現在の設定されたモードを返します。返される整数は、init 関数の mode 引数に指定できる定数の1つに対応します。
- Pin.name()¶
ピンの名前を取得します。
- Pin.names()¶
このピンに対する CPU とボード名を返します。
- Pin.pin()¶
ピン番号を取得します。
- Pin.port()¶
ピンのポートを取得します。
- Pin.pull()¶
ピンの現在の設定されたプルアップ/プルダウンを返します。返される整数は、init 関数の pull 引数に指定できる定数の1つに対応します。
定数¶
- Pin.ALT¶
ピンを代替機能モードに初期化し、入力または出力として設定します。
- Pin.AF_OD¶
ピンを代替機能モードに初期化し、オープンドレイン駆動として設定します。
- Pin.AF_PP¶
ピンを代替機能モードに初期化し、プッシュプル駆動として設定します。
- Pin.ANALOG¶
ピンをアナログモードに初期化します。
- Pin.IN¶
ピンを入力モードに初期化します。
- Pin.OUT_OD¶
ピンを出力モードに初期化し、オープンドレイン駆動として設定します。
- Pin.OUT_PP¶
ピンを出力モードに初期化し、プッシュプル駆動として設定します。
- Pin.PULL_DOWN¶
ピンのプルダウン抵抗を有効にします。
- Pin.PULL_NONE¶
ピンのプルアップまたはプルダウン抵抗を有効にしません。
- Pin.PULL_UP¶
ピンのプルアップ抵抗を有効にします。
クラス PinAF -- ピンの代替機能¶
Pin は、マイクロプロセッサ上の物理的なピンを表します。各ピンはさまざまな機能(GPIO, I2C SDA など)を持てます。各 PinAF オブジェクトは、ピンの特定の機能を表します。
よくある使用例:
x3 = pyb.Pin.board.X3
x3_af = x3.af_list()
x3_af には、ピン X3 で利用可能な PinAF オブジェクトの配列が含まれます。
- Pyboard の場合、x3_af には次のものが含まれます:
[Pin.AF1_TIM2, Pin.AF2_TIM5, Pin.AF3_TIM9, Pin.AF7_USART2]
通常、各ペリフェラルは代替機能を自動的に設定しますが、同じ機能が複数のピンで利用可能な場合や、より細かな制御が必要な場合もあります。
X3 を TIM2_CH3 で公開するように設定するには、次のようにします:
pin = pyb.Pin(pyb.Pin.board.X3, mode=pyb.Pin.ALT, alt=pyb.Pin.AF1_TIM2)
または次のようにします:
pin = pyb.Pin(pyb.Pin.board.X3, mode=pyb.Pin.ALT, alt=1)
メソッド¶
- pinaf.__str__()¶
代替機能の説明を返します。
- pinaf.index()¶
代替機能のインデックスを返します。
- pinaf.name()¶
代替機能の名前を返します。
- pinaf.reg()¶
この代替機能に割り当てられたペリフェラルに関してのベースレジスタを返します。たとえば、代替機能が TIM2_CH3 である場合、これは stm.TIM2 を返します。