1. 程式人生 > >3、樹莓派 RPI.GPIO 使用手冊

3、樹莓派 RPI.GPIO 使用手冊

     RPi.GPIO是 Python的一個module( 模組 ), 樹莓派官方系統預設已經安裝, 仍在不斷更新中, 截至20180521, 最新版0.6.3, 適配了樹莓派3B+, 可以訪問  python主頁下載原始碼 .       本文根據樹莓派RPI.GPIO模組的官方文件翻譯,當時的模組版本為0.6.3。官方的幫助文件的連結: https://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/

1、匯入模組

要匯入RPi.GPIO模組,請執行以下操作:

import RPi.GPIO 
as GPIO

通過這樣做,您可以通過指令碼的其餘部分將其稱為GPIO。

匯入模組並檢查它是否成功:

try
    import RPi.GPIO  as GPIO 
except RuntimeError 
    print
"Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script"

2、引腳編號

     在RPi.GPIO中,有兩種方法可以對Raspberry Pi上的IO引腳進行編號。第一種是使用BOARD編號系統。這是指Raspberry Pi板上P1接頭上的引腳號。使用這種編號系統的優點是,無論樹莓派的電路板版本如何,您的硬體都能正常工作。你不需要重新連線你的聯結器或更改你的程式碼。

     第二個編號系統是BCM號碼。這是一種較低級別的工作方式 - 它指的是Broadcom SOC上的通道號碼。您必須始終使用那個通道編號所對應的樹莓派板上哪個引腳的圖表。您的指令碼程式可能會在Raspberry Pi板的硬體修訂後而不能使用。

        樹莓派引腳有BOARD和BCM兩種編號方式( 使用python時? 似乎使用C還有一種wringPi編號方式 ), BOARD具有很好的適用性( 不用看介面圖,數引腳1~40就可以接線 ), 不論樹莓派1 2 3, 都不用修改程式碼, 吼啊! BCM編號方式換個版本再接線時數引腳是不行的, 需要看下下面的介面圖…不難看出推薦用BOARD編號方式. 但很多程式中使用BCM方式. 
下面給出一張樹莓派2B的硬體介面圖( 來源找不到了,侵刪 ): 
34

圖中的GPIOxx的方框即是BCM編碼方式, 直接寫數字的深灰框是BOARD編碼方式, 如BCM編碼方式的 GPIO02 對應BOARD編碼方式的 3.

只需要使用BCM編號方式時, 用下面這兩張好了, 不眼花: 
35

36 
圖片來源: 
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md 
http://elinux.org/RPi_Low-level_peripherals#I.C2.B2C


要指定您使用引腳編號方式:

GPIO.setmode(GPIO.BOARD)
  # or
GPIO.setmode(GPIO.BCM)

要檢測哪個引腳編號系統已被設定模式(例如,由另一個Python模組配置過模式):

mode = GPIO.getmode()

模式將是GPIO.BOARD,GPIO.BCM或None

3、警告

您可能在Raspberry Pi的GPIO上有多個指令碼/電路。因此,如果RPi.GPIO檢測到引腳已被配置為預設(輸入)以外的其他引腳,則在嘗試配置指令碼時會收到警告。要禁用這些警告:

GPIO.setwarnings(False)

4、設定一個通道

您需要設定您用作輸入或輸出的每個通道。將通道配置為輸入:

GPIO.setup(channel, GPIO.IN)

(其中通道是基於您指定的編號系統(BOARD或BCM)的通道編號)。

有關設定輸入通道的更多高階資訊可以在這裡找到

要將通道設定為輸出:

GPIO.setup(channel, GPIO.OUT)

(其中通道是基於您指定的編號系統(BOARD或BCM)的通道編號)。

您還可以為您的輸出通道指定一個初始值:

GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)

4、設定多個頻道

您可以一次設定多個通道(從0.5.8開始)。例如:

chan_list  =  [ 11 12 ]     #加你想盡可能多的渠道!
                       #你可以用元組代替,即:
                       #chan_list =(11,12)
GPIO.setup(chan_list, GPIO.OUT)

5、輸入

讀取GPIO引腳的值:

GPIO.input(channel)

     ( 其中通道是基於您指定的編號系統(BOARD或BCM)的通道編號)。這將返回0 / GPIO.LOW / False或1 / GPIO.HIGH / True。

     有幾種方法可以將GPIO輸入到您的程式中。第一種也是最簡單的方法是在某個時間點檢查輸入值。這就是所謂的“輪詢”,如果你的程式在錯誤的時間讀取了值,可能會錯過輸入。輪詢在迴圈中執行,並可能是處理器密集型的。響應GPIO輸入的另一種方式是使用'中斷'(邊沿檢測)。邊沿是從高電平到低電平(下降沿)或從低電平到高電平(上升沿)的意思。

       

5.1 上拉/下拉電阻

     如果你沒有連線到任何輸入引腳,它將'浮空'。換句話說,讀入的值是未定義的,因為它只有在按下按鈕或開關時才會連線到任何東西。由於引腳會接收到干擾,可能讀取到變化的值。

      為了解決這個問題,我們使用上拉或下拉電阻。這樣,可以設定輸入的預設值。可以在硬體上使用上拉/下拉電阻並使用軟體。在硬體中,通常使用輸入通道和3.3V(上拉)或0V(下拉)之間的10K電阻。RPi.GPIO模組允許您配置Broadcom SOC以在軟體中執行此操作:

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  # or
GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

(其中通道是基於您指定的編號系統的通道編號 - BOARD或BCM)。

5.2 測試輸入(輪詢)

您可以立即讀取IO引腳的輸入值:

if GPIO.input(channel):
    print('Input was HIGH')
else:
    print('Input was LOW')

要通過輪詢輪詢等待按鈕按下:

while GPIO.input(channel) == GPIO.LOW:
    time.sleep(0.01)  # wait 10 ms to give CPU chance to do other things

(這裡假設按下按鈕將輸入從LOW改變為HIGH)

5.3 中斷和邊緣檢測

    邊沿是電訊號從低電平變為高電平(上升沿)或從高電平變為低電平(下降沿)的狀態變化。很多時候,我們更關心輸入狀態的變化而非價值。這種狀態變化是一個事件

     為了避免在程式忙於做其他事情時按下按鈕,有兩種方法可以解決這個問題:

  • wait_for_edge()函式
  • event_detected()函式
  • 在檢測到邊緣時執行執行緒的回撥函式

wait_for_edge()函式

wait_for_edge()函式設計用於阻止程式的執行,直到檢測到邊緣。換句話說,上面等待按鈕按下的示例可以被重寫為:

GPIO.wait_for_edge(channel, GPIO
            
           

相關推薦

3樹莓 RPI.GPIO 使用手冊

     RPi.GPIO是 Python的一個module( 模組 ), 樹莓派官方系統預設已經安裝, 仍在不斷更新中, 截至20180521, 最新版0.6.3, 適配了樹莓派3B+, 可以訪問  python主頁下載原始碼 . 

3樹莓3 Model B ——— 樹莓GPIO點亮第一個LED

1、實驗前準備 樹莓派3B及電源 x1麵包板 x1LED燈 x1電阻220歐 x1 杜邦線 x2 2、實驗原理 樹莓派的IO口可以外接很多外設,如舵機、紅外發送接收模組、繼電器、步進電機、各類感測器、螢幕等。通過這些外設可以製作很多有趣的創客設計,改善我們的生活方式提高我

樹莓RPi.GPIO使用手冊

參考源:http://blog.csdn.net/qq_35893742/article/details/53428679 1.RPi.GPIO模組基本使用 匯入模組 匯入 RPi.GPIO 模組: import RPi.GPIO as GPIO1 通過下面的程式

4樹莓3B+的GPIO

pre gen general 查看 read img bubuko div 分享 GPIO(General Purpose I/O Ports)意思為通用輸入/輸出端口。 可以在終端重直接查看GPIO的定義。 在終端中直接輸入 gpio readall

樹莓通過GPIO控制步進電機

tps 分享 images logs http 分享圖片 .com 控制 圖片 一、接線方式與GPIO調用方法: 電源接入+5v和GND In1-4分別接GPIO1-4 正轉時,GPIO1-4分次傳入:[1,0,0,0],[sleep],[0,1,0,0],[sl

樹莓GPIO埠詳解

首先上一張埠圖   GPIO(GeneralPurposeI/OPorts)意思為通用輸入/輸出埠,通俗地說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態-是高電平或是低電平。GPIO是個比較重要的概念,使用者可以通過GPIO口和硬體進行資料互動(如UAR

5樹莓連線官方CSI攝像頭的使用

本篇博文大部分轉https://blog.csdn.net/u013162035/article/details/78580486 其中有部分細節根據自己的實際操作進行了修改 5.1樹莓派基本操作       目前提供了三個應用程式,分別為:raspis

4樹莓連線USB轉串列埠的使用

      樹莓派上自帶一個串列埠,用於連線藍芽或是串列埠命令列,串列埠資源很少,對於嵌入式的應用來說串列埠裝置很多,需要的串列埠數量也很多,因為通過USB外接串列埠是一個不錯的選擇。樹莓派的 raspberry 2018.04.18 stretch版本的系統中已經

2樹莓linux常用的命令

1、網路相關的命令       (1)檢視網路介面的狀態ifconfig    (2) 掃描無線網路訊號iwlist scan 2、檔案操作相關命令 (1)切換目錄 cd   (2)&n

1樹莓3B+ 開箱安裝系統及入門使用的基本設定

      一直想學習Linux的開發,補充高階應用的開發的短板,苦於沒有時間,最近有點時間購買了當前最火的卡片計算機,樹莓派3B plus版本,淘寶購買,同城發貨,拿到快遞後就迫不及待的開始學習Linux的里程。在網上學習了很多前輩位的分享,我這篇博文記錄自己

嵌入式系統(3)- 樹莓DIY小車 - 攝像頭的使用

1.基本設定 sudo raspi-config 命令,進入到樹莓派基本設定介面 選擇:     5 Interfacing Options 然後選擇     Camera Enable   &n

Linux系統使用入門進階總結(3)——樹莓安裝Ubuntu Mate系統,以及後期配置

文章轉自 https://blog.csdn.net/VennyJin/article/details/84995290 本文大部分參考了@henryheheng的博文 https://blog.csdn.net/henryheheng/article/details/78907406

樹莓GPIO程式設計

作者:Vamei 出處:http://www.cnblogs.com/vamei 嚴禁轉載。  樹莓派除了提供常見的網口和USB介面 ,還提供了一組GPIO(General Purpose Input/Output)介面。這組GPIO介面大大拓展了樹莓派的能力。GPIO不僅能實現通訊,還能直接控制電子元

樹莓gpio python使用

樹莓派上面的使用gpio實現功能擴充套件,有2種方式,大家應該都能找得到,我使用了RPi.GPIO. http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/   這個是官方的wifi,裡面有具體的使用。 https

在Ubuntu環境下用QT5開發樹莓GPIO程式(使用wiringPi庫)之一 搭建環境

準備工作: 一個樹莓派,我使用的是B+,裝上最新的Raspbian映象,RASPBIAN JESSIE WITH PIXEL 4.4 https://www.raspberrypi.org/downloads/raspbian/ Ubuntu作業系統,虛擬機器也可以,我使

Windows遠端kali(Ubuntu樹莓)安裝xrdp不成功(無法定位到安裝包 apt-get)(Unable to locate package )解決方法

首先想到的是裝完kali之後需要配置IP,這點做好了,區域網內可以訪問 今天想把kali安裝完之後,然後安裝xrdp sudo apt-get install xrdp 遇到了問題,發現報錯

樹莓GPIO操作幾種方式

轉載出處1、http://www.waveshare.net/study/article-600-1.html2、http://www.waveshare.net/study/article-601-1.htmla)使用shell指令碼方式b)使用sysfs方式,編寫.c檔案

在windows作業系統下遠端控制樹莓3樹莓3安裝win10系統)

         WindowsPowerShell遠端操作win10 1、以管理員身份執行 WindowsPowerShell 2、在啟動的PowerShell控制檯上輸入:       net start WinRM      (用於啟動WinRM服務,啟動遠端連

樹莓(RPi) CentOS7擴充套件記憶體卡剩餘空間

使用CentOS7官網映象進行燒錄的系統大約只佔用了2G的空間,但是TF卡卻有16G的空間可用,所以調整/root分割槽空間變的尤為重要,通過本文的例子即可將剩餘空間全部回收利用。 環境說明 裝置:Raspberry Pi 3b 系統:CentOS-

安卓使用socket控制樹莓GPIO口 python3.4實現

轉載請註明出處,謝謝! 樹莓派提供了python語言實現的gpio控制包,詳細介紹可見http://maxembedded.com/2014/07/using-raspberry-pi-gpio-using-python/#PinConfig。首先在系統中開啟