arduino_ykk 发表于 2013-5-18 13:56:15

本帖最后由 arduino_ykk 于 2013-5-18 14:13 编辑

交作业咯。 数组没有必要定义在loop里面,否则每次循环都要重新开一点内存来放数组。可以放在整个方法外面啦,做全局变量用。

针脚插在 2-8口,按照A-G的顺序插入。因为0,1口是数据接收和发送,所以不用。 +极接在13口上面,可以随意选上下两个+极中任一个接上。 下载到arduino运行良好。

数组设计成n , 10的意思是显示0-9 共十个数字;9的意思是,其实针脚只有7个,但是因为从第二针脚插起,所以为循环的时候方便,设9个,0-1是空值,随意设为0.


int n = {
                  0,0,0,0,0,0,0,0,1, //0
                  0,0,1,0,0,1,1,1,1, //1
                  0,0,0,0,1,0,0,1,0, //2
                  0,0,0,0,0,0,1,1,0, //3
                  0,0,1,0,0,1,1,0,0, //4
                  0,0,0,1,0,0,1,0,0, //5
                  0,0,0,1,0,0,0,0,0, //6
                  0,0,0,0,0,1,1,1,1, //7
                  0,0,0,0,0,0,0,0,0, //8
                  0,0,0,0,0,0,1,0,0//9
                  };
                  
void setup()
{
pinMode( 13, OUTPUT );

for ( int i = 2; i <= 8; i++ )
    pinMode( i, OUTPUT );

}

void loop()
{
digitalWrite( 13, HIGH );

for ( int i= 0; i < 10; i++ )
{
    for ( int j = 2; j < 9; j++ )
      digitalWrite( j, n );
   
    delay( 1000 );
}

}


chqiyi 发表于 2013-6-11 02:03:31

楼上的解说真是透彻啊,好好的指引,谢谢

追梦男儿 发表于 2013-6-22 23:17:56

//显示5201314 浪漫啊!!:lol

void setup() {
         

    for(int n=2;n<=9;n++)
   {
   pinMode(n,OUTPUT);
   }
}


void loop()
{
   digitalWrite(2,0);
   digitalWrite(3,1);
   digitalWrite(4,0);
   digitalWrite(5,0);
   digitalWrite(6,1);
   digitalWrite(7,0);
   digitalWrite(8,0);
   digitalWrite(9,0);
   delay(1000);
   
   digitalWrite(2,0);
   digitalWrite(3,0);
   digitalWrite(4,1);
   digitalWrite(5,0);
   digitalWrite(6,0);
   digitalWrite(7,1);
   digitalWrite(8,0);
   digitalWrite(9,0);
   delay(1000);
   
   
   digitalWrite(2,0);
   digitalWrite(3,0);
   digitalWrite(4,0);
   digitalWrite(5,0);
   digitalWrite(6,0);
   digitalWrite(7,0);
   digitalWrite(8,1);
   digitalWrite(9,1);
   delay(1000);
   
   
   
   digitalWrite(2,1);
   digitalWrite(3,0);
   digitalWrite(4,0);
   digitalWrite(5,1);
   digitalWrite(6,1);
   digitalWrite(7,1);
   digitalWrite(8,1);
   digitalWrite(9,1);
   delay(1000);
   
   
   digitalWrite(2,0);
   digitalWrite(3,0);
   digitalWrite(4,0);
   digitalWrite(5,0);
   digitalWrite(6,1);
   digitalWrite(7,1);
   digitalWrite(8,0);
   digitalWrite(9,1);
   delay(1000);
   
    digitalWrite(2,1);
   digitalWrite(3,0);
   digitalWrite(4,0);
   digitalWrite(5,1);
   digitalWrite(6,1);
   digitalWrite(7,1);
   digitalWrite(8,1);
   digitalWrite(9,1);
   delay(1000);
   
   digitalWrite(2,1);
   digitalWrite(3,0);
   digitalWrite(4,0);
   digitalWrite(5,1);
   digitalWrite(6,1);
   digitalWrite(7,0);
   digitalWrite(8,0);
   digitalWrite(9,1);
   delay(1000);
   

}

really_ashamed 发表于 2013-6-26 19:15:03

16楼指导的好,收藏,多发这样的好贴

really_ashamed 发表于 2013-6-26 20:48:24

本帖最后由 really_ashamed 于 2013-6-30 17:40 编辑

         
/*         
                     GF +AB
                        |||||                     
                           __A__

                     F |             | B
                           __G__
                                    
                     E |             | C
                           __D__      
               
                        |||||
                     ED +Cdp   
*/            
//因为是“共阳”所以下面矩阵中“0”表示“亮”,“1”表示“灭”

//(对应的段)   A,B,C,D,E,F,G
int n = { 0,0,0,0,0,0,0,0,1,   //0
                      0,0,1,0,0,1,1,1,1,   //1
                      0,0,0,0,1,0,0,1,0,   //2
                      0,0,0,0,0,0,1,1,0,   //3
                      0,0,1,0,0,1,1,0,0,   //4
                      0,0,0,1,0,0,1,0,0,   //5
                      0,0,0,1,0,0,0,0,0,   //6
                      0,0,0,0,0,1,1,1,1,   //7
                      0,0,0,0,0,0,0,0,0,   //8
                      0,0,0,0,0,0,1,0,0    //9
                  };
void setup()
{
    pinMode( 13, OUTPUT );
    for ( int i = 2; i <= 8; i++ )
    pinMode( i, OUTPUT );
}
void loop()
{
    digitalWrite( 13, HIGH );
    for ( int i= 0; i < 10; i++ )
    {
         for ( int j = 2; j < 9; j++ )

            digitalWrite( j,n );

            delay( 1000 );
    }
}






really_ashamed 发表于 2013-6-26 20:51:06

本来在程序里对的很齐的,但粘贴过来后自动变了,大家粘贴到程序里后再适当用空格键调整齐,这样再理解程序的时候,直观一些,复制的16楼的程序,很简洁明了

really_ashamed 发表于 2013-6-26 20:54:19

因为是注释,写的再多,编译完后也不会下载到芯片中去的,不会占用内存,只是大家在打开程序看的时候方便一些。:lol:lol

really_ashamed 发表于 2013-6-30 17:42:37

digitalWrite( j,n );
这一句,只要一保存就变成digitalWrite( j,n );了,真郁闷!
还有下一行,一保存就自动变成斜体了,唉!没办法

SpiderMan 发表于 2013-7-28 00:37:38

我的数码管是共阴极的,也贴一个实验结果:void setup() {
pinMode(13, OUTPUT);
for(int n=1;n<=7;n++) {
    pinMode(n,OUTPUT);
}
}
void loop() {
digitalWrite(13, LOW);

int array = {
    {1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 0, 0, 0, 0},
    {1, 1, 0, 1, 1, 0, 1},
    {1, 1, 1, 1, 0, 0, 1},
    {0, 1, 1, 0, 0, 1, 1},
    {1, 0, 1, 1, 0, 1, 1},
    {1, 0, 1, 1, 1, 1, 1},
    {1, 1, 1, 0, 0, 0, 0},
    {1, 1, 1, 1, 1, 1, 1},
    {1, 1, 1, 1, 0, 1, 1},
};

for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 7; j++) {
      digitalWrite(j + 1, array);
    }
    delay(1000);
}
}

迷你强 发表于 2013-7-28 07:12:43

;P

chaoser 发表于 2013-8-12 15:23:42

我用的数码管是5101BS,共阳。其实跟5011B完全一样的,不过也贴个原理图吧:

16楼说数组应该放在循环外,完全赞同,减少CPU负担嘛。不过数组搞成就多余了,读数的时候-2更方面,也减少内存浪费。而且别忘了还有个小数点DP呢。我也重新贴下程序:
/* 程序功能:用arduino驱动数码管循环显示数字0~9 */

// 建立数字显示数组,对应引脚A~G、DP
int shownum = {0,0,0,0,0,0,1,0,//0
                      1,0,0,1,1,1,1,1,//1
                      0,0,1,0,0,1,0,1,//2
                      0,0,0,0,1,1,0,1,//3
                      1,0,0,1,1,0,0,1,//4
                      0,1,0,0,1,0,0,1,//5
                      0,1,0,0,0,0,0,1,//6
                      0,0,0,1,1,1,1,1,//7
                      0,0,0,0,0,0,0,1,//8
                      0,0,0,0,1,0,0,1}; //9

void setup() { for(int pin=2; pin<=13; pin++) pinMode(pin, OUTPUT);}

void loop() {
digitalWrite(13,1);                  //13号引脚高电平,给数码管供电
for(int num=0; num<=9; num++) {
    for(int pin=2; pin<=9; pin++) {    //循环点亮LED。LED电平高的不亮低的亮
      digitalWrite(pin, shownum);
    }
    delay(500);                        //每个数字显示半秒
}
}

谈到代码易读性,变量名称也很重要哦。此外,建议弟兄们贴代码的时候使用回复窗口右上角的“添加代码文字”图标,就是那个“<>”符号的,这样有语法高亮,读起来比较轻松。

迷你强 发表于 2013-8-12 18:29:20

chaoser 发表于 2013-8-12 15:23 static/image/common/back.gif
我用的数码管是5101BS,共阳。其实跟5011B完全一样的,不过也贴个原理图吧:

16楼说数组应该放在循环外, ...

高手没事连载点教程啥的

chaoser 发表于 2013-8-12 23:39:15

迷你强 发表于 2013-8-12 18:29 static/image/common/back.gif
高手没事连载点教程啥的

电子电路这一块,真心连低手都算不上,曾靠码程序混过饭吃而已。arduino上手还没两周,每天抽点时间看看你的教程,做做实验,然后上网妄言一番,蛮开心。大家一起玩嘛。

若偶尔有了好点子,还要大神给点建议呢。总之,折腾得开心最要紧,哈哈

qinkaiabc 发表于 2013-8-20 21:36:17

楼主能不能传给我Fritzing软件下的数码管元件库啊?:)

迷你强 发表于 2013-8-20 22:10:22

本帖最后由 迷你强 于 2013-8-20 22:13 编辑

qinkaiabc 发表于 2013-8-20 21:36 static/image/common/back.gif
楼主能不能传给我Fritzing软件下的数码管元件库啊?

fritzing内置。。。数码管下面可以调整参数。。调整下形状就对了(额....新版本貌似取消了。。囧)
页: 1 [2] 3 4 5 6
查看完整版本: Arduino入门教程--第十八课--Arduino驱动数码管