ラズパイ工房

Raspberry Piとの奮闘記

タクトスイッチ その2 [Raspberry Pi][電子工作][Python]

今回は、タクトスイッチでインプットの処理を行います。
 
今までは、GPIO.output(23,1)の様に、GPIOピンから出力をしてきました。
その逆のインプット処理を行うにあたって必要な知識に、「プルアップ抵抗」「プルダウン抵抗」というものがあります。
(わたしは、いまいち理解できていません...)
 
とりあえず、プルアップを例に実動作を確認してみます。
接続はこんな感じです。
f:id:innogress:20160523224154p:plain
プログラムはこんな感じになります。
 
  1. import RPi.GPIO as GPIO
  2. import time
  3.  
  4. GPIO.setmode(GPIO.BCM)
  5. GPIO.setup(23,GPIO.IN,pull_up_down=GPIO.PUD_UP)
  6. GPIO.setup(25,GPIO.OUT)
  7.  
  8. try:
  9.     while True:
  10.         if GPIO.input(23) == GPIO.HIGH:
  11.             GPIO.output(25,1)
  12.         else:
  13.             GPIO.output(25,0)
  14.         time.sleep(0.1)
  15. except KeyboardInterrupt:
  16.     GPIO.cleanup()
 
動かすとこんな感じになります。
 
まず、
GPIO.setup(23,GPIO.IN,pull_up_down=GPIO.PUD_UP)
で、GPIO 23をインプット(プルアップ)に設定しています。
 
プルアップに設定した場合、
タクトスイッチOFF時は「HIGH」になり、ON時は「LOW」になります。
 
そのため、if文で指定した通り、
GPIO 23がHIGH(スイッチOFF)の時に、LEDが点灯(GPIO 25が出力ON)し、
GPIO 23がLOW(スイッチON)の時に、LEDが消灯(GPIO 25が出力OFF)します。
 
次回、プルアップ/プルダウンについてもう少し詳細を説明します。