(景品表示法による表記)当サイトにはPRを含んでいます

Raspberry Pi で初めてのプログラム|スイッチ入力の検知

Raspberry Pi でスイッチ入力実験風景

ラズベリーパイでGPIOに接続したスイッチの入力を検知するPythonプログラムを、勉強して作ってみました。

回路

GPIOの入力ピンは、何も接続していない時の電気的な状態【HIGH/LOW】を設定しておくことが出来ます。(内蔵プルアップ/プルダウンが使用できます)

Raspberry Pi でスイッチ入力実験の回路図

GPIO24を入力ピンに設定し、デフォルト状態をHIGH(内蔵プルアップ)にしておき、スイッチONでLOWになるようにしました。

GPIO14は出力ピンに設定し、LEDを点灯します。

プログラム(Python)

プラグラム開始と共にLEDを点灯し、スイッチを押すとLEDを消してプログラム終了という動作にしました。

import RPi.GPIO as GPIO  #GPIO操作用モジュールをインポート
import time  #sleep用のモジュールインポート

GPIO.setmode(GPIO.BOARD)  #今回はピン番号でプログラムを記述
GPIO.setup(8, GPIO.OUT)  #8番ピンを出力ピンに設定
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)  #後述

GPIO.output(8, GPIO.HIGH)  #8番ピンをHIGHに設定

while GPIO.input(18) == GPIO.HIGH:  #後述
    time.sleep(0.2)

GPIO.cleanup()  #GPIOピンの終了処理

今回新しいのは下記2点です。

GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
18番ピンを入力ピンに設定し、「pull_up_down=GPIO.PUD_UP」で内蔵プルアップをON(HIGH状態に設定)しています。
while GPIO.input(18) == GPIO.HIGH:
time.sleep(0.2)

18番ピンがHIGHの間、0.2秒間スリープを繰り返します。
18番ピンは内蔵プルアップでHIGHにしてあるので、スイッチを押してGNDに接続されるまでHIGH状態です。スイッチを押すとLOWとなり、whileループから抜けてプラグラムは終了します。

実物

ブレッドボードで配線した実物はこんな感じ。

Raspberry Pi でスイッチ入力実験風景

スイッチを押すとLEDが消え、プログラムが終了することを確認しました。