0. 平臺
- 樹莓派3
- GPIO模塊
- python環境
1. 導入模塊
import RPi.GPIO as GPIO
通過這種方式,在腳本後面可以使用GPIO來引用該模塊。
還可以使用下面的代碼來測試是否加載成功:
try:
import RPi.GPIO as GPIO
except RuntimeError:
print("Error importing RPi.GPIO!")
2. 設置模式
樹莓派的引腳引用模式有兩種,一種是板子上排插的順序,還有種是BCM引腳順序,具體看下面的這個示意圖:
物理接口就是第一種,稱爲GPIO.BOARD
;BCM編碼稱爲稱爲GPIO.BCM
。
設置引腳引用模式:
GPIO.setmode(GPIO.BOARD)
#or
GPIO.setmode(GPIO.BCM)
檢測使用的哪種模式可以使用:
mode=GPIO.getmode()
mode
的取值有GPIO.BOARD
, GPIO.BCM
, None
。
3. 設置引腳方向(輸入,輸出)
以下代碼無特殊說明,均使用GPIO.BOARD
引腳映射模式。
如設置40號引腳爲輸入方向:
GPIO.setup(40,GPIO.IN)
輸出同理:
GPIO.setup(40,GPIO.OUT)
輸出還可以加初始電平:
GPIO.setup(40,GPIO.OUT,initial=GPIO.HIGH)
如果要同時設置多個引腳:
list=[11,12]
GPIO.setup(list,GPIO.OUT)
(目前有個疑問,樹莓派設置成輸入方向時,有無初始值【上拉或下拉】,設置成輸出方向是,是開漏還是推輓?有時間試驗一下。)
4. 獲取輸入
GPIO.setup(40,GPIO.IN)
in_value=GPIO.input(40)
in_value
的取值爲0/GPIO.LOW/False
or 1/GPIO.HIGH/True
。
5. 輸出電平
GPIO.setup(40,GPIO.OUT)
GPIO.output(40,GPIO.HIGH)
6. 清空狀態
在python的GPIO文檔中建議,在程序的最後清空引腳狀態來保護引腳:
“`python
GPIO.cleanup() #清空所有引腳狀態
GPIO.cleanup(chanList) #清空部分引腳狀態
7. 一點提醒
文檔中說到,使用python的gpio庫是基於內核的,由於內核的搶佔機制,使得其不適用於實時性系統項目。
相關文檔:https://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/