ESP32の入力ピンのPULL UP PULL DOWNのテストをします。
まず、ESP32 DevKitのピン配列は次のようになっています。
(この画像の原典は、分からないのですが、見やすいので使わせていただきます)
デフォルトでPULL UP、PULL DOWNされているピンは、pu、pdで表示されています。
Arduinoでは、pinMode(ピン番号,INPUT_PULLUP);でINPUTピンをPULL UPすることができます。(ESP32ではPULL_DOWNも指定することができることを確認しました。)
ESP32では、次のようにPULL UP,PULL DOWN,両方,PULLなしを設定することができます。
gpio_set_pull_mode(GPIO_NUM,PULL_MODE);
GPIO_NUM:GPIO_NUM_0~GPIO_NUM_39
PULL_MODE:GPIO_PULLUP_ONLY プルアップ
GPIO_PULLDOWN_ONLY プルダウン
GPIO_PULLUP_PULLDOWN プルアップ、プルダウン両方
GPIO_FLOATING プルアップ、プルダウンなし
ESP32のデータシートでは、プルアップ抵抗、プルダウン抵抗とも45kΩとなっています。
各モードを設定したときのピンの電圧を調べてみます。
スケッチです。GPIO25を0.5秒ごとにプルアップ、プルダウン、両方、なし設定を繰り返します。
GPIO25の電圧をPicoScopeで見てみると
PULLUP_ONLYで3.3V、PULLDOWN_ONLYで0V、PULLUP_PULLDOWNで約1.6V、FLOATINGで0Vです。
端子に外部抵抗繋いで分圧して内部抵抗を推察(確認)するのが目的なのではないか?