Arduino基礎入門篇16—數碼管庫的使用

Arduino官方提供了豐富的驅動庫來方便對外設進行操作,很多愛好者也在開源精神下提供了很多第三方庫。本篇介紹數碼管庫的使用,通過讀取電位器輸入,使用數碼管庫驅動數碼管顯示對應數據。

SevSeg庫是數碼管驅動庫,常用於對4位數碼管的驅動,該庫可從Arduino IDE管理庫中搜索安裝,也可從github中獲取,github地址

1.數碼管庫安裝

1. 啓動Arduino IDE,點擊「項目」—「加載庫」—「管理庫」。

管理庫

2. 查找「SevSeg」,可以找到兩個庫,我們選擇第一個,進行安裝。

安裝庫

2. 實驗材料

  • Uno R3開發板
  • 配套USB數據線
  • 麪包板及配套連接線
  • 共陰極數碼管
  • 1個220Ω限流電阻
  • 電位器

3. 實驗步驟

1. 根據原理圖搭建電路。

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

實驗原理圖如下圖所示:

實驗原理圖

實物連接圖如下圖所示:

實物連接圖

2. 新建sketch,拷貝如下代碼替換自動生成的代碼並進行保存。

/*
 * SevSeg
 * 使用數碼管庫驅動數碼管,根據A0模擬輸入顯示對應數字
 */
 
#include "SevSeg.h"

SevSeg sevseg;

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

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

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

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

3. 連接開發板,設置好對應端口號和開發板類型,進行程序下載。

程序下載

4. 實驗現象

隨着電位器的轉動,數碼管顯示0到9的數字。

實驗現象

5. 庫函數介紹

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

  • hardwareConfig:使用的是共陽極數碼管還是共陰極數碼管。
    • COMMON_CATHODE:共陰極。
    • COMMON_ANODE:共陽極。
  • numDigits:數碼管位數,我們這裏使用的是一位數碼管,故其值設置爲1。
  • digitPins:數組形式,用來存儲數碼管公共極連接的引腳號。此庫多用來驅動四位數碼管,本實驗中只用一位,故數組第一個成員爲3(對應實際電路連接),其他成員填入未使用的引腳即可。
  • segmentPins:數組形式,用來存儲數碼管從a到dp所對應連接的引腳號。

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

  • numToShow:要顯示的數據,可以爲整數、浮點數。
  • decPlaces:小數點顯示的位置,從最低有效位開始計算,若省略或者設置爲-1則表示不顯示小數點。

3. sevseg.refreshDisplay()函數:

此函數需要不斷重複執行,反覆刷新才能使數碼管顯示。若程序中有其他延時則會對顯示產生影響。

6. 實驗分析

程序中使用SevSeg驅動庫,根據實際電路連接進行庫的初始化。在loop()函數中,讀取A0模擬輸入引腳的數據,通過map()函數重新把數據映射成數字0到9,然後使用sevseg.setNumber()函數進行數據設置,然後通過顯示刷新函數進行刷新顯示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章