|
阅读本文大概需要5分钟。
|
Arduino官方提供了丰富的驱动库来方便对外设进行操作,很多爱好者也在开源精神下提供了很多第三方库。本篇介绍数码管库的使用,通过读取电位器输入,使用数码管库驱动数码管显示对应数据。
SevSeg库是数码管驱动库,常用于对4位数码管的驱动,该库可从Arduino IDE管理库中搜索安装,也可从github中获取,gitHub获取地址为(https://github.com/DeanIsMe/SevSeg)。
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,拷贝如下代码替换自动生成的代码并进行保存。
1/*
2
*
SevSeg
3
*
使用数码管库驱动数码管,根据A0模拟输入显示对应数字
4
*/
5
6#include
"SevSeg.h"
7
8SevSeg
sevseg;
9
10byte
numDigits
=
1;
//数码管位数
11byte
digitPins[]
=
{3,
2,
2,
2 };
//数码管公共极连接Arduino的引脚
12byte
segmentPins[]
=
{7,
6,
5,
10,
11,
8,
9,
4 };
//数码管a,b,c,d,e,f,g,dp对应引脚
13byte
hardwareConfig
=
COMMON_CATHODE
;
//
共阴极数码管
14
15int
readValue
=
0;
//保存读到的模拟值
16int
showValue
=
0;
//需要显示的数据
17
18void
setup()
{
19
sevseg.begin(hardwareConfig,
numDigits,
digitPins,
segmentPins);
//初始化数码管
20 }
21
22void
loop()
{
23
readValue
=
analogRead(A0);
//读取A0模拟口的数值(0-5V
对应0-1023取值)
24
showValue
=
map(readValue,
0,
1023,
0,
9);
//将0-1023之间的数据映射成0到9之间的数据
25
sevseg.setNumber(showValue,
1);
//数码管显示
26
sevseg.refreshDisplay();
//
必须重复运行刷新数码管显示
27 }
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()函数进行数据设置,然后通过显示刷新函数进行刷新显示。

原文始发于微信公众号(
TonyCode
):Arduino基础入门篇16—数码管库的使用
|