3.4. ピンとペリフェラル¶
ピンは MCU 上で最も単純なペリフェラルです。チップを外界に接続する 1 本のワイヤです。実際のハードウェアとのあらゆるやり取り、LED の駆動、スイッチの読み取り、電圧の測定、シリアルラインを介したバイトの送信などは、最終的に 1 つ以上のピンを経由します。
3.4.1. ピンモード¶
ピンは何か有用なことをする前に、いくつかある モード のいずれか 1 つに設定されます。
Pin.IN-- 入力。ピンは外部から印加された電圧を観測し、0(low)または1(high)として報告します。Pin.OUT-- 出力。ピンは自らを電源電圧(1)またはグラウンド(0)のいずれかに駆動するので、外部の部品はその電圧を感知します。Pin.OPEN_DRAIN-- ラインを low に引き下げることしかできない出力。high にするには、ピンは解放(フロート)し、外部のプルアップ抵抗がラインを引き上げます。複数のデバイスが同じラインを駆動する可能性のある共有バスに使われます。
入力では、外部から何もピンを駆動していないときに定義されたレベルを保証する、内部の プル抵抗 をオプションで有効にできます。
Pin.PULL_UP-- 電源レールへの弱いプル。Pin.PULL_DOWN-- グラウンドへの弱いプル。
コンストラクタは id、mode、pull を位置引数として受け取ります。
from machine import Pin
led = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)
3.4.2. オルタネート機能¶
ほとんどのピンは、GPIO としての役割に加えて オルタネート機能 を持っています。チップ上の 1 つの物理的なパッドは次のいずれかになりえます。
デジタル入力または出力(
machine.Pin)。電圧を測定する ADC 入力(
machine.ADC)。矩形波を出力する PWM 出力(
machine.PWM)。UART の TX または RX ライン(
machine.UART)。
その他のペリフェラル(さらなるシリアルバス、タイマーなど)も特定のピンを占有します。チップの設計者は各ハードウェアブロックを固定のパッドの組に配線します。ADC はそのマルチプレクサに配線されたピンのみをサンプリングし、UART はその TX 信号が配線された 1 本のピンで送信します。
注釈
OpenMV cam は外部コネクタのピンに P0 から P9 のラベルを付けています(ボードによって多少異なります)。どのピンがどのオルタネート機能を担うかはボード固有です。表については OpenMV Cam クイックリファレンス を参照してください。
3.4.3. ボードによる違い¶
いくつかの細部はボードによって異なり、別のボードから推測するのではなく、常にクイックリファレンスと照合すべきです。
電圧耐性。 一部の cam には 5 V 耐性の I/O ピンがあります(5 V の信号を破損なく直接印加できます)。他のものは I/O を 3.3 V または 1.8 V で動作させ、それを超えるあらゆる信号にはレベルシフタが必要です。5 V 電源を非耐性のピンに接続するとチップが破損する可能性があります。
ADC 基準。 ADC がフルスケールとして扱う電圧は、ボードの I/O 電源に依存します。
read_u16()は常に0..65535を返しますが、65535が表す電圧はそのボードの基準が何であるかによります。駆動能力。 GPIO ピンが供給または吸収できる電流は限られており、通常は数十ミリアンペアです。抵抗を介した小さな LED には十分ですが、モーター、ブザー、その他の誘導性負荷には足りません。それより重いものには外部ドライバ(トランジスタ、MOSFET、H ブリッジ)を使ってください。
OpenMV Cam クイックリファレンス がボードごとの正確な数値を示しています。