单向数码管红绿灯-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4769|回复: 1

单向数码管红绿灯

[复制链接]
发表于 2016-11-8 21:15 | 显示全部楼层 |阅读模式


byte DIGITAL_DISPLAY[10][8]= { //设置0-9数字所对应数组,共阳数码管“0”为点亮的原则
  { 0,0,0,0,1,0,0,1 },  // = 9
  { 0,0,0,0,0,0,0,1 }, // = 8
  { 0,0,0,1,1,1,1,1 }, // = 7
  { 0,1,0,0,0,0,0,1 }, // = 6
  { 0,1,0,0,1,0,0,1 }, // = 5
  { 1,0,0,1,1,0,0,1 }, // = 4
  { 0,0,0,0,1,1,0,1 }, // = 3
  { 0,0,1,0,0,1,0,1 }, // = 2
  { 1,0,0,1,1,1,1,1 },  // = 1
   { 0,0,0,0,0,0,1,1 }  // = 0
};
int redpin=11;
int yellowpin=12;
int greenpin=13;

void setup() { //设定2~10号数字端口为输出
for(int i=2;i<=13;i++){
pinMode(i, OUTPUT);

}
digitalWrite(10,HIGH);
}

void loop() {
//9~0数码管倒计时的同时点亮红灯
for (int k = 0; k < 10; k++) {
   int pin = 2;
   for (int s = 0; s < 8; s++)  
   {
    digitalWrite(pin, DIGITAL_DISPLAY[k]);
    digitalWrite(redpin,HIGH);
   pin++;
   }
delay(1000);
digitalWrite(redpin,LOW);
                            }


//9~0数码管倒计时的同时点亮绿灯
for (int k = 0; k < 10; k++) {
   int pin = 2;
   for (int s = 0; s < 8; s++)  
   {
    digitalWrite(pin, DIGITAL_DISPLAY[k]);
    digitalWrite(greenpin,HIGH);
   pin++;
   }
delay(1000);
digitalWrite(greenpin,LOW);
                          }
//黄灯闪烁3秒
digitalWrite(yellowpin,HIGH);
delay(1000);
digitalWrite(yellowpin,LOW);
delay(1000);
digitalWrite(yellowpin,HIGH);
delay(1000);
digitalWrite(yellowpin,LOW);
           }



发表于 2017-8-24 22:57 | 显示全部楼层
       用二进制数来驱动数码管直观且非常简洁,值得推广。不过复制代码没有通过编译,错误指向了两个地方:“digitalWrite(pin, DIGITAL_DISPLAY[k]);”原因是初设的二维数组,但在此时显示的是一维数组,在[k]后面添上[s]即: digitalWrite(pin, DIGITAL_DISPLAY[k][s]); 把一维数组再变回二维数组后就可通过编译了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 14:35 , Processed in 0.094237 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表