0018 樹莓派電腦控制第一個led燈亮起來

這節(jié)課開始,進入樹莓派硬件控制傳感器的世界,感受軟件和硬件結(jié)合帶來的無窮魅力。

硬件入手

根據(jù)后續(xù)課程的安排,需要入手的硬件零件如下:

面包板,杜邦線,led燈,蜂鳴器,溫濕度傳感器,單位數(shù)碼管,雙位數(shù)碼管

渠道推薦如下:

或者是這個:

以前面一個為例,進入之后,查找以下關(guān)鍵字和對應的型號:

面包板:

杜邦線:

選擇“20CM公對母”

led燈:

蜂鳴器:

可以買2個備用。

溫濕度傳感器:

單位數(shù)碼管:

雙位數(shù)碼管:

GPIO介紹

先來看一下樹莓派主板的一些對外的接口,這是反面的情況:

這是正面的情況:

重點關(guān)注上面有40根排針,這就是樹莓派用于控制外部傳感器的接口,稱之為GPIO

40根引腳如何進行編號呢,如果按照物理位置來編號,只要掌握一個規(guī)則就容易記?。?/p>

最靠近角上的那一根引腳為2號引腳。旁邊的就是1號引腳,具體請看上圖示意圖。

那么這40根引腳具體的用途和定義是什么呢,請看下面的圖:

這個圖是一個比較全面的一個定義,主要是因為對于這40根引腳有不同的編號規(guī)則來定義

雖然不同的規(guī)則叫的名字不一樣,但實際的用途是一致的

這里只學習一種編號規(guī)則,也就是物理位置編號,這樣更容易進行物理連接。

請看下面這張簡圖:

比如:1號引腳,是輸出1個3.3伏的電壓,也就是如果你拿一個數(shù)字萬用表去測量這根引腳的電壓,會一直測出來是3.3伏。

比如:2號引腳,是輸出1個5伏的電壓,也就是如果你拿一個數(shù)字萬用表去測量這根引腳的電壓,會一直測出來是5伏。

比如:6號引腳,是一個GND,也就是接地,如果測量電壓的話,就是0伏。

比如:11號引腳,是綠色圖標,旁邊寫著GPIO17,其實這個接口就是普通的接口,可以輸入也可以輸出,如果設置為輸出,則可以輸出高電壓或者低電壓。輸出高電壓就是3.3伏,輸出低電壓就是0伏??梢酝ㄟ^程序來控制。GPIO17是另外一種編號方式而已,這里我們可以忽略。

假如需要一個恒定的電壓輸出到某個電路,則可以選擇3.3v或者5v的相應接口。

假如需要一個變化的電壓輸出到某個電路,則可以選擇綠色的GPIO接口,例如11號,12號,13號,15號等等。

led燈電路原理

學過物理的話,應該可以看懂下面的最簡單的電路圖:

要讓led燈亮起來,需要在led燈的正極輸入一個正的電壓,led燈的負極接地,這樣led燈就可以亮起來了。

根據(jù)前面的GPIO接口的定義,選擇6號口GND連接到led燈的負極,然后選擇11號口連接到led燈的正極

這樣,通過程序控制11號口,輸出一個3.3伏的電壓,led燈就亮了,輸出一個0伏電壓,led燈就滅了。

硬件連接

在開始連接硬件電路之前,首先要做的事是將樹莓派電腦關(guān)機,并斷開電源。

因為如果樹莓派主板帶電的時候,進行插接電路可能會導致電子元器件的燒毀,所以一定要記住這個原則:

連接電路的時候主板必須斷電。

取出面包板,2根20cm的公對母杜邦線,1個led燈。

將杜邦線的母頭插到樹莓派主板的GPIO接口的6號口和11號口:

將杜邦線另外一頭的公頭插入面包板上:

將led燈的長腳插入11號口線的同一縱排,將led燈的短腳插入6號口線的同一縱排:

插好之后的樣子:

這樣插好之后,全部的電路就連接好了。

這里大家可以自行去網(wǎng)上搜索一下關(guān)于面包板的電路圖,看看為何這樣就可以把線和led燈連接起來了。

看看整體連接的效果:

然后,檢查一下電路的接口是否有錯誤,正確無誤之后就可以啟動樹莓派電腦的電源了:

程序編寫

電腦啟動之后,可以編寫程序了:

啟動文本編輯器,輸入以下代碼,文件保存為led.py

程序執(zhí)行

保存文件之后,運行sudo python led.py看看led燈是否亮了3秒鐘之后熄滅。

如果燈不亮,則按照以下次序進行檢查判斷:

1.首先查看樹莓派主板上的引腳口的編號

是否是11號口,接到面包板上的是對著led燈的長腳

是否是6號口,接到面包板上的是對著led燈的短腳

2.如果接線沒有錯誤,則有可能是led燈壞了

可以采取換一個led燈試試看

或者將11號口的杜邦線的母頭拔出來,插入到1號口,看看led燈是否亮,如果亮了則說明燈和線沒有問題。

3.如果電路都沒有問題,則可能是程序錯誤

逐行檢查代碼,看看是否有遺漏或者錯誤。

4.如果以上都不能讓燈亮起來,那只能去qq群里直接提問了。

看看程序執(zhí)行結(jié)果:

程序每行說明

import RPi.GPIO as GPIO

導入模塊RPI.GPIO,命名為別名為GPIO

如果只寫import RPi.GPIO也是可以的,但是后面用的地方就必須用RPi.GPIO.setmode(RPi.GPIO.BOARD)這樣寫齊全

用別名的方式可以簡化代碼

import time

導入time模塊

GPIO.setmode(GPIO.BOARD)

聲明GPIO使用物理編號方式,也就是11號口就是物理編號11號口

GPIO.setup(11,GPIO.OUT)

聲明11號口是用于輸出模式

為何6號口不用聲明呢,因為它是GND,不可能變化,也就不可能輸入和輸出

GPIO.output(11,True)

設置11號口為高電壓,也就是11號口變?yōu)?.3伏

這行代碼執(zhí)行之后,11號口變?yōu)楦唠妷?,那么根?jù)電路原理,led燈就會亮起來

如果后面沒有代碼了,則led燈會一直亮下去,直到程序修改了輸出或者電腦接口斷電

time.sleep(3)

程序休眠3秒鐘

程序休眠期間,led燈會一直亮著

GPIO.output(11,False)

設置11號口為低電壓,也就是11號口變?yōu)?伏,和GND一樣

這行代碼執(zhí)行之后,11號口變?yōu)榈碗妷海敲锤鶕?jù)電路原理,led燈就會熄滅

GPIO.cleanup()

將所有的GPIO口狀態(tài)恢復為初始化,一般代碼結(jié)束都執(zhí)行此代碼,方便后續(xù)代碼運行都是從初始狀態(tài)開始。

程序整體的功能很簡單:

導入必須的模塊

設置GPIO的編號模式

設置需要用到的GPIO接口的模式

控制GPIO口的電壓狀態(tài)

結(jié)合時間模塊運行出自己想要的結(jié)果

大家要根據(jù)以上基本的代碼以及說明,思考如何修改程序,改變運行功能

課后作業(yè)

1.將休眠時間修改為10秒

2.增加8根線和4個led燈,5個led燈依次亮3秒,循環(huán)10次結(jié)束

往期教程

因為教程是系列教程,前后關(guān)聯(lián)性非常強,請大家按照_|_微_|_信_|_公_|_眾_|_號_|_【零基礎(chǔ)學編程】的歷史消息發(fā)布時間先后次序進行閱讀。

Q_Q_群簡介

歡迎大家加入Q_Q_群 603559164 零基礎(chǔ)學編程,交流學習,共同進步。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容