3.9. スイッチとプル抵抗

GPIO出力は外部ハードウェアを駆動します。GPIO入力はその逆で、カメラがピンの電圧を読み取り、それを 0 または 1 として報告します。最も単純な入力デバイスはスイッチです。そしてそれを確実に読み取れるようにするには、スイッチ自体に加えて1つの電子部品が必要です。

3.9.1. スイッチとフローティング入力

スイッチは機械的な接点です。すなわち、スイッチが閉じると接触し、開くと離れる2枚の金属片です。電気的には、それがデバイスのすべてです。内部に電圧源はなく、スイッチ単体では「接続」または「切断」しか提供しません。

スイッチをGPIOピンとグランドの間に直接配線すると、ピンは次の状態になります。

  • スイッチが閉じているとき(グランドに配線されている)は 0 V

  • スイッチが開いているとき(どこにも配線されていない)はフローティング

フローティングピンには定義された電圧がありません。入力はその近くにあるものを読み取ります。すなわち、近くの信号からのクロストーク、電源からのノイズ、さらには配線に近づいた指の静電気まで読み取ります。value()01 の予測不能な混合を毎秒何度も返します。

3.9.2. プルアップ抵抗とプルダウン抵抗

解決策はプル抵抗です。これは、スイッチが開いているときに入力を既知のレールに結びつける高抵抗値(通常10 kΩから100 kΩ)の抵抗です。

2つの回路図を並べたもの。左:入力ピンから電源へ 向かう抵抗と、入力ピンからGNDへ向かうスイッチを 備えたプルアップ回路。右:入力ピンからGNDへ 向かう抵抗と、入力ピンから電源へ向かうスイッチを 備えたプルダウン回路。

スイッチ入力に対するプルアップ(左)とプルダウン(右)の構成。

  • プルアップ。 抵抗が入力を電源レールに結びつけます。スイッチが開いているときは、抵抗を通じてわずかな電流が流れるだけで、ピンはハイを読み取ります。スイッチが閉じると、ピンをグランドへ短絡し、ピンはローを読み取ります。抵抗は、閉じたスイッチを通じて電源からグランドへ流れる電流を制限します。

  • プルダウン。 その鏡像です。抵抗が入力をグランドに結びつけ、スイッチが電源に接続されます。開くとローを、閉じるとハイを読み取ります。

プルアップの方がより一般的な慣習であり、「アクティブロー」のボタンとなります。MCU自体が内蔵のプルアップとプルダウンを提供しており、Pin.PULL_UP または Pin.PULL_DOWN で有効化でき、外部抵抗を完全に不要にできます。