1. 程式人生 > >樹莓派 Learning 003 — GPIO 002 輸入模式 — 按鍵控制LED

樹莓派 Learning 003 — GPIO 002 輸入模式 — 按鍵控制LED

我的樹莓派型號:Raspberry Pi 2 Model B V1.1
裝機系統:NOOBS v1.9.2

我們在之前學會了如何進行輸出,現在來講講如何進行輸入:

使用按鍵為例。

我們先按照下面這幅圖片連線電路:

Alt text

知識點:當你設定一個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的中斷模式,來實現使用中斷的方式來檢測一個按鍵是否被按下。