Arduino官方提供了丰富的驱动库来方便对外设进行操作,很多爱好者也在开源精神下提供了很多第三方库。本篇介绍数码管库的使用,通过读取电位器输入,使用数码管库驱动数码管显示对应数据。
SevSeg库是数码管驱动库,常用于对4位数码管的驱动,该库可从Arduino IDE管理库中搜索安装,也可从github中获取,github地址。
数码管的A,B,C,D,E,F,G,DP引脚分别接入开发板的数字管脚7,6,5,10,11,8,9,4。数码管公共端接限流电阻,电阻另一端接数字管脚3。电位器中间管脚接A0,两端分别接5V和GND。
实验原理图如下图所示:
实物连接图如下图所示:
/*
* 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(); // 必须重复运行刷新数码管显示
}
随着电位器的转动,数码管显示0到9的数字。
此函数需要不断重复执行,反复刷新才能使数码管显示。若程序中有其他延时则会对显示产生影响。
程序中使用SevSeg驱动库,根据实际电路连接进行库的初始化。在loop()函数中,读取A0模拟输入引脚的数据,通过map()函数重新把数据映射成数字0到9,然后使用sevseg.setNumber()函数进行数据设置,然后通过显示刷新函数进行刷新显示。
更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注: