薄いキーパッド・ボタンを使う:Membrane LED Keypad
ここでは、薄いキーパッド・ボタンを使う方法を説明します。この商品を使います。
接続
このボタンの内部の配線は以下の写真のようになっています。これはボタンの「裏側」を見ている写真です。
ボタン裏側から見たピン(ワイヤ)の位置 | 役割 | ラズパイ側の接続先 |
---|---|---|
左 | Gnd(グラウンド) | Gnd |
中央 | ボタンを押した・離したの判定に使う | GPIO |
右 | Vcc(3.3 V:電源供給) | 3.3V or GPIO |
ボタンの左ピンは、ラズパイのGndピンと接続します。どのGndピンでも構いません。ボタンの中央ピンは、ラズパイのGPIOピンと接続。どのGPIOピンでも構いません。ボタンの右ボタンは、ラズパイの3.3Vピン、またはGPIOピンと接続。GPIOピンとつなぐ場合、どのGPIOピンを使っても構いません。
この接続をすると、ラズパイ側から流れてくる電流が右ピンを通ってボタン内に入ります。そして、真ん中のピンを通ってボタン外へ流れ出てラズパイへ戻ります。ボタンが押されていない状態では、電流が真ん中のピンへ流れ出ています。ボタンが押されると、真ん中のピンへ電流が流れなくなり、左ピンのGndへ流れます。そして、ボタンの(赤い)LEDが点灯します。
つまり、以下の方法で、ボタンが押されているか・押されていないかを判定できます。
- 真ん中のピンから電流が流れていれば、ボタンは押されていない
- 真ん中のピンから電流が流れていなければ、ボタンが押されている
プログラミング
以下では、例として次のように接続してください。
ボタン裏側から見たピン(ワイヤ)の位置 | ラズパイ側の接続先 |
---|---|
左 | Gnd(グラウンド) |
中央 | GPIO 16 |
右 | 3.3 V |
ボタンが押されたか、押されていないかを判定するプログラムがdigital-on-off.pyです。ボタンを使う場合には、まずプログラムの先頭部分で以下のようにします。
from gpiozero import DigitalInputDevice
そして、以下のようにしてボタンを使う準備をします。ここで数字の「5」は、ボタンへ電気を流すのに使うGPIOピンの番号です。
button = DigitalInputDevice(26)
ボタンが押された・押されていない、の判定には以下のコードを使います。
if button.is_active == False:
print("Pushed!")
button.is_activeがFalseなら、電流が流れていない(つまりボタンが押されている)ことを意味します。TrueはYES、FalseはNOの意味です。
このプログラムは、ボタンが押されたかどうかをずっと繰り返し調べ続けます(無限ループを使って)。プログラムの実行を止めるにはCtrl-Cしてください。