3.7. GPIO出力¶
machine.LED は、カメラの内蔵インジケータの配線を抽象化します。外部 のハードウェアを駆動するには、出力モードの machine.Pin から始めます。これは、他のあらゆるGPIO操作の根底にある生のペリフェラルです。
3.7.1. ピンを駆動する¶
ピンを出力にするには Pin.OUT を指定して構築し、その値を設定します:
from machine import Pin
led = Pin("P0", Pin.OUT)
led.on() # drive high (about 3.3 V)
led.off() # drive low (about 0 V)
状態を設定する3つの同等な方法。いずれも machine.Pin 上のものです:
pin.value(1)/pin.value(0)-- 明示的な形です。
引数なしで value() を呼び出すと、ピンの現在の状態を読み戻します。これは入力と出力の両方で機能します。
3.7.2. 外部LEDを駆動する¶
3.3 Vから10 mAで動作する赤色LEDには、直列に約130 Ωが必要です(電子工学のページで計算を示しています)。ピン P0 をその抵抗を介してLEDのアノードに、LEDのカソードをグラウンドに配線します。点滅プログラム:
import time
from machine import Pin
led = Pin("P0", Pin.OUT)
while True:
led.on()
time.sleep_ms(500)
led.off()
time.sleep_ms(500)
LEDは1秒に1回オンとオフを切り替えます。LEDを流れる電流(したがってその明るさ)は抵抗によって設定されます。オン/オフのデューティが制御するのは点灯する頻度だけであり、点灯している間の明るさではありません。
Tip
コンストラクタは初期値をキーワード引数として受け取ります。Pin("P0", Pin.OUT, value=0) は、Lowで始まる出力としてピンを設定します。これがないと、ピンは最初の value() 呼び出しの前に、そのデフォルト状態が何であってもそれを一時的にとります。
3.7.3. オープンドレインモード¶
デフォルトの Pin.OUT モードはプッシュプルです。ピンはHigh(電源へ)とLow(グラウンドへ)の両方を能動的に駆動します。これが適切でない場合もあります。ピンがラインをLowに引くか、解放する(フロートさせる)かのどちらかであるべき場合は、Pin.OPEN_DRAIN を使います:
pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off() # actively drive low
pin.on() # release; an external pull-up brings the line high
主な用途はワイヤの共有です。複数のオープンドレイン出力は、いずれもラインを能動的にHighに駆動しないため、単一のラインを共有できます。それらのうちのどれもがラインをLowに引くことができ、すべてが解放すると外部のプルアップがラインをHighにします。これは、共有通信バスの背後にある配線の慣例です。
警告
オープンドレインは、より高電圧のデバイスを駆動するための汎用的な解決策では ありません。オープンドレインピンを5 Vのプルアップに接続することは、5 V耐性のあるピンでは安全ですが、耐性のないピンでは、ピンが解放されてラインが5 Vまでフロートアップした途端、オンチップの保護ダイオードを通じてそれを損傷させます。クロス電圧の信号伝達には適切なレベルシフタが必要です。回路については レベルシフト を参照してください。