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 上のものです:

引数なしで 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までフロートアップした途端、オンチップの保護ダイオードを通じてそれを損傷させます。クロス電圧の信号伝達には適切なレベルシフタが必要です。回路については レベルシフト を参照してください。