當前位置:編程學習大全網 - 編程語言 - 樹莓派 GPIO Input 部分高級應用技巧

樹莓派 GPIO Input 部分高級應用技巧

此篇為 《樹莓派使用基礎》 中,RPI.GPIO Input功能高級應用技巧。GPIO的簡單使用請參考博文 樹莓派3B+ GPIO輸入輸出使用

目前有幾種途徑可以在程序中獲得 GPIO 的輸入信息。

如果在輸入針腳上沒有連接任何元件,那麽它將是“浮動(float)”的。換句話說,因為沒有連接任何元件,在按下按鈕或開關之前,讀取的值是沒有意義的。由於電源的波動,獲取到的值可能會有很大的變化。

為了解決這個問題,我們需要使用 上拉/下拉電阻 。這樣,我們就可設定輸入的默認值了。在這裏,可以使用硬件或軟件對電阻進行上拉/下拉。使用硬件方式,將壹個 10K 的電阻連接在輸入通道與 3.3V(上拉)或 0V(下拉)之間是常用的做法。而 RPi.GPIO 也允許您通過軟件的方式對配置 Broadcom SOC 來達到目的:

或者

通道編號是基於所使用的編號系統所指定的(BOARD 或 BCM)。

邊緣的定義為電信號從 LOW 到 HIGH(上升臨界值)或從 HIGH 到 LOW(下降臨界值)狀態的改變。正常情況下,對於輸入的值來說,我們更關心的是輸入的狀態是否發生了改變。這種狀態上的改變是很重要的。

為了避免程序在忙於處理其它的事物時而錯過了按下按鈕的操作,這裏有兩種方法可以解決:

在檢測到邊緣時執行線程回調函數

註意,可以輸入 GPIO.RISING、GPIO.FALLING、GPIO.BOTH 對邊緣進行檢測。這種方式的優點是占用 CPU 資源很少,因此系統可以有充裕的資源處理其它事物。

RPi.GPIO 在第二條線程中執行回調函數。這意味著回調函數可以同您的主程序同時運行,並且可以立即對邊緣進行響應。例如:

如果需要多個回調函數:

註意,在該示例中,回調函數為順序運行而不是同時運行。這是因為當前只有壹個進程供回調使用,而回調的運行順序是依據它們被定義的順序。

可能會註意到,每次按鈕按下時,回調操作被調用不止壹次。這種現象被稱作“開關抖動(switch bounce)”。這裏有兩種方法解決開關抖動問題:

或者

由於某種原因,若不希望程序檢測邊緣事件,可以將它停止:

原文鏈接

參考鏈接

  • 上一篇:人物故事周記
  • 下一篇:鄭州電子信息職業技術學院單招考什麽
  • copyright 2024編程學習大全網