天天看點

一起玩轉樹莓派(2)——從雙色LED燈開始(一)

一、從了解GPIO開始

GPIO全稱General-purpose input/output,即通用型輸入輸出,其引腳能夠供使用者自由的進行使用,可以對其進行輸入,也可以讀取其資料進行資料輸出,這些引腳的輸入或輸出都會關聯到某個寄存器,寄存器的值控制引腳的電平高低。

以筆者使用樹莓派3B+為例,其有40個GPIO引腳,在開始程式設計之前,我們首先要搞清楚每個引腳的功能意義,從樹莓派官網的文檔中可以找到GPIO引腳的功能介紹,如下圖所示:

一起玩轉樹莓派(2)——從雙色LED燈開始(一)

我們并不需要對樹莓派的GPIO引腳做深入的記憶,隻需要記住當正面擺放樹莓派時,其最左上角的一個引腳對應的是5V電壓的功能,之後對照此圖即可确定每一個引腳的功能。後面我們會通過GPIO擴充闆加面包闆的方式來使用這些引腳,擴充闆上預設會标注一些引腳功能,我們使用起來會更加友善。

筆者使用的擴充闆引腳标注示如下:

一起玩轉樹莓派(2)——從雙色LED燈開始(一)

使用排線将其與樹莓派正向連接配接,如下圖所示:

一起玩轉樹莓派(2)——從雙色LED燈開始(一)

可以看到擴充闆上的引腳标注與樹莓派本身的引腳排布并不一緻,下面我會給大家介紹如何定位到要使用的引腳。

二、關于GPIO引腳編碼

常用的GPIO引腳編碼有3種。

我們也可以在樹莓派的終端輸入如下指令檢視GPIO引腳功能:

pinout      

輸出效果如下圖所示:

{ "src": "", "originWidth": 1258, "originHeight": 1444, "display": "inline", "align": "left", "linkTarget": "_blank", "status": "error", "style": "none", "search": "", "margin": { "top": false, "bottom": false }, "width": 1258, "height": 1444, "message": "圖檔不支援拷貝複制,請單獨複制上傳", "size": 0 }

需要注意,上圖中的GPIO使用的是邏輯編碼,從1開始,實際上BCM編碼并不是從1開始的。

第1種:BOARD實體編碼

實體編碼比較好了解,也很直覺,其就是根據樹莓派上40個引腳的位置進行排序編碼,如部落格中第一張圖所示,正向放置樹莓派時,第2排的第1個引腳編号為1,第1排第1個引腳編号為2,依次類推。後面在編寫代碼時,我們使用的編碼方式也是這種。

第2種:BCM編碼

BCM編碼是一種更底層的編碼方式,與系統中信道編号相對應。在使用一個引腳時,如果使用BCM編碼,首先需要查找信道号和實體引腳編号之間的對應規則。對于不同的樹莓派版本,可能無法相容。下圖很好的描述了幾種編碼的資訊:

一起玩轉樹莓派(2)——從雙色LED燈開始(一)

上面我們擴充闆上GPIO引腳的标注,實際上使用的就是BCM編碼,這也就是說,如果我們要使用樹莓派GPIO2和GPIO3兩個功能引腳,指定的是實體引腳需要是13和15。直接将線連接配接到擴充闆的G22和G27一行即可,非常直覺。

第3種:WiringPi編碼

WiringPi編碼對應的引腳号是在wiringPI庫中所使用的,網上很容易找到其編碼的相關資料,本系列部落格我們不會使用到這個編碼,這裡不再贅述。

現在,我們總結一下如何使用GPIO引腳。

  • 首先在上圖中找到自己要使用的功能引腳,如GOIP.2和GPIO.3兩個功能引腳。
  • 之後找到其對應的實體引腳,即13和15。
  • 如果不使用擴充闆,則直接接線實體引腳,如果要使用,則找到其對應的BCM編碼,27和22。
  • 使用擴充闆上的G27和G22引腳插槽。

繼續閱讀