Ethan 发表于 2013-9-11 10:27:31

求问楼主,怎么不用delay做?

迷你强 发表于 2013-9-12 09:53:46

Ethan 发表于 2013-9-11 10:27 static/image/common/back.gif
求问楼主,怎么不用delay做?

就是delay啊。。

784442670 发表于 2013-9-21 15:22:51

<一一巛 发表于 2013-3-4 16:51 static/image/common/back.gif
void setup() {   
   for(int n=1;n

加一个74HC595直接可以少一层循环

西瓜 发表于 2013-10-21 11:31:30

求助啊~没有板子,只能想象。。。
void loop()
{
digitalWrite( 13, HIGH );

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

    delay( 1000 );
}
说说我对这段程序的理解: for ( int j = 2; j < 9; j++ )
      digitalWrite( j, n );

    delay( 1000 );
循环内点亮了数字“1”,停留“1000ms"。接下来是执行语句”for ( int i= 0; i < 10; i++ )“开始点亮数字”2“。
我的问题是:点亮了数字”1",熄灭数码管b、c段(数字1)的语句在哪?应该不是在数字“1”还在亮的情况下点亮“2”吧?

耗子 发表于 2013-10-30 21:40:28

为什么2——9号针脚是 OUTPUT而不是 INPUT?按照13号针脚输出,其他不应该是输入吗?还有为什么0(低电平)是亮,1(高电平)是不亮?

迷你强 发表于 2013-10-31 08:26:21

耗子 发表于 2013-10-30 21:40 static/image/common/back.gif
为什么2——9号针脚是 OUTPUT而不是 INPUT?按照13号针脚输出,其他不应该是输入吗?还有为什么0(低电平)是 ...

共阳数码管的意思是正极公共,也就是说需要亮哪个,哪个脚就需要低电平,这样才能从高到低电流流动,input仅限于需要读取io口状态是高电平还是低电平时使用。。。。配合读取语句使用的

血阳 发表于 2013-11-7 16:29:44

求大神答疑……为什么不接GND这个接口啊……我网上找了半天找不到原因,不接的话它无法形成回路啊{:soso_e136:}

迷你强 发表于 2013-11-8 15:03:50

血阳 发表于 2013-11-7 16:29 static/image/common/back.gif
求大神答疑……为什么不接GND这个接口啊……我网上找了半天找不到原因,不接的话它无法形成回路啊{:soso_e1 ...

GND是0V低电平也是0V      高电平到低电平不就是回路了。。

血阳 发表于 2013-11-8 22:59:40

迷你强 发表于 2013-11-8 15:03 static/image/common/back.gif
GND是0V低电平也是0V      高电平到低电平不就是回路了。。

哦哦~那低电平是哪些脚?是没亮的那些管的引脚吗?

pumpitup 发表于 2014-1-28 22:57:08

交作业:
我用的是共阳,阳极接的3.3v,串330欧电阻
小数点也点亮了,常亮
加上abcdef
依稀记得点c,做了个子程序
但是数组怎么用忘得差不多了……

话说数码管只能做了玩玩,真要显示数据还是得用别的方法吧。

void setup() {               
for(int i=2;i<=9;i++){
    pinMode(i, OUTPUT);
    digitalWrite(i,HIGH);
}
}
//0-9:0-9,10-15:a-f,16:clear
int n={
0,0,0,0,0,0,1,0,//0
1,0,0,1,1,1,1,0,
0,0,1,0,0,1,0,0,
0,0,0,0,1,1,0,0,
1,0,0,1,1,0,0,0,
0,1,0,0,1,0,0,0,
0,1,0,0,0,0,0,0,
0,0,0,1,1,1,1,0,
0,0,0,0,0,0,0,0,
0,0,0,1,1,0,0,0,//9
0,0,0,1,0,0,0,0,//a
1,1,0,0,0,0,0,0,
0,1,1,0,0,0,1,0,
1,0,0,0,0,1,0,0,
0,1,1,0,0,0,0,0,
0,1,1,1,0,0,0,0,//f
1,1,1,1,1,1,1,0
};

void shownum(int num){
for(int i=2;i<=9;i++){
    digitalWrite(i,n);
}
}

void loop() {
for(int num=0;num<=16;num++){
shownum(num);
delay(500);
}
delay(1000);
}

pumpitup 发表于 2014-1-28 23:02:05

西瓜 发表于 2013-10-21 11:31 static/image/common/back.gif
求助啊~没有板子,只能想象。。。
void loop()
{


说实话看到你问了我觉得不对头
回头一看才知道没问题

数组里不是每个数字都有7个值么,0亮1灭;点一的时候bc是亮的,点2的时候b应该灭,而且的确灭了。并不是1之后加了灭,而是在2的时候设置为灭的。

嗯,应该是跟不停地刷新的那种弄混了吧。

西瓜 发表于 2014-2-12 16:51:01

pumpitup 发表于 2014-1-28 23:02 static/image/common/back.gif
说实话看到你问了我觉得不对头
回头一看才知道没问题



哦!懂了!谢了~

随易而安 发表于 2014-5-4 20:59:50

先学习一下明天试试.

nhejequjq 发表于 2014-6-3 21:13:00

dushiyizhan 发表于 2013-4-4 18:20 static/image/common/back.gif
void setup()
{
pinMode(13,OUTPUT);



char num_tube_char = "-0123456789ABCDEFGHIJLNOPQUY";
byte num_tube_code = {
                            0b00000010,/* - */
0b11111100,0b01100000,0b11011010,0b11110010,
0b01100110,0b10110110,0b10111110,0b11100000,
0b11111110,0b11110110, /*from 0 to 9*/
0b11101110,0b00111110,0b10011100,0b01111010,
0b10011110,0b10001110,0b10111101,0b01101110,
0b00001100,0b01110000,0b00011100,0b11101100,
0b00111010,0b11001110,0b11100110,0b01111100,
0b01110110/*from A to y*/
                        };
    const int A_port = 9;
    const int B_port = 8;
    const int C_port = 2;
    const int D_port = 3;
    const int E_port = 4;
    const int F_port = 5;
    const int G_port = 6;
    const int dot_port = 7;
   
    int port = {A_port, B_port, C_port, D_port, E_port, F_port, G_port, dot_port};

    void setup()
    {
      pinMode(A_port, OUTPUT);
      pinMode(B_port, OUTPUT);
      pinMode(C_port, OUTPUT);
      pinMode(D_port, OUTPUT);
      pinMode(E_port, OUTPUT);
      pinMode(F_port, OUTPUT);
      pinMode(G_port, OUTPUT);
      pinMode(dot_port, OUTPUT);
    }
    void loop()
    {
      char word[] = {"HAHA0123456789"};
      for(int i=0; word!='\0'; i++)   Display(word);
    }
    /*Write in code of charactor and display in numerical tube

*/
    void WriteIn(byte b)
    {
      for(int i=1; i<=8; i++)
         digitalWrite(port,bitRead(b,i));
    }
    void Display(const char ch)
   {
   /*Search Index from Table and find the code of charactor ch*/
   for( int i = 0; i < 36; i++)
   {
       if(ch == num_tube_char)
       {
         WriteIn(num_tube_code);
         break;
       }
   }
   }

nhejequjq 发表于 2014-6-3 21:14:34

含有函数接口版的代码,感兴趣的可以封装成类哦。
char num_tube_char = "-0123456789ABCDEFGHIJLNOPQUY";
byte num_tube_code = {
                            0b00000010,/* - */
0b11111100,0b01100000,0b11011010,0b11110010,
0b01100110,0b10110110,0b10111110,0b11100000,
0b11111110,0b11110110, /*from 0 to 9*/
0b11101110,0b00111110,0b10011100,0b01111010,
0b10011110,0b10001110,0b10111101,0b01101110,
0b00001100,0b01110000,0b00011100,0b11101100,
0b00111010,0b11001110,0b11100110,0b01111100,
0b01110110/*from A to y*/
                        };
    const int A_port = 9;
    const int B_port = 8;
    const int C_port = 2;
    const int D_port = 3;
    const int E_port = 4;
    const int F_port = 5;
    const int G_port = 6;
    const int dot_port = 7;
   
    int port = {A_port, B_port, C_port, D_port, E_port, F_port, G_port, dot_port};

    void setup()
    {
      pinMode(A_port, OUTPUT);
      pinMode(B_port, OUTPUT);
      pinMode(C_port, OUTPUT);
      pinMode(D_port, OUTPUT);
      pinMode(E_port, OUTPUT);
      pinMode(F_port, OUTPUT);
      pinMode(G_port, OUTPUT);
      pinMode(dot_port, OUTPUT);
    }
    void loop()
    {
      char word[] = {"HAHA0123456789"};
      for(int i=0; word!='\0'; i++)   Display(word);
    }
    /*Write in code of charactor and display in numerical tube

*/
    void WriteIn(byte b)
    {
      for(int i=1; i<=8; i++)
         digitalWrite(port,bitRead(b,i));
    }
    void Display(const char ch)
   {
   /*Search Index from Table and find the code of charactor ch*/
   for( int i = 0; i < 36; i++)
   {
       if(ch == num_tube_char)
       {
         WriteIn(num_tube_code);
         break;
       }
   }
   }
页: 1 2 [3] 4 5 6
查看完整版本: Arduino入门教程--第十八课--Arduino驱动数码管