樹莓派在控制 GPIO 的時候一般有以下三種方式:
Python GPIO
該庫更確切的名稱為 raspberry-gpio-python,樹莓派官方資料中推薦且容易上手。python GPIO 是一個小型的 python 庫,可以幫助用戶完成 raspberry 相關 IO 口操作。但是 python GPIO 庫 還沒有支持 SPI、I2C 或者 1-wire 等總線接口。除了 python GPIO 之外,還有眾多的 python 擴 展庫(例如 webiopi),毫無疑問的說 python 非常適合樹莓派,樹莓派也非常適合 python。
wiringPi
wiringPi 適合那些具有 C 語言基礎,在接觸樹莓派之前已經接觸過單片機或者嵌入式開發的人 群。wiringPi 的 API 函數和 arduino 非常相似,這也使得它廣受歡迎。作者給出了大量的說明和 示例代碼,這些示例代碼也包括 UART 設備,I2C 設備和 SPI 設備等,毫無疑問地說 wiringPi 功能非常強大。
BCM2835 C Library
BCM2835 C Library 可以理解為使用 C 語言實現的相關底層驅動,它給我的感覺更像 STM32 的 庫函數,BCM2835 C Library 的驅動庫包括 GPIO、SPI 和 UART 等,可以通過學習 BCM2835 C Library 熟悉 BCM2835 相關的寄存器操作。如果有機會開發樹莓派上的 linux 驅動,或自主開發 python 或 PHP 擴展驅動,可以從 BCM2835 C Library 找到不少的“靈感”。
準備工作
開始進行實驗之前,可能需要自己動手焊接一個簡單電路,也就是將一個 LED 燈和一個 1K 的 電阻串接并接在樹莓派上,其次若是首次使用 GPIO,可能需要通過網絡安裝 GPIO 庫,所以你 的樹莓派得連接網絡,硬件電路連接如下圖所示:

首次使用這三種庫都需要進行安裝,下面就針對每一種庫的安裝方法進行簡單說明
1,安裝Python GPIO
行版本的系統已經安裝好了,不過也可以使用
sudo apt-get install python-rpi.gpio
或者
sudo apt-get install python3-rpi.gpio

Physical那一列對應的就是樹莓派物理引腳的編號,BCM 就是BCM2835的定義,wPi那列就是
wiringPi的定義,當然在這里還能看到每個引腳的功能名稱,當前工作模式以及當前電壓。
用Python 實現
新建一個名為gpio_led.py 的文件,在windows下可以先新建一個記事本文件,然后把名字改
為 gpio_led.py 即可,注意擴展名也需要由原來的.txt更改為.py,在 Linux系統中也一樣,然后
用記事本打開文件,輸入如下內容:
# -*- 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軟件將文件上傳到樹莓派中,然后用 cd命令
進入文件目錄,通過下面命令即可執行該程序,是不是看到LED閃爍起來了!
sudo python gpio_led.py
若不想程序執行了可以使用 Ctrl+C結束 Python程序。
用WiringPi 實現
新建一個 gpio_led.c的文件,將如下程序代碼輸入文件中
#include <wiringPi.h>
int main(void)
{
wiringPiSetup() ;
pinMode (0, OUTPUT) ;
for(;;)
{
digitalWrite(0, HIGH) ; delay (500) ;
digitalWrite(0, LOW) ; delay (500) ;
}
}
若該文件是在Windows系統下新建的,則需要用 FTP軟件上傳到樹莓派中,同樣使用 cd命令
進入文件所在目錄,然后使用如下命令進行程序的編譯鏈接:
gcc -Wall -o gpio_led gpio_led.c -lwiringPi
成功編譯后會在當前目錄下生成一個名為gpio_led的文件,使用 sudo ./gpio_led命令即可運
行程序,當然你不想程序運行了也可以使用 Ctrl+C結束程序運行。
用BCM2835 C Library 實現
同樣新建一個名為 gpio_led.c的程序文件,然后輸入如下程序內容:
#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軟件上傳到樹莓派中,同樣使用 cd命令
進入文件所在目錄,然后使用如下命令進行程序的編譯鏈接:
gcc -Wall -o gpio_led gpio_led.c -lbcm2835
成功編譯后會在當前目錄下生成一個名為gpio_led的文件,使用 sudo ./gpio_led命令即可運行程序,當然你不想程序運行了也可以使用 Ctrl+C結束程序運行。
結束語
以上內容都是針對初次使用 GPIO時需要做的工作,GPIO 本身功能還是比較強大的,比如SPI,I2C,UART 總線控制等。
完整的pdf格式文檔51黑下載地址:
樹莓派GPIO初級使用學習教程.pdf
(262.52 KB, 下載次數: 27)
2018-12-18 16:06 上傳
點擊文件名下載附件
|