极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 迷你强

Arduino入门教程--第十八课--Arduino驱动数码管

  [复制链接]
发表于 2013-9-11 10:27:31 | 显示全部楼层
求问楼主,怎么不用delay做?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-12 09:53:46 | 显示全部楼层
Ethan 发表于 2013-9-11 10:27
求问楼主,怎么不用delay做?

就是delay啊。。
回复 支持 反对

使用道具 举报

发表于 2013-9-21 15:22:51 | 显示全部楼层
<一一巛 发表于 2013-3-4 16:51
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[i][j] );

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

    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
为什么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
求大神答疑……为什么不接GND这个接口啊……我网上找了半天找不到原因,不接的话它无法形成回路啊{:soso_e1 ...

GND是0V  低电平也是0V      高电平到低电平不就是回路了。。
回复 支持 反对

使用道具 举报

发表于 2013-11-8 22:59:40 | 显示全部楼层
迷你强 发表于 2013-11-8 15:03
GND是0V  低电平也是0V      高电平到低电平不就是回路了。。

哦哦~那低电平是哪些脚?是没亮的那些管的引脚吗?
回复 支持 反对

使用道具 举报

发表于 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[17][8]={
  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[num][i-2]);
  }  
}

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

回复 支持 反对

使用道具 举报

发表于 2014-1-28 23:02:05 | 显示全部楼层
西瓜 发表于 2013-10-21 11:31
求助啊~没有板子,只能想象。。。
void loop()
{

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

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

嗯,应该是跟不停地刷新的那种弄混了吧。
回复 支持 反对

使用道具 举报

发表于 2014-2-12 16:51:01 | 显示全部楼层
pumpitup 发表于 2014-1-28 23:02
说实话看到你问了我觉得不对头
回头一看才知道没问题

哦!懂了!谢了~
回复 支持 反对

使用道具 举报

发表于 2014-5-4 20:59:50 | 显示全部楼层
先学习一下明天试试.
回复 支持 反对

使用道具 举报

发表于 2014-6-3 21:13:00 | 显示全部楼层
dushiyizhan 发表于 2013-4-4 18:20
void setup()
{
  pinMode(13,OUTPUT);

  1. char num_tube_char[36] = "-0123456789ABCDEFGHIJLNOPQUY";
  2. byte num_tube_code[36] = {
  3.                             0b00000010,  /* - */
  4. 0b11111100,0b01100000,0b11011010,0b11110010,
  5. 0b01100110,0b10110110,0b10111110,0b11100000,
  6. 0b11111110,0b11110110, /*from 0 to 9*/
  7. 0b11101110,0b00111110,0b10011100,0b01111010,
  8. 0b10011110,0b10001110,0b10111101,0b01101110,
  9. 0b00001100,0b01110000,0b00011100,0b11101100,
  10. 0b00111010,0b11001110,0b11100110,0b01111100,
  11. 0b01110110  /*from A to y*/
  12.                           };
  13.     const int A_port = 9;
  14.     const int B_port = 8;
  15.     const int C_port = 2;
  16.     const int D_port = 3;
  17.     const int E_port = 4;
  18.     const int F_port = 5;
  19.     const int G_port = 6;
  20.     const int dot_port = 7;
  21.      
  22.     int port[8] = {A_port, B_port, C_port, D_port, E_port, F_port, G_port, dot_port};

  23.     void setup()
  24.     {
  25.       pinMode(A_port, OUTPUT);
  26.       pinMode(B_port, OUTPUT);
  27.       pinMode(C_port, OUTPUT);
  28.       pinMode(D_port, OUTPUT);
  29.       pinMode(E_port, OUTPUT);
  30.       pinMode(F_port, OUTPUT);
  31.       pinMode(G_port, OUTPUT);
  32.       pinMode(dot_port, OUTPUT);
  33.     }
  34.     void loop()
  35.     {
  36.       char word[] = {"HAHA0123456789"};
  37.       for(int i=0; word[i]!='\0'; i++)   Display(word[i]);
  38.     }  
  39.     /*  Write in code of charactor and display in numerical tube  

  40. */
  41.     void WriteIn(byte b)
  42.     {
  43.       for(int i=1; i<=8; i++)
  44.          digitalWrite(port[i],bitRead(b,i));
  45.     }
  46.     void Display(const char ch)
  47.    {
  48.      /*Search Index from Table and find the code of charactor ch*/
  49.      for( int i = 0; i < 36; i++)
  50.      {
  51.        if(ch == num_tube_char[i])
  52.        {
  53.          WriteIn(num_tube_code[i]);
  54.          break;
  55.        }
  56.      }
  57.    }
复制代码
回复 支持 反对

使用道具 举报

发表于 2014-6-3 21:14:34 | 显示全部楼层
含有函数接口版的代码,感兴趣的可以封装成类哦。

  1. char num_tube_char[36] = "-0123456789ABCDEFGHIJLNOPQUY";
  2. byte num_tube_code[36] = {
  3.                             0b00000010,  /* - */
  4. 0b11111100,0b01100000,0b11011010,0b11110010,
  5. 0b01100110,0b10110110,0b10111110,0b11100000,
  6. 0b11111110,0b11110110, /*from 0 to 9*/
  7. 0b11101110,0b00111110,0b10011100,0b01111010,
  8. 0b10011110,0b10001110,0b10111101,0b01101110,
  9. 0b00001100,0b01110000,0b00011100,0b11101100,
  10. 0b00111010,0b11001110,0b11100110,0b01111100,
  11. 0b01110110  /*from A to y*/
  12.                           };
  13.     const int A_port = 9;
  14.     const int B_port = 8;
  15.     const int C_port = 2;
  16.     const int D_port = 3;
  17.     const int E_port = 4;
  18.     const int F_port = 5;
  19.     const int G_port = 6;
  20.     const int dot_port = 7;
  21.      
  22.     int port[8] = {A_port, B_port, C_port, D_port, E_port, F_port, G_port, dot_port};

  23.     void setup()
  24.     {
  25.       pinMode(A_port, OUTPUT);
  26.       pinMode(B_port, OUTPUT);
  27.       pinMode(C_port, OUTPUT);
  28.       pinMode(D_port, OUTPUT);
  29.       pinMode(E_port, OUTPUT);
  30.       pinMode(F_port, OUTPUT);
  31.       pinMode(G_port, OUTPUT);
  32.       pinMode(dot_port, OUTPUT);
  33.     }
  34.     void loop()
  35.     {
  36.       char word[] = {"HAHA0123456789"};
  37.       for(int i=0; word[i]!='\0'; i++)   Display(word[i]);
  38.     }  
  39.     /*  Write in code of charactor and display in numerical tube  

  40. */
  41.     void WriteIn(byte b)
  42.     {
  43.       for(int i=1; i<=8; i++)
  44.          digitalWrite(port[i],bitRead(b,i));
  45.     }
  46.     void Display(const char ch)
  47.    {
  48.      /*Search Index from Table and find the code of charactor ch*/
  49.      for( int i = 0; i < 36; i++)
  50.      {
  51.        if(ch == num_tube_char[i])
  52.        {
  53.          WriteIn(num_tube_code[i]);
  54.          break;
  55.        }
  56.      }
  57.    }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 15:43 , Processed in 0.050623 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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