Arduino 三位一体数码管的设计 (自增函数)
写在前面
用到的是共阴极数码管,原理图如下图所示
说正经的
这次设计的依旧是简单的自增函数,用的是Sevseg库函数进行操作,所以一会儿会先交给大家如何在arduino上加入一些自己想要的库函数。
非公共端引脚设置为2-9;公共端连接在15 16 17.
准备
加入库函数方法,官网给出了三种方法。
一:
使用库管理器(1.6.2版及以上版本中可用)
在arduino软件界面,项目—加载库—管理库,依次点击之后会出现下面的界面
在搜索框内输入自己所需要的库函数名称,找到对应的版本,点击安装即可。
***Tip:***此方法库函数的下载路径可能比较深,如果你能找得到的话,用这个方法反而很方便,这里博主贴出自己的路径,大家可以找一下试试。
C:\Users\用户名\Documents\Arduino\libraries
二:
导入zip格式的库
这种方法的前提是自己在网上先下载好你想要的库函数的zip格式,然后打开arduino软件界面,项目—加载库—添加.ZIP库,依次点击,找到zip格式库的位置选中之后点击打开即可添加成功。
三:
手动安装,不推荐,这里就不再说,有兴趣的可以去Arduino-Libraries看看
另外,不论用什么方式添加的库,在添加成功之后,该库都可以在arduino软件界面的 文件—示例 中找到。
代码部分
#include <SevSeg.h>
SevSeg sevseg;
byte numDigits = 3; //说明使用的是几位的数码管
byte digitsPins[]={15,16,17}; //公共端所接引脚
byte segmentPins[]={2, 3, 4, 5, 6, 7, 8, 9}; //非公共端所接引脚
byte hardwareConfig = COMMON_ANODE;
int num;
int count;//用来达到延时效果的变量
void setup() {
sevseg.begin(hardwareConfig,numDigits,digitsPins,segmentPins);//初始化数码管
}
void loop() {
count++;
if(count == 1000){
count = 0;
num++;
}
if(num > 999)
num = 0;
sevseg.setNumber(num,-1); //不显示小数点
sevseg.refreshDisplay();
}
显示效果
我们把数码管看成三个个提,依次为a, b, c;代码执行之后的效果应该是,a从0-9不断循环,当a的值达到9之后,b的值从0变为1,1变为2,2变为3…然后0-9不断循环;同理,c的值需要在b的前提下进行0-9的不断循环。