一、前言
千呼萬喚始出來,今天,他來了,他來了,點燈的教程他終于來了,作為嵌入式編程世界公認(rèn)最經(jīng)典的入門程序,把你放在第5講算是給足面子了,要是在其他教程,能活過第2講?好了,廢話不多說,盤他就完了。
GPIO是通用輸入輸出口的意思,是MCU控制外設(shè)最基本的硬件接口。把LED燈接到GPIO上面,通過控制GPIO的輸出電壓,就可以控制燈的亮滅,我們今天的目標(biāo)是點亮第一個LED燈。
二、引腳對照表
要點燈,先要確定燈接在哪個引腳上面,對應(yīng)的引腳號是多少。
要確定硬件引腳對應(yīng)的軟件引腳號,可以通過下面這個指令查看自己的設(shè)備引腳對照表。
gpio readall
樹莓派的引腳編碼方式有兩種:wiringPi和BCM,其實就是對應(yīng)兩個不同的庫函數(shù)。
1)wiringPi:基于WiringPi庫,是樹莓派平臺的庫函數(shù),類似于Arduino里面的wiring。
2)BCM:基于bcm2835庫,是樹莓派cpu芯片的庫函數(shù),相當(dāng)于stm32的固件庫一樣,底層直接操作寄存器。
這里引用一張樹莓派實驗室的通用引腳圖,這個圖非常好用,除了對應(yīng)40pin的樹莓派之外也兼容了其他版本的硬件。
再引用了一張3B的引腳圖,兩張圖對比來看,引腳的對應(yīng)關(guān)系就非常清晰了。
三、硬件連接
首先我們得準(zhǔn)備一個LED燈或者帶LED燈的擴展板,我這里用的是微雪的多功能擴展板Pioneer600(某寶上面找不到,要在微雪官網(wǎng)上面采購),總體來說,這款擴展板性價比不算高,但是對于初學(xué)者來說很友好,接口是pin對pin的,可以直接接上樹莓派,常用的外設(shè)也比較全(LEDUARTIICSPI按鍵顯示屏),如果能把把這些外設(shè)都調(diào)完,那去做一些小項目是基本沒有問題的了。(特別說明:這不是在恰飯哈)
把LED接到樹莓派任意一個GPIO口上面(如果是用的是普通插件LED燈,還要串一個1k左右的電阻,不然可能會把燈燒掉)。
四、編寫程序
1、編程方式簡述
樹莓派控制IO口的方式有很多種。
1:通過shell命令直接控制
2:通過Linux腳本控制
3:通過wiringPi庫控制
4:通過bcm2835庫控制
控制的方式有多種,編程的語音也有多種,C、C++、python、Java等等,所以就導(dǎo)致很多初學(xué)者無從下手,到底應(yīng)該選擇哪種方式呢?我本身從事的工作是以C語言為主的,一開始我是想從C開始突破,但是經(jīng)過我一段時間的摸索,我認(rèn)為樹莓派最好的方式應(yīng)該是Linux系統(tǒng)+python編程。確定了路線之后,我后面的編程教程也都是以python編程為主。
2、python編程
python語法不懂的同學(xué),可以先去看下其他的教程,了解一下python最基本的語法,然后再邊學(xué)邊做。
用python控制樹莓派外設(shè)是通過python類庫實現(xiàn)的,比如樹莓派系統(tǒng)本身集成的RPi.GPIO就可以控制GPIO口。
樹莓派官方的鏡像基本都是自帶python工具的,所以一般是不用再另外安裝軟件了。
1)新建py文件
新建led.py文件
touch led.py
2)編寫程序
打開led.py并編寫以下示例程序:
#!/usr/bin/python
#-*- coding:utf-8 -*-
import RPi.GPIO as GPIO #導(dǎo)入RPi.GPIO庫
import time #導(dǎo)入time庫
GPIO.setwarnings(False) #禁用警告(可以不用)
GPIO.setmode(GPIO.BCM) #使用BCM編碼的引腳號
GPIO.setup(26,GPIO.OUT) #根據(jù)自己LED燈接的引腳配置,我這里是26腳
try:
while True: #wile循環(huán)
GPIO.output(26,GPIO.HIGH) #引腳拉高
time.sleep(1) #延時1s
GPIO.output(26,GPIO.LOW) #引腳拉低
time.sleep(1) #延時1s
except:
print("except")
GPIO.cleanup()
注:
#!/usr/bin/env python,定義python解析腳本的絕對路徑
#-*- coding:utf-8 -*-,python文件為utf-8格式,否則無法寫入中文注釋
編寫代碼的方式有很多種,根據(jù)自己的喜歡選擇一種即可。
方式1:在樹莓派命令窗口編輯
vim led.py // 用vim編輯
nano led.py // 用nano編輯
vim編輯示例如下:
方式2:在樹莓派可視化界面編輯
方式3:在PC端打開并編輯
參考我上一講介紹的文件共享。
樹莓派從零開始快速入門第4講——文件共享
3)運行
運行方式有兩種方式。
方式1:命令行運行
python led.py
python led.py開始運行,Crtl+C結(jié)束運行。
方式2:可視化界面運行
注:如果RPi.GRIO檢測到一個引腳已經(jīng)被設(shè)置成了非默認(rèn)值,那運行的時候會彈出一個警告信息。
可以在配置GPIO模式之前調(diào)用以下代碼即可禁用警告,當(dāng)然,不禁用也是沒關(guān)系的,不影響代碼運行。
GPIO.setwarnings(False)
運行結(jié)果:
LED每間隔1s閃爍一次。
五、結(jié)束語
點燈儀式就此結(jié)束,經(jīng)過對LED的調(diào)試,相信你對樹莓派的編程方式已經(jīng)有了一定的了解。萬事開頭難,我覺得樹莓派最容易讓人產(chǎn)生疑惑的是它的編程方式,因為花樣太多了,你在百度上搜索樹莓派的編程方式,會得到很多種答案,都不知道該信誰,關(guān)于這個,我認(rèn)為最好的方式是Linux系統(tǒng)+python編程。選擇一種路線入門很重要,明確了自己的路線,就可以邁出新手村了,后面無非就是打怪升級。
想了解更多樹莓派的知識可以關(guān)注我,后續(xù)我會繼續(xù)出更多的教程。