樹莓派4硬體 GPIO篇

2022-01-12 04:51:13 字數 1914 閱讀 9772

樹莓派拿到手已經兩個多月了,其實從最開始的期待安裝好ros,到前幾天完成了ros的原始碼編譯安裝,對linux的調教也時花了些時間的。現在終於想起來,樹莓派上還有gpio,還沒有用過了。說幹就幹,開始。以下操作都是在樹莓派已經安裝好了官方的系統,也已經公升級到了最新版了。總共有40個gpio,實際管腳圖為:

在計算機中,通常用高、低兩個電壓來表示二進位制的1和0。樹莓派也是如此。gpio用相同的方式來表示資料。每個gpio的pin都能處於輸入或輸出狀態。當處於輸出狀態時,系統可以把1或0傳給該pin。如果是1,那麼對應的物理pin向外輸出3.3v的高電壓,否則輸出0v的低電壓。相應的,處於輸入狀態的pin可以探測物理pin上的電壓。如果是高電壓,那麼該pin將向系統返回1,否則返回0。就是利用上述簡單機制,gpio實現了和物理電路的互動。通過管腳圖,不難看出使用方法和其他的開發板是一樣的,先設定管腳的方向,再設定管腳的數值。將其配置為輸入或輸出,通過讀寫相應的io的暫存器值,獲取io狀態,通過值取得io的數值,完成io的狀態的改變。

建立乙個python**:

1

import

rpi.gpio as gpio

2import

time

3gpio.setmode(gpio.bcm)

4 gpio.setup(21,gpio.out)56

while

true :

7 gpio.output(21,gpio.high)

8 time.sleep(0.05)

9 gpio.output(21,gpio.low)

10 time.sleep(0.05)

建立乙個c**:

使用bash搞定:用bash命令來控制gpio21。在linux中,外部裝置經常被表示成檔案。向檔案寫入或讀取字元,就相當於向裝置輸出或者從裝置輸入字元。樹莓派上的gpio埠也是如此,其代表檔案位於/sys/class/gpio/下。首先,啟用gpio21:

echo 21 > /sys/class/gpio/export
上邊命令的意思,是把字元"21"寫入到/sys/class/gpio/export。可以看到,命令執行後,/sys/class/gpio/下面增加了代表gpio21的乙個目錄,目錄名就是gpio21。下一步,我們把gpio21置於輸出狀態:

echo out > /sys/class/gpio/gpio21/direction
檔案/sys/class/gpio/gpio21/direction用於控制gpio21的方向。我們向裡面寫入了代表輸出的字元"out"。

echo 1 > /sys/class/gpio/gpio21/value
最後,向gpio21寫入1,從而讓pin處於高電壓:可以看到,led燈亮了起來。如果想關掉led燈,只需要向gpio21寫入0:

echo 0 > /sys/class/gpio/gpio21/value
使用完畢gpio21,可以刪除該埠:

echo 21 > /sys/class/gpio/unexport
/sys/class/gpio/gpio21隨即消失。

2 python gpio實現

4 wiringpi實現

【簡單說明】

不確定的最後狀態,由於程式停止的時間未知,所有led可能為點亮狀態也可能會熄滅狀態。

和python的程式相比,gpio的埠號似乎發生了變化,但是實際上為同乙個io,只是io的編號方式略有不同。

-lwiringpi表示動態載入wiringpi共享庫,如果不熟悉gcc指令和makefile,請參考系列博文——【linux學習筆記——例說makefile 索引博文】

5 bcm2835 c library

樹莓派GPIO控制 python篇

樹莓派的軟體擴充套件庫雖然很多,但也導致了擴充套件庫 碎片化 的問題,例如操作樹莓派的gpio埠,gpio的編號便存在三種不同的方式。插座編號方式 編號側重p1插座側,從上到下,從左到右。正如圖3的header一欄。bcm2835編號方式 編號側重cpu暫存器,根據bcm2835的gpio暫存器編號...

樹莓派瞎玩 4 控制GPIO

樹莓派瞎玩 4 控制gpio 樹莓派上提供了一組gpio general purpose input output,即通用輸入 輸出 介面,這些介面可以用於做一些電子相關的實驗 控制一些硬體裝置,如最常見的發光二極體 電機等,或者讀取一些訊號的狀態,如開關 感測器等。這裡需要注意的是,樹莓派中的gp...

樹莓派GPIO操作

樹莓派的gpio操作被抽象為檔案讀寫,下面以乙個例子來說明gpio操作 1 啟用gpio21 echo 21 sys class gpio export這個命令把字元 21 輸入 sys class gpio export之中,命令執行後,sys class gpio下面增加了代表gpio21的乙個...