標(biāo)題:
樹(shù)莓派GPIO初級(jí)使用教程分享
[打印本頁(yè)]
作者:
楊9999
時(shí)間:
2018-12-18 16:06
標(biāo)題:
樹(shù)莓派GPIO初級(jí)使用教程分享
樹(shù)莓派在控制 GPIO 的時(shí)候一般有以下三種方式:
Python GPIO
該庫(kù)更確切的名稱(chēng)為 raspberry-gpio-python,樹(shù)莓派官方資料中推薦且容易上手。python GPIO 是一個(gè)小型的 python 庫(kù),可以幫助用戶(hù)完成 raspberry 相關(guān) IO 口操作。但是 python GPIO 庫(kù) 還沒(méi)有支持 SPI、I2C 或者 1-wire 等總線接口。除了 python GPIO 之外,還有眾多的 python 擴(kuò) 展庫(kù)(例如 webiopi),毫無(wú)疑問(wèn)的說(shuō) python 非常適合樹(shù)莓派,樹(shù)莓派也非常適合 python。
wiringPi
wiringPi 適合那些具有 C 語(yǔ)言基礎(chǔ),在接觸樹(shù)莓派之前已經(jīng)接觸過(guò)單片機(jī)或者嵌入式開(kāi)發(fā)的人 群。wiringPi 的 API 函數(shù)和 arduino 非常相似,這也使得它廣受歡迎。作者給出了大量的說(shuō)明和 示例代碼,這些示例代碼也包括 UART 設(shè)備,I2C 設(shè)備和 SPI 設(shè)備等,毫無(wú)疑問(wèn)地說(shuō) wiringPi 功能非常強(qiáng)大。
BCM2835 C Library
BCM2835 C Library 可以理解為使用 C 語(yǔ)言實(shí)現(xiàn)的相關(guān)底層驅(qū)動(dòng),它給我的感覺(jué)更像 STM32 的 庫(kù)函數(shù),BCM2835 C Library 的驅(qū)動(dòng)庫(kù)包括 GPIO、SPI 和 UART 等,可以通過(guò)學(xué)習(xí) BCM2835 C Library 熟悉 BCM2835 相關(guān)的寄存器操作。如果有機(jī)會(huì)開(kāi)發(fā)樹(shù)莓派上的 linux 驅(qū)動(dòng),或自主開(kāi)發(fā) python 或 PHP 擴(kuò)展驅(qū)動(dòng),可以從 BCM2835 C Library 找到不少的“靈感”。
準(zhǔn)備工作
開(kāi)始進(jìn)行實(shí)驗(yàn)之前,可能需要自己動(dòng)手焊接一個(gè)簡(jiǎn)單電路,也就是將一個(gè) LED 燈和一個(gè) 1K 的 電阻串接并接在樹(shù)莓派上,其次若是首次使用 GPIO,可能需要通過(guò)網(wǎng)絡(luò)安裝 GPIO 庫(kù),所以你 的樹(shù)莓派得連接網(wǎng)絡(luò),硬件電路連接如下圖所示:
首次使用這三種庫(kù)都需要進(jìn)行安裝,下面就針對(duì)每一種庫(kù)的安裝方法進(jìn)行簡(jiǎn)單說(shuō)明
1,安裝Python GPIO
行版本的系統(tǒng)已經(jīng)安裝好了,不過(guò)也可以使用
sudo apt-get install python-rpi.gpio
或者
sudo apt-get install python3-rpi.gpio
0.png
(56.6 KB, 下載次數(shù): 28)
下載附件
2018-12-18 18:53 上傳
Physical那一列對(duì)應(yīng)的就是樹(shù)莓派物理引腳的編號(hào),BCM 就是BCM2835的定義,wPi那列就是
wiringPi的定義,當(dāng)然在這里還能看到每個(gè)引腳的功能名稱(chēng),當(dāng)前工作模式以及當(dāng)前電壓。
用Python 實(shí)現(xiàn)
新建一個(gè)名為gpio_led.py 的文件,在windows下可以先新建一個(gè)記事本文件,然后把名字改
為 gpio_led.py 即可,注意擴(kuò)展名也需要由原來(lái)的.txt更改為.py,在 Linux系統(tǒng)中也一樣,然后
用記事本打開(kāi)文件,輸入如下內(nèi)容:
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
# BOARD編號(hào)方式,基于插座引腳編號(hào)
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下寫(xiě)的程序,則可以用一個(gè) FTP軟件將文件上傳到樹(shù)莓派中,然后用 cd命令
進(jìn)入文件目錄,通過(guò)下面命令即可執(zhí)行該程序,是不是看到LED閃爍起來(lái)了!
sudo python gpio_led.py
若不想程序執(zhí)行了可以使用 Ctrl+C結(jié)束 Python程序。
用WiringPi 實(shí)現(xiàn)
新建一個(gè) 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系統(tǒng)下新建的,則需要用 FTP軟件上傳到樹(shù)莓派中,同樣使用 cd命令
進(jìn)入文件所在目錄,然后使用如下命令進(jìn)行程序的編譯鏈接:
gcc -Wall -o gpio_led gpio_led.c -lwiringPi
成功編譯后會(huì)在當(dāng)前目錄下生成一個(gè)名為gpio_led的文件,使用 sudo ./gpio_led命令即可運(yùn)
行程序,當(dāng)然你不想程序運(yùn)行了也可以使用 Ctrl+C結(jié)束程序運(yùn)行。
用BCM2835 C Library 實(shí)現(xiàn)
同樣新建一個(gè)名為 gpio_led.c的程序文件,然后輸入如下程序內(nèi)容:
#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系統(tǒng)下新建的,則需要用 FTP軟件上傳到樹(shù)莓派中,同樣使用 cd命令
進(jìn)入文件所在目錄,然后使用如下命令進(jìn)行程序的編譯鏈接:
gcc -Wall -o gpio_led gpio_led.c -lbcm2835
成功編譯后會(huì)在當(dāng)前目錄下生成一個(gè)名為gpio_led的文件,使用 sudo ./gpio_led命令即可運(yùn)行程序,當(dāng)然你不想程序運(yùn)行了也可以使用 Ctrl+C結(jié)束程序運(yùn)行。
結(jié)束語(yǔ)
以上內(nèi)容都是針對(duì)初次使用 GPIO時(shí)需要做的工作,GPIO 本身功能還是比較強(qiáng)大的,比如SPI,I2C,UART 總線控制等。
完整的pdf格式文檔51黑下載地址:
樹(shù)莓派GPIO初級(jí)使用學(xué)習(xí)教程.pdf
(262.52 KB, 下載次數(shù): 27)
2018-12-18 16:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1