生活中有個應用是, 大廳、走廊、或是電梯裡
燈是暗的, 感應到有人經過時燈就亮了
我們可以用 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 全關