Arduino基礎(chǔ)入門(mén)篇16—數(shù)碼管庫(kù)的使用

Arduino官方提供了豐富的驅(qū)動(dòng)庫(kù)來(lái)方便對(duì)外設(shè)進(jìn)行操作,很多愛(ài)好者也在開(kāi)源精神下提供了很多第三方庫(kù)。本篇介紹數(shù)碼管庫(kù)的使用,通過(guò)讀取電位器輸入,使用數(shù)碼管庫(kù)驅(qū)動(dòng)數(shù)碼管顯示對(duì)應(yīng)數(shù)據(jù)。

SevSeg庫(kù)是數(shù)碼管驅(qū)動(dòng)庫(kù),常用于對(duì)4位數(shù)碼管的驅(qū)動(dòng),該庫(kù)可從Arduino IDE管理庫(kù)中搜索安裝,也可從github中獲取,github地址。

1.數(shù)碼管庫(kù)安裝

1. 啟動(dòng)Arduino IDE,點(diǎn)擊「項(xiàng)目」—「加載庫(kù)」—「管理庫(kù)」。

管理庫(kù)

2. 查找「SevSeg」,可以找到兩個(gè)庫(kù),我們選擇第一個(gè),進(jìn)行安裝。

安裝庫(kù)

2. 實(shí)驗(yàn)材料

  • Uno R3開(kāi)發(fā)板
  • 配套USB數(shù)據(jù)線
  • 面包板及配套連接線
  • 共陰極數(shù)碼管
  • 1個(gè)220Ω限流電阻
  • 電位器

3. 實(shí)驗(yàn)步驟

1. 根據(jù)原理圖搭建電路。

數(shù)碼管的A,B,C,D,E,F,G,DP引腳分別接入開(kāi)發(fā)板的數(shù)字管腳7,6,5,10,11,8,9,4。數(shù)碼管公共端接限流電阻,電阻另一端接數(shù)字管腳3。電位器中間管腳接A0,兩端分別接5V和GND。

實(shí)驗(yàn)原理圖如下圖所示:

實(shí)驗(yàn)原理圖

實(shí)物連接圖如下圖所示:

實(shí)物連接圖

2. 新建sketch,拷貝如下代碼替換自動(dòng)生成的代碼并進(jìn)行保存。

/*
 * SevSeg
 * 使用數(shù)碼管庫(kù)驅(qū)動(dòng)數(shù)碼管,根據(jù)A0模擬輸入顯示對(duì)應(yīng)數(shù)字
 */
 
#include "SevSeg.h"

SevSeg sevseg;

byte numDigits = 1; //數(shù)碼管位數(shù)
byte digitPins[] = {3, 2, 2, 2}; //數(shù)碼管公共極連接Arduino的引腳
byte segmentPins[] = {7, 6, 5, 10, 11, 8, 9, 4}; //數(shù)碼管a,b,c,d,e,f,g,dp對(duì)應(yīng)引腳
byte hardwareConfig = COMMON_CATHODE ; // 共陰極數(shù)碼管

int readValue = 0; //保存讀到的模擬值
int showValue = 0; //需要顯示的數(shù)據(jù)

void setup() {
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins); //初始化數(shù)碼管
}

void loop() {
  readValue = analogRead(A0); //讀取A0模擬口的數(shù)值(0-5V 對(duì)應(yīng)0-1023取值)
  showValue = map(readValue, 0, 1023, 0, 9); //將0-1023之間的數(shù)據(jù)映射成0到9之間的數(shù)據(jù)
  sevseg.setNumber(showValue, 1); //數(shù)碼管顯示
  sevseg.refreshDisplay(); // 必須重復(fù)運(yùn)行刷新數(shù)碼管顯示
}

3. 連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類(lèi)型,進(jìn)行程序下載。

程序下載

4. 實(shí)驗(yàn)現(xiàn)象

隨著電位器的轉(zhuǎn)動(dòng),數(shù)碼管顯示0到9的數(shù)字。

實(shí)驗(yàn)現(xiàn)象

5. 庫(kù)函數(shù)介紹

1. sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins)函數(shù):

  • hardwareConfig:使用的是共陽(yáng)極數(shù)碼管還是共陰極數(shù)碼管。
    • COMMON_CATHODE:共陰極。
    • COMMON_ANODE:共陽(yáng)極。
  • numDigits:數(shù)碼管位數(shù),我們這里使用的是一位數(shù)碼管,故其值設(shè)置為1。
  • digitPins:數(shù)組形式,用來(lái)存儲(chǔ)數(shù)碼管公共極連接的引腳號(hào)。此庫(kù)多用來(lái)驅(qū)動(dòng)四位數(shù)碼管,本實(shí)驗(yàn)中只用一位,故數(shù)組第一個(gè)成員為3(對(duì)應(yīng)實(shí)際電路連接),其他成員填入未使用的引腳即可。
  • segmentPins:數(shù)組形式,用來(lái)存儲(chǔ)數(shù)碼管從a到dp所對(duì)應(yīng)連接的引腳號(hào)。

2. sevseg.setNumber(numToShow, decPlaces)函數(shù):

  • numToShow:要顯示的數(shù)據(jù),可以為整數(shù)、浮點(diǎn)數(shù)。
  • decPlaces:小數(shù)點(diǎn)顯示的位置,從最低有效位開(kāi)始計(jì)算,若省略或者設(shè)置為-1則表示不顯示小數(shù)點(diǎn)。

3. sevseg.refreshDisplay()函數(shù):

此函數(shù)需要不斷重復(fù)執(zhí)行,反復(fù)刷新才能使數(shù)碼管顯示。若程序中有其他延時(shí)則會(huì)對(duì)顯示產(chǎn)生影響。

6. 實(shí)驗(yàn)分析

程序中使用SevSeg驅(qū)動(dòng)庫(kù),根據(jù)實(shí)際電路連接進(jìn)行庫(kù)的初始化。在loop()函數(shù)中,讀取A0模擬輸入引腳的數(shù)據(jù),通過(guò)map()函數(shù)重新把數(shù)據(jù)映射成數(shù)字0到9,然后使用sevseg.setNumber()函數(shù)進(jìn)行數(shù)據(jù)設(shè)置,然后通過(guò)顯示刷新函數(shù)進(jìn)行刷新顯示。

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

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

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