Raspberry Pi 4B樹莓派 |#入門教程02# 樹莓派GPIO控制(Python、C)

樹莓派GPIO編號方式

  • 功能物理引腳
    從左到右,從上到下:左邊奇數,右邊偶數:1-40

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

通過打開終端窗口並運行命令,可以在Raspberry Pi上訪問方便的參考pinout。該工具由GPIO零 Python庫提供,該庫默認情況下安裝在Raspbian桌面映像上,而不安裝在Raspbian Lite上。
在這裏插入圖片描述
1、用Python通過PRI.GPIO命令控制GPIO(略)

2、Python腳本控制GPIO

蜂鳴器鳴叫程序測試

  • GPIO18
  • GND
    在這裏插入圖片描述

新建名爲buzzer.py的腳本:

pi@raspberrypi:~ $ sudo nano buzzer.py

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setmode(18,GPIO.OUT)
//BCM 編號GPIO18 ;wPI 編號 1;物理引腳 12

while True:

        GPIO.output(18,GPIO.HIGH)

        time.sleep(1)

        GPIO.output(18,GPIO.LOW)

        time.sleep(1)

        GPIO.cleanup()

nano編輯器保存退出命令依次爲:

Ctrl+O Ctrl+X Y

說明:while True下面的循環體要縮進,用空格或Tab(但不能混用)鍵縮進就行。

爲buzzer.py添加可執行權限:

pi@raspberrypi:~ $ sudo chmod +x buzzer.py

運行Python腳本:

pi@raspberrypi:~ $ sudo python buzzer.py

注意:提示“語法錯誤:不正確的語法”

File “buzzer.py”, line 9
whlie True:
^
SyntaxError: invalid syntax

停止運行命令:

Ctrl+C來中斷循環。

有興趣的話,可以試試用Python通過PRI.GPIO命令控制GPIO。

3、藉助第三方庫文件控制GPIO

樹莓派內核中已經編譯自帶了 GPIO 的驅動,我們常通過一些第三方寫好的庫函數來完成具體的操作,比較常見的操作庫函數有:

3.1 Python 庫:

  • Python GPIO

Python GPIO已經集成到了樹莓派內核,爲樹莓派官方資料中推薦且容易上手。PythonGPIO是一個小型的Python庫,可以幫助用戶完成raspberry相關IO口操作,但是PythonGPIO庫還沒有支持SPI、I2C或者1-wire等總線接口。

3.2 C語言庫:

wiringPi適合那些具有C語言基礎,在接觸樹莓派之前已經接觸過單片機或者嵌入式開發的人羣。wiringPi的API函數和Arduino非常相似,這也使得它廣受歡迎。作者給出了大量的說明和示例代碼,這些示例代碼也包括UART設備,I2C設備和SPI設備等。

BCM2835 C Library可以理解爲使用C語言實現的相關底層驅動,BCM2835 C Library的驅動庫包括GPIO. SPI和UART等,可以通過學習BCM2835 C Library熟悉BCM2835相關的寄存器操作。如果有機會開發樹莓派上的linux驅動,或自主開發python或PHP擴展驅動,可以從BCM2835 C Library找到不少的“靈感”。

4、WiringPi GPIO安裝

WiringPi 是應用於樹莓派平臺的 GPIO 控制庫函數,WiringPi 遵守 GUN Lv3。wiringPi 使用 C 或者 C++開發並且可以被其他語言包轉,例如Python、ruby或者PHP等。

WiringPi 包括一套 GPIO 控制命令,使用 GPIO 命令可以控制樹莓派 GPIO 管腳。用戶可以利用gpio命令通過shell腳本控制或查詢GPIO管腳。

4.1 WiringPi 安裝

更新列表:

pi@raspberrypi:~ $ sudo apt-get update

更新軟件:

pi@raspberrypi:~ $ sudo apt-get upgrade

安裝 wiringpi 庫:

pi@raspberrypi:~ $ sudo apt-get install wiringpi

更新wiringpi 庫的方法

4.2 測試

WiringPi 包括一套 GPIO 命令,使用 GPIO 命令可以控制樹莓派上的各種接口,通過以下指令可以測試 WiringPi 是否安裝成功。

pi@raspberrypi:~ $ gpio -v

查看GPIO圖:(這一步報錯沒有gpio圖)
pi@raspberrypi:~ $ gpio readall

4.3 編寫代碼

新建一個名爲buzzer.c的源程序

pi@raspberrypi:~ $ sudo nano buzzer.c

代碼內容如下:

#include <wiringPi.h>//注意大小寫

int main(void) {

wiringPiSetup();//注意大小寫

pinMode (1, OUTPUT);

for(;;) {

digitalWrite(1, HIGH);
delay (500);

digitalWrite(1, LOW);
delay (500) ;

}

}

說明:看看上一小節的圖,BCM編號的GPIO18引腳在wiringPi編號中是1。
在這裏插入圖片描述
在這裏插入圖片描述

4.4 編譯運行

編譯:

第一種編譯:pi@raspberrypi:~ $ gcc buzzer.c -o buzzer -l wiringPi

第二種編譯pi@raspberrypi:~ $ gcc buzzer -l wiringPi buzzer.c

注意:-l wiringPi表示動態加載 wiringPi 共享庫。

編譯的時候這裏報錯 “ /usr/bin/ld: cannot find -lwiringpi
collect2: error: ld returned 1 exit status ”,原因是編譯的時候 wiringPi 沒有區分大小寫。

運行:

第一種:pi@raspberrypi:~ $ sudo ./buzzer
第二種pi@raspberrypi:~ $ ./buzzer

停止運行:

Ctrl+C來中斷循環。


參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章