Arduino四位七段数码管利用余晖效应的动态显示

在编程四位七段数码管的程序时,常常遇到不同数码管不可以显示不同数字的情况。比如要输出-9,要么-和9先后出现,要么两个管子都显示-或者9。

为了解决这样的问题,常利用余晖效应,在输出数字后加一个极短的delay时间,利用视觉暂留效应使之看起来像是同步显示的。

但是如果想让数码管动态显示起来,例如从-9倒数到-1,这个极短的delay时长会让数字闪动过快,达不到理想的结果。

此时,可以在delay外面套多个for循环,通过for循环的数量来调控每个数字的显示时长。

例子

从-9倒数到-1。(节选与问题有关的片段作展示)

void countNumber1()

for(int i = 0;i < 50;i ++)

{

for(int m = 9;m >0;m--)

{
outPut(1,m);

delay(5);

outPut(2,'-');  //在位置2处显示-号

delay(5);

clearNumber();

}
}
}

其中,outPut函数为自己定义的,outPut(int a,char b)的作用是在a位置处显示数字b

clearNumber函数为自定义,作用是清除显示数字。

在内层循环内,delay总时长为10毫秒,外层循环为50层,及每个数字在显示屏上停留50*10=500毫秒。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,你可以使用以下步骤来控制Arduino上的四位数码管: 1. 首先,将四位数码管连接到Arduino板上。数码管有共阳和共阴两种类型,因此请确保使用正确的类型进行连接。 2. 在Arduino IDE中编写代码,包括四个数字变量,每个变量表示一个数字要显示在数码管上。 3. 定义每个数字对应的数码管段的引脚,以便将数字显示在数码管上。这些引脚可能因数码管的类型而异,因此请确保使用正确的引脚。 4. 在setup()函数中初始化引脚并设置它们为输出模式。 5. 在loop()函数中编写代码,将数字变量转换为相应的数码管段,以便在数码管上显示数字。 6. 使用delay()函数在每次更新数字后等待一段时间,以便数字在数码管上显示出来。 下面是一个示例代码,可以让你更好的了解: ``` // 数字对应的引脚 int segA = 2; int segB = 3; int segC = 4; int segD = 5; int segE = 6; int segF = 7; int segG = 8; int segDP = 9; // 数字的变量 int num1 = 1; int num2 = 2; int num3 = 3; int num4 = 4; void setup() { // 初始化引脚并设置为输出模式 pinMode(segA, OUTPUT); pinMode(segB, OUTPUT); pinMode(segC, OUTPUT); pinMode(segD, OUTPUT); pinMode(segE, OUTPUT); pinMode(segF, OUTPUT); pinMode(segG, OUTPUT); pinMode(segDP, OUTPUT); } void loop() { // 转换数字为数码管段 int digit1[] = {1, 1, 1, 1, 1, 1, 0}; // 数字1的数码管段 int digit2[] = {0, 1, 1, 0, 0, 0, 0}; // 数字2的数码管段 int digit3[] = {1, 1, 0, 1, 1, 0, 1}; // 数字3的数码管段 int digit4[] = {0, 1, 1, 0, 0, 1, 1}; // 数字4的数码管段 // 在数码管上显示数字 displayDigit(digit1); delay(1000); displayDigit(digit2); delay(1000); displayDigit(digit3); delay(1000); displayDigit(digit4); delay(1000); } // 显示数码管段的函数 void displayDigit(int digit[]) { digitalWrite(segA, digit[0]); digitalWrite(segB, digit[1]); digitalWrite(segC, digit[2]); digitalWrite(segD, digit[3]); digitalWrite(segE, digit[4]); digitalWrite(segF, digit[5]); digitalWrite(segG, digit[6]); digitalWrite(segDP, 0); // 小数点不显示 } ``` 希望这个示例代码可以帮助你控制Arduino上的四位数码管。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值