樹莓派 Learning 003 — GPIO 002 輸入模式 — 按鍵控制LED
阿新 • • 發佈:2019-01-27
我的樹莓派型號:Raspberry Pi 2 Model B V1.1
裝機系統:NOOBS v1.9.2
我們在之前學會了如何進行輸出,現在來講講如何進行輸入:
使用按鍵為例。
我們先按照下面這幅圖片連線電路:
知識點:當你設定一個GPIO為輸入模式的,這個GPIO口要麼是連線到訊號端,要麼是接GND。注意設定為輸入模式的GPIO口不允許懸空(floating)。(因為這種情況下GPIO輸入的值是不確定的。)
上面這個圖中, 按鍵的一個引腳連線一個10K電阻和樹莓派的24引腳上,然後10K電阻連線GND。按鍵的另一個引腳連線到3V3。
LED還是正極連線到25引腳上,另一個引腳連線GND。
寫程式
# -*- coding:UTF-8 -*-
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25, GPIO.OUT)
ledStatus = True
while True:
if (GPIO.input(24) == GPIO.HIGH):
print("button pressed!")
ledStatus = not ledStatus
if ledStatus:
GPIO.output(25, GPIO.HIGH)
pass
else:
GPIO.output(25, GPIO.LOW)
pass
time.sleep(0.03)
pass
time.sleep(0.01)
pass
執行下面的命令,來啟動這個程式指令碼:
sudo chmod +x key_control_led.py
python key_control_led.py
你會發現這個執行效果並不是很好:主要的原因就是因為按鍵的去抖。你可以使用硬體去抖(就是在按鍵的引腳上並聯一個電容),也可以軟體去抖,上面的程式中已經進行軟體去抖了(你可以通過增大延時時間來改善程式執行效果)。
到現在應該學會了如何使用GPIO的輸入模式了。
上面檢測按鍵的程式,它是用輪詢的方式,接下來,我們來學習,如果使用GPIO的中斷模式,來實現使用中斷的方式來檢測一個按鍵是否被按下。