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

原博文鏈接在我的官方網站,網址是:http://www.aobosir.com/blog/2017/03/08/raspberrypi-GPIO-input-key-control-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的中斷模式,來實現使用中斷的方式來檢測一個按鍵是否被按下。

更多精彩的博文,請訪問:http://www.aobosir.com/

發佈了294 篇原創文章 · 獲贊 465 · 訪問量 500萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章