基于樹(shù)莓派的python GPIO編程-常用函數(shù)綜合整理

Hello,朋友們大家好,歡迎大家來(lái)到LIUSE網(wǎng)絡(luò)。

隨著Mini型PC越來(lái)越多,與之而來(lái)的創(chuàng)客也豐富起來(lái),比如說(shuō)Arduino就是一個(gè)非常好里例子。

不過(guò),Arduino畢竟是一塊適合入門型的基礎(chǔ)開(kāi)發(fā)板,無(wú)論是從性能上,還是處理復(fù)雜問(wèn)題的實(shí)現(xiàn)上,其本身都是有限的。所以有些時(shí)候我們會(huì)考慮成本更高的卡片式PC,類似于樹(shù)莓派、香蕉派、橙子派等等。

話雖然可以這么說(shuō),但作為PC跟GPIO一體的板卡,有些朋友剛拿到手確實(shí)是不知道何從下手,更不知道如何去控制各個(gè)GPIO引腳,那今天的文章,鄙人就綜合的說(shuō)一下常用的函數(shù)等等,其實(shí)好多地方跟Arduino的代碼是很相似的。

在這里還是要推薦下我自己建的Python開(kāi)發(fā)學(xué)習(xí)群:483546416,群里都是學(xué)Python開(kāi)發(fā)的,如果你正在學(xué)習(xí)Python ,小編歡迎你加入,大家都是軟件開(kāi)發(fā)黨,不定期分享干貨(只有Python軟件開(kāi)發(fā)相關(guān)的),包括我自己整理的一份2018最新的Python進(jìn)階資料和高級(jí)開(kāi)發(fā)教程,歡迎進(jìn)階中和進(jìn)想深入Python的小伙伴

先說(shuō)庫(kù)文件:

樹(shù)莓派我們編程一般都直接用高效的python,針對(duì)于GPIO編程,python也是有這一方面的庫(kù)的,這里最有名也是最常用的就是RPI.GPIO了。這個(gè)庫(kù)是專門為樹(shù)莓派GPIO編程所設(shè)計(jì)的,利用它你可以愉快的像Arduino那樣輕松控制GPIO管腳。

安裝:

sudo apt-get -y python-pip #安裝pip

sudo pip install rpi.gpio #安裝RPI.GPIO

安裝完成后在實(shí)際運(yùn)用的時(shí)候,我們也會(huì)像arduino那樣去設(shè)置輸入輸出,設(shè)置高低電平,獲取針腳值等等,那下面我就把整理的內(nèi)容函數(shù)都貼出來(lái)。

在這說(shuō)一下管腳,拿到樹(shù)莓派之后你會(huì)發(fā)現(xiàn)板子上有兩排管腳,這對(duì)應(yīng)這什么呢?請(qǐng)看下圖:

(管腳對(duì)應(yīng))

當(dāng)然如果說(shuō)你的版本不同可能會(huì)略有差別,你同樣可以使用gpio?readall命令來(lái)打印出所有管腳:

(打印管腳)

好,做完上面的拓?fù)洌覀儊?lái)講一下關(guān)于GPIO編程的一些常用函數(shù)。

1.導(dǎo)入庫(kù):

import RPi.GPIO as GPIO

2.設(shè)置引腳模式:

GPIO.setmode(GPIO.BMC/BOARD) #BMC或者BOARD模式

3.設(shè)置引腳為輸入:

GPIO.setup(pin,GPIO.IN)

4.設(shè)置引腳為輸出:

GPIO.setup(pin,GPIO.OUT)

5.設(shè)置初始化高電平:

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

6.設(shè)置初始化為低電平:

GPIO.setup(pin,GPIO.OUT,initial=GPIO.LOW)

當(dāng)然python的好處是可以創(chuàng)建一個(gè)列表,然后將列表帶入函數(shù)中,使其一次性執(zhí)行多個(gè)針腳的輸入輸出,如:

PinList=[pin1,pin2,pin3]

GPIO.setup(PinList,GPIO.IN)

通過(guò)創(chuàng)建一個(gè)列表將列表中加入引腳的定義,實(shí)現(xiàn)多引腳同時(shí)設(shè)定為輸入。

讀取輸入值:

GPIO.input(pinx) #input()方法可以讀取pinx引腳的值

當(dāng)然前提是你的引腳接了一些傳感器,比如溫度傳感器,光線傳感器等等。

上下拉:

先說(shuō)什么是上下拉

上拉和下拉是指GPIO輸出高電位(上拉)還是低電位(下拉)。上拉就是輸入高電平,然后接一個(gè)上拉電阻(起保護(hù)作用),知道上拉就表示該端口在默認(rèn)情況下輸入為高電平。下拉就是輸入低電平,然后接一個(gè)下拉電阻。

我們?cè)谧龉苣_的上下拉時(shí),在電路設(shè)計(jì)上一般都是加上下拉電阻,但在樹(shù)莓派身上如何不改變電路通過(guò)python去控制呢?

在python的GPIO初始化上可以用GPIO.setup(pinx,GPIO.IN,pull_up_down=GPIO.PUD_UP/GPIO.DOWN)來(lái)控制上下拉。

設(shè)置中斷:

設(shè)置終端通常有兩種方法,一種是wait_for_edge(),另一種為add_event_detect(),我們下面來(lái)介紹一下這兩個(gè)中斷。

1.wait_for_edge():用于檢測(cè)到邊沿之前阻止程序運(yùn)行

舉個(gè)例子:

channel = GPIO.wait_for_edge(channel, GPIO_RISING, timeout=5000)

if channel is None:

print('Timeout occurred')

else:

print('Edge detected on channel', channel)

延時(shí)5秒,如果超時(shí),程序繼續(xù)執(zhí)行,如果沒(méi)有超時(shí)將繼續(xù)等待。

2.add_event_detect():對(duì)一個(gè)引腳進(jìn)行監(jiān)聽(tīng),一旦引腳輸入發(fā)生了改變,調(diào)用event_detected()函數(shù)會(huì)返回True

舉個(gè)例子:

GPIO.add_event_detect(channel, GPIO.RISING)

do_something()

if GPIO.event_detected(channel):

print('Button pressed')

add_event_detect()多用于循環(huán)狀態(tài),并且它不會(huì)錯(cuò)過(guò)循環(huán)中輸入狀態(tài)的改變,多用在PyQt上。

PWM脈沖調(diào)節(jié):

PWM這個(gè)多用在控制電機(jī)上,特別是對(duì)我們做樹(shù)莓派小車對(duì)小車的控制上有很大的幫助。

我們用一個(gè)實(shí)例去說(shuō)明:

Pwm=GPIO.PWM(pin,frequence) #創(chuàng)建PWM實(shí)例

Pwm.start(dc) #啟動(dòng)PWM dc值(0.0

Pwm.ChangeFrequency(freq) #改變PWM頻率

Pwm.ChangeDutyCycle(dc) # 改變PWM的占空比0.0<=dc <=100.

Pwm.stop() #停止PWM

后面我們?cè)谡f(shuō)幾個(gè)常用的函數(shù),比如輸出、等待,并寫一個(gè)控制小燈閃爍的Demo

GPIO口輸出值:

GPIO.output(pinx,1/0)

1對(duì)應(yīng)GPIO.HIGH(高電平)0對(duì)應(yīng)GPIO.LOW(低電平)

延時(shí)函數(shù):

time.sleep(秒數(shù))

此函數(shù)為time庫(kù)里面的,你要想使用必須在之前import time

今天暫且介紹這么多,我們下面寫一個(gè)控制LED小燈閃爍的實(shí)例:

import RPi.GPIO as GPIO //引入函數(shù)庫(kù)

import time

RPi.GPIO.setmode(GPIO.BOARD) //設(shè)置引腳編號(hào)規(guī)則

RPi.GPIO.setup(11, RPi.GPIO.OUT) //將11號(hào)引腳設(shè)置成輸出模式

while True

GPIO.output(channel, 1) //將引腳的狀態(tài)設(shè)置為高電平,此時(shí)LED亮了

time.sleep(1) //程序休眠1秒鐘,讓LED亮1秒

GPIO.output(channel, 0) //將引腳狀態(tài)設(shè)置為低電平,此時(shí)LED滅了

time.sleep(1) //程序休眠1秒鐘,讓LED滅1秒

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容