基本說明:
RPi.GPIO基本input操作,透過外部線路短路來改變GPIO的狀態。
接線:
#1 | GND |
#2 | GPIO#2 |
Python程式:
import RPi.GPIO as GPIO
import time
PIN = 2
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
GPIO.setup(PIN, GPIO.IN)
def callback(PIN):
print("clicked")
GPIO.add_event_detect(PIN, GPIO.RISING, bouncetime=200)
GPIO.add_event_callback(PIN, callback)
while True:
time.sleep(10)
討論:
1. 這裡的程式使用了RPi.GPIO的事件偵測函數event_detect,呼叫以後會自動產生另外一組thread在偵測GPIO狀態,所以只需要控制主程式沒有停止就可以繼續執行。2. 範例程式中的add_event_detect主要有2個參數,第一個為針腳位置,第二個為GPIO偵測到的狀態,可以為RISING / FALLING / BOTH,依需求設定。其餘可有可無的參數,包括bouncetime用來間隔事件發生的頻率,callback用來指定事件發生時會呼叫的函數。
3. 比較複雜的按鈕,如4x4或3x4矩陣鍵盤,原理是每條row與每條column的位置發生短路,就代表該鍵被按下。因此需要把row或column設定GPIO.OUT,column或row設定為GPIO.IN,來偵測短路位置。
沒有留言:
張貼留言