生活中有個應用是, 大廳、走廊、或是電梯裡
燈是暗的, 感應到有人經過時燈就亮了
我們可以用 PIR 做到同樣的應用
2. Connecting to a PIR
PIR 通常有 3 根pin, 分別是 VDD, GND, 以及 Signal out
我手上這顆 PIR 型號是 Panasonic PIR AMN44122:
然後如下圖這樣接, 其中 PIR 的 OUT 接到 RPi 的某根 GPIO 上來讀取狀態, 這邊選的是板子編號 12 的 pin 腳
另外 LED 接的 GPIO 是板子編號 16 的 pin 腳
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
pir = 12
led = 16
GPIO.setup(pir, GPIO.IN)
GPIO.setup(led, GPIO.OUT)
prev_pir_state = 0
count_down = 0;
GPIO.output(led, 0)
try:
while True:
current_pir_state = GPIO.input(pir)
if current_pir_state == True:
if prev_pir_state == False:
GPIO.output(led, 1)
count_down = 3
else:
if count_down > 0:
count_down = count_down - 1
if count_down == 0:
GPIO.output(led, 0)
prev_pir_state = current_pir_state
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()
程式邏輯是, 如果從 PIR 讀到的值由 0 變 1, 就點亮 LED, 並啟動 count down
當 PIR 變 0, 就等個 3 秒之後再把 LED 關掉
中間如果 PIR 又變回 1 了, 那麼 count down 就重新算
最後如果用Ctrl-C離開程式, 就把 GPIO 全關


