加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、前言
    • 二、引腳對照表
    • 三、硬件連接
    • 四、編寫程序
    • 五、結(jié)束語
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

樹莓派從零開始快速入門第5講——點亮LED

07/05 15:10
1338
閱讀需 8 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

一、前言

千呼萬喚始出來,今天,他來了,他來了,點燈的教程他終于來了,作為嵌入式編程世界公認(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的樹莓派之外也兼容了其他版本的硬件。

請?zhí)砑訄D片描述

再引用了一張3B的引腳圖,兩張圖對比來看,引腳的對應(yīng)關(guān)系就非常清晰了。

請?zhí)砑訄D片描述

三、硬件連接

首先我們得準(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ù)出更多的教程。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
AT27C512R-70PU 1 Microchip Technology Inc IC OTP 512KBIT 70NS 28DIP

ECAD模型

下載ECAD模型
$3.43 查看
NX3215SA-32.768KHZ-EXS00A-MU00525 1 Nihon Dempa Kogyo Co Ltd Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom,
暫無數(shù)據(jù) 查看
S25FL512SAGMFIR13 1 Spansion Flash, 512MX1, PDSO16, 0.300 INCH, LEAD FREE, PLASTIC, MO-013EAA, SOIC-16
$59.65 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜