見出し画像

machine.Pin 使い方

先の記事「マイコンって何が出来るの?」では、マイコン仕掛けは端子信号を秩序立てて扱うことが出来ると書きました。
タイトル画像のDigtal Out (Low/High) とDigtal IN (Low/High) についてMicroPythonでの記述方法です。ある意味一般的な情報ですが、個人的な使い方も交えて書いてみます。

machine.Pinクラスをインポート

次のように、machineモジュールのPinクラスをインポートします。

from machine import Pin

出力に使う場合

オームの法則で回路説明1」のような回路でLEDや小型リレーを動かす場合です。

出力Pinに設定する
以下は、IO2を出力に設定します。
IO2の端子電圧は約0Vになります。

led_b = Pin(2, Pin.OUT)

私は普段IO2をデバッグ用の青色LEDに接続していますので、変数名はled_bとしました。

0/1(Low/High)を切り替える
出力に設定した端子を0(Low)にします。(端子電圧は約0V)

led_b.value(0)

出力に設定した端子を1(High)にします。(端子電圧は約3.3V)

led_b.value(1)

出力に設定する際に、出力値も設定する記述
この記事を書くために調べて知りました。(後日、使ってみます。)

led_b = Pin(2, Pin.OUT, value=0)

ESP32に限らず、マイコンの未使用端子は出力にした方が、静電気ノイズによる誤動作や素子破壊防止に効果があるようです。
私は出力に設定出来る未使用IOはLow出力に、出力に設定出来ない未使用IO(34,35,36,39)は基板内でGNDに接続して使っています。

入力に使う場合

キースイッチの入力などに使う場合です。

入力Pinに設定する
以下はIO18を入力にしています。

sw_1 = Pin(18, Pin.IN)

キー入力1に使ったため、sw_1としました。

入力値を読み出す
変数resに値を読み込んでいます。

res = sw_1.value()

resの値は0または1になります。0の時端子電圧は約0Vです。

PICのリセット

やや特殊な使い方として、ESP32の端子からPICにリセットを掛ける場合など、High-ZとLowを出力する場合があります。
この場合High-Zの時はESP32の端子を入力に設定し、Lowの場合は出力(value=0)に設定します。

入力(High-Z)の間はPICの動作に影響を与えず、Low出力の間はPICの端子をLowに拘束します。High-Zはハイ・インピーダンスです。
ESP32とPICのMCL端子の間に抵抗が必要です。直接つなぐと「note でやりたいこと 1」のタイトル画像のような結果になります。

参考URL

ESP32 用クイックリファレンス
https://micropython-docs-ja.readthedocs.io/ja/latest/esp32/quickref.htmlhttps://micropython-docs-ja.readthedocs.io/ja/latest/esp32/quickref.html


出来ればサポート頂けると、嬉しいです。 新しい基板や造形品を作る資金等に使いたいと思います。