Arduino学习之数码管倒计时(单个)

在这里插入图片描述

int a = 7;
int b = 6;
int c = 5;
int d = 10;
int e = 11;
int f = 8;
int g = 9;
int p = 4;

void setup() {
  for (int i=4; i<=11; i++) {
    pinMode (i,OUTPUT);
  }  
}

int numTable[18][8] = {
  //a b c d e f g p
  { 1,1,1,1,1,1,0,0 },
  { 0,1,1,0,0,0,0,0 },
  { 1,1,0,1,1,0,1,0 },
  { 1,1,1,1,0,0,1,0 },
  { 0,1,1,0,0,1,1,0 },
  { 1,0,1,1,0,1,1,0 },
  { 1,0,1,1,1,1,1,0 },
  { 1,1,1,0,0,0,0,0 },
  { 1,1,1,1,1,1,1,0 },
  { 1,1,1,1,0,1,1,0 },
  { 1,1,1,1,1,1,1,0 },
  { 1,1,1,0,0,0,0,0 },
  { 1,0,1,1,1,1,1,0 },
  { 1,0,1,1,0,1,1,0 },
  { 0,1,1,0,0,1,1,0 },
  { 1,1,1,1,0,0,1,0 },
  { 1,1,0,1,1,0,1,0 },
  { 0,1,1,0,0,0,0,0 },
};

void loop() {
  for (int j=0; j < 18; j++) {
    digitalWrite(a,numTable[j][0]);
    digitalWrite(b,numTable[j][1]);
    digitalWrite(c,numTable[j][2]);
    digitalWrite(d,numTable[j][3]);
    digitalWrite(e,numTable[j][4]);
    digitalWrite(f,numTable[j][5]);
    digitalWrite(g,numTable[j][6]);
    digitalWrite(p,numTable[j][7]);    
    delay(1000);
  }
}

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Arduino 控制四位数码管倒计时的代码示例: ``` // 定义数码管引脚 int digitPins[] = {2, 3, 4, 5}; int segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // 定义倒计时时间(单位:) int countDownTime = 60; void setup() { // 初始化数码管引脚 for (int i = 0; i < sizeof(digitPins); i++) { pinMode(digitPins[i], OUTPUT); } for (int i = 0; i < sizeof(segmentPins); i++) { pinMode(segmentPins[i], OUTPUT); } } void loop() { // 计算剩余时间 int remainingTime = countDownTime - (millis() / 1000); // 显示剩余时间 displayTime(remainingTime); // 倒计时结束,停止程序 if (remainingTime <= 0) { while (true) {} } // 延时 100 毫 delay(100); } void displayTime(int time) { // 计算千位、百位、十位和个位数字 int thousands = time / 1000; int hundreds = (time % 1000) / 100; int tens = (time % 100) / 10; int ones = time % 10; // 数码管显示 digitalWrite(digitPins[0], LOW); displayDigit(thousands); delay(1); digitalWrite(digitPins[0], HIGH); digitalWrite(digitPins[1], LOW); displayDigit(hundreds); delay(1); digitalWrite(digitPins[1], HIGH); digitalWrite(digitPins[2], LOW); displayDigit(tens); delay(1); digitalWrite(digitPins[2], HIGH); digitalWrite(digitPins[3], LOW); displayDigit(ones); delay(1); digitalWrite(digitPins[3], HIGH); } void displayDigit(int digit) { // 数码管段码定义 byte segments[] = { B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B10111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9 }; // 显示数字 if (digit >= 0 && digit <= 9) { for (int i = 0; i < sizeof(segmentPins); i++) { digitalWrite(segmentPins[i], bitRead(segments[digit], i)); } } } ``` 这个代码使用 `digitPins` 和 `segmentPins` 数组来定义数码管引脚,使用 `countDownTime` 变量来定义倒计时时间,使用 `displayTime` 函数来显示剩余时间,使用 `displayDigit` 函数来显示单个数字。在 `loop` 函数中,程序使用 `millis` 函数来计算剩余时间,并且使用 `delay` 函数来延时 100 毫。当倒计时结束时,程序会进入死循环。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值