日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树莓派学习笔记——GPIO功能学习

發布時間:2025/3/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树莓派学习笔记——GPIO功能学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.前言

樹莓派現在越來越火,網上樹莓派的資料也越來越多。樹莓派源自英國,國外嵌入式開源領域具有良好的分享精神,樹莓派各種集成庫也層出不窮,下面推薦幾個。

python GPIO 】 【開發語言】——python 【簡單介紹】——該庫更確切的名稱為raspberry-gpio-python,樹莓派官方資料中推薦且容易上手。python GPIO是一個小型的python庫,可以幫助用戶完成raspberry相關IO口操作。但是python GPIO庫還沒有支持SPI、I2C或者1-wire等總線接口。除了python GPIO之外,還有眾多的python擴展庫(例如webiopi),毫無疑問的說python非常適合樹莓派,樹莓派也非常適合python。
wiringPi
【開發語言】——C語言 【簡單介紹】——wiringPi適合那些具有C語言基礎,在接觸樹莓派之前已經接觸過單片機或者嵌入式開發的人群。wiringPi的API函數和arduino非常相似,這也使得它廣受歡迎。作者給出了大量的說明和示例代碼,這些示例代碼也包括UART設備,I2C設備和SPI設備等,毫無疑問地說wiringPi功能非常強大。
BCM2835 C Library 】 【開發語言】——C語言 【簡單介紹】BCM2835 C Library可以理解為使用C語言實現的相關底層驅動,它給我的感覺更像STM32的庫函數,BCM2835 C Library的驅動庫包括GPIO、SPI和UART等,可以通過學習BCM2835 C Library熟悉BCM2835相關的寄存器操作。如果有機會開發樹莓派上的linux驅動,或自主開發python或PHP擴展驅動,可以從BCM2835 C Library找到不少的“靈感”。 【相關博文】? 更多樹莓派學習筆記請參考 ——【 樹莓派學習筆記——索引博文

1.硬件準備

【樹莓派】——在開始所有的實驗之前,你需要一塊完整的樹莓派。 【IO擴展板】——可以通過淘寶購買IO擴展板,或者購買萬用板和杜邦線自行制作IO擴展板。


圖1 樹莓派擴展板——圖片來自 天貓 大菠蘿數碼專營店



圖2 運行效果圖

2.注意事項

【編號方式】


圖3 GPIO編號方式——該圖片來自wiringPi說明文檔
樹莓派的軟件擴展庫雖然很多,但也導致了擴展庫“碎片化”的問題,例如操作樹莓派的GPIO端口,GPIO的編號便存在三種不同的方式 【1】插座編號方式 編號側重P1插座側,從上到下,從左到右。正如圖3的Header一欄。 【2】BCM2835編號方式 編號側重CPU寄存器,根據BCM2835的GPIO寄存器編號。正如圖3 BCM GPIO一欄。 【3】wiringPi編號方式 編號側重實現邏輯,把擴展GPIO端口從0開始編號,這種編號方便編程。正如圖3 WiringPi一欄。 【舉例說明】 插座編號方式 11 -> BCM2835編號方式 17 -> wiringPi編號方式 GPIO0。無論如何它都是同一個IO管腳。 【代碼寫在哪里】 【1】直接在樹莓派中編寫 樹莓派中有幾款代碼(文本)編輯軟件,可以在樹莓派中編寫代碼。 【2】在windows中編寫 可以在windows中編寫代碼,如果是Python腳本可通過FTP軟件傳輸到樹莓派中,然后使用SSH客戶端登錄到樹莓派中執行Python腳本。如果是C語言文件,除了使用FTP傳輸之外還需要在樹莓派上編譯才可以生成可執行文件(相當于windows上的exe文件)。相關軟件操作請參考【 樹莓派學習筆記——常用軟件匯總 】 【3】在其他linux中編寫 與windows中編寫代碼不同,在其他linux發行版(例如ubuntu)中可安裝交叉工具鏈,交叉編譯C文件生成在樹莓派的可執行文件,那么使用FTP傳輸可執行文件至樹莓派即可。其實方式【1】和方式【3】是幾乎相同的。
【本例原理圖】 為了說明問題本例只有一個LED,接在了樹莓派IO擴展插座的11腳。


圖4 原理圖

2 Python GPIO實現

【安裝過程】 【1】先安裝python-dev,輸入以下指令。sudo apt-get install python-dev 【2】安裝RPi.GPIO,依次輸入以下指令。特別說明,由于RPi.GPIO仍處于不斷完善的過程中,請參考前言中的鏈接下載最新的安裝代碼。# 下載?
$ wget? http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.3a.tar.gz# ?解壓縮?
$ tar xvzf RPi.GPIO-0.5.3a.tar.gz?
# 進入解壓之后的目錄?
$ cd RPi.GPIO-0.5.3a?
# 啟動安裝?
$ sudo python setup.py install
【示例代碼】 新建一個名為led.py的文件,該文件具體內容如下: [python]?view plaincopy
  • #?-*-?coding:?utf-8?-*-??
  • import?RPi.GPIO?as?GPIO??
  • import?time??
  • #?BOARD編號方式,基于插座引腳編號??
  • GPIO.setmode(GPIO.BOARD)??
  • #?輸出模式??
  • GPIO.setup(11,?GPIO.OUT)??
  • ??
  • while?True:??
  • ????GPIO.output(11,?GPIO.HIGH)??
  • ????time.sleep(1)??
  • ????GPIO.output(11,?GPIO.LOW)??
  • ????time.sleep(1)??
  • 【運行】 如果在windows上編寫代碼,請使用FTP軟件下載到樹莓派中,使用SSH客戶端登陸樹莓派,cd命令進入文件所在目錄,然后輸入指令
    sudo python led.py
    好吧,擴展板上的LED等開始閃爍了。最后使用Ctrl+C結束Python程序。 【簡單說明】 【1】GPIO.setmode(GPIO.BOARD),采用插座引腳編號方式。 【2】由于采用插座引腳編號方式,此處的11腳相當于BCM2835寄存器編號方式的引腳11。

    4 WiringPi實現

    【安裝過程】
    詳見【 樹莓派學習筆記——wiringPi簡介、安裝和管腳說明 】 【示例代碼】 新建一個名為blink.c文件,該文件具體內容如下: [cpp]?view plaincopy
  • #include?<wiringPi.h>??
  • int?main(void)??
  • {??
  • ??wiringPiSetup()?;??
  • ??pinMode?(0,?OUTPUT)?;??
  • ??for(;;)???
  • ??{??
  • ????digitalWrite(0,?HIGH)?;?delay?(500)?;??
  • ????digitalWrite(0,??LOW)?;?delay?(500)?;??
  • ??}??
  • }??
  • 【運行】 如果在windows上編寫代碼,請使用FTP軟件下載到樹莓派中,使用SSH客戶端登陸樹莓派,cd命令進入文件所在目錄,然后輸入gcc指令 gcc -Wall -o blink blink.c -lwiringPi 接著輸入以下命令執行程序
    sudo ./blink 程序順利運行,最后使用ctrl+c可以結束程序。
    【簡單說明】 【1】不確定的最后狀態,由于程序停止的時間未知,所有LED可能為點亮狀態也可能會熄滅狀態。 【2】和python的程序相比,GPIO的端口號似乎發生了變化,但是實際上為同一個IO,只是IO的編號方式略有不同。 【3】-lwiringPi表示動態加載wiringPi共享庫,如果不熟悉gcc指令和makefile,請參考系列博文——【 Linux學習筆記——例說makefile 索引博文

    5 BCM2835 C Library

    【安裝過程】 特別說明,由于BCM2835 C Library仍處于不斷完善的過程中,請參考前言中的鏈接下載最新的安裝代碼。# 下載
    $ wget? http://www.airspayce.com/mikem/bcm2835/bcm2835-1.35.tar.gz ?
    # 解壓縮
    $ tar xvzf bcm2835-1.35.tar.gz?
    # 進入壓縮之后的目錄
    $ cd bcm2835-1.35
    # 配置
    ./configure
    # 從源代碼生成安裝包
    make
    # 執行檢查
    sudo make check
    # 安裝 bcm2835庫
    sudo make install
    【示例代碼】 新建一個名為blink.c的程序,程序的具體內容如下: [cpp]?view plaincopy
  • #include?<bcm2835.h>??
  • ??
  • //?P1插座第11腳??
  • #define?PIN?RPI_GPIO_P1_11??
  • ??
  • int?main(int?argc,?char?**argv)??
  • {??
  • ??if?(!bcm2835_init())??
  • ??return?1;??
  • ??
  • ??//?輸出方式??
  • ??bcm2835_gpio_fsel(PIN,?BCM2835_GPIO_FSEL_OUTP);??
  • ??
  • ??while?(1)??
  • ??{??
  • ????bcm2835_gpio_write(PIN,?HIGH);??
  • ????bcm2835_delay(100);??
  • ??????
  • ????bcm2835_gpio_write(PIN,?LOW);??
  • ????bcm2835_delay(100);??
  • ??}??
  • ??bcm2835_close();??
  • ??return?0;??
  • }??
  • 【運行】 如果在windows上編寫代碼,請使用FTP軟件下載到樹莓派中,使用SSH客戶端登陸樹莓派,cd命令進入文件所在目錄,然后輸入gcc指令 gcc -o blink blink.c -lbcm2835 接著執行該程序,輸入以下指令
    sudo ./blink 程序順利運行,最后使用ctrl+c可以結束程序。 【1】和wiringPi的情況相似,若關閉程序LED燈可能點亮也可能熄滅。 【2】雖然GPIO端口再次發生了變化,但還是指向那個LED燈。 【3】-lbcm2835表示動態加載bcm2835共享庫,如果不熟悉gcc指令和makefile,請看看我的其他博文吧。

    6 未來做些什么

    實踐GPIO輸入功能,實踐SPI功能,實踐I2C功能等。最后綜合以上若干內容結合web做些好玩的應用。

    總結

    以上是生活随笔為你收集整理的树莓派学习笔记——GPIO功能学习的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。