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

今天我们来玩数码管,这个东西就是一堆led通过共阳并联在一起的小方块,用来显示数字和几个字母,是非常简单常见的显示器件。和学习笔记中的数码管代码不同,这次使用的代码单位时间只亮一个数码管上的灯,肉眼看到的1,2,3是因为高刷新率,大于肉眼分辨速度,使得肉眼看到1,2,3等。这样的好处是亮度高,而且亮度均匀。



所以准备一下材料



一位共阳数码管 1枚

arduino控制板 1个

面包板 1快

面包板专用跳线盒1盒

数据线 1根

220欧姆电阻 1个





我们先来看数码管的原理图





可以看到数码管的链接方式,驱动的原理就是,阳极供电后,其他引脚如果是低电平就能点亮。来看电路图

arduino教程 入门教程

进过大家的指正,我终于知道哪里画错了,现已修正







我们可以看到,电路按照上面的原理图依据abcdefg的顺序排布了接口,这样写程序会方便很多



然后我们搭建出电路




IMGP9241_调整大小.JPG



将程序下载进去

ARDUINO 代码复制打印

/*
 作者:极客工坊-迷你强
 时间:2012年10月2日
 IDE版本号:1.0.1
 发布地址:[url]www.geek-workshop.com[/url]
 作用:arduino驱动数码管循环显示0,1,2,3,4几个数字
*/
 
void setup() {  
 
     pinMode(13,OUTPUT);     //激活13号引脚,我们需要用它供电             
 
    for(int n=2;n<=9;n++)
   {
   pinMode(n,OUTPUT);
   }
}
 
 
void loop() 
{
 
digitalWrite(13,1); //这个就是HIGH  和LOW 的另一种写法  0代表LOW   1代表HIGH
 
 
  /*==========显示0=============*/  
int n0[8]={0,0,0,0,0,0,1,1};       //定义数组 通过0,1定义各数码管的明灭,
  int z=0;
  for(int x=2;x<=9;x++)          //采用循环方式依次点亮指定的数码管led(数组中0为点亮),单位时间只点亮1个led
  {
    digitalWrite(x,n0[z]);         //点亮led语句  X为引脚数  n0[z]为数组z为0-8的变量,来依次读取数组中的值
    z++;
    if (z>=9)                    //防止变量z累加超过了8
    z=0;
  }
  delay(1000);
/*==========显示1=============*/  
int n1[8]={1,0,0,1,1,1,1,1};
  z=0;
  for(int x=2;x<=9;x++)
  {
    digitalWrite(x,n1[z]);
    z++;
    if (z>=9)
    z=0;
  }
  delay(1000);
/*==========显示2=============*/  
 int n2[8]={0,0,1,0,0,1,0,1};
  z=0;
  for(int x=2;x<=9;x++)
  {
    digitalWrite(x,n2[z]);
    z++;
    if (z>=9)
    z=0;
  } 
delay(1000);  
/*==========显示3=============*/  
 int n3[8]={0,0,0,0,1,1,0,1};
  z=0;
  for(int x=2;x<=9;x++)
  {
    digitalWrite(x,n3[z]);
    z++;
    if (z>=9)
    z=0;
  } 
delay(1000);  
/*==========显示4=============*/  
 int n4[8]={1,0,0,1,1,0,0,1};
 z=0;
  for(int x=2;x<=9;x++)
  {
    digitalWrite(x,n4[z]);
    z++;
    if (z>=9)
    z=0;
  } 
delay(1000); 
}<br />



实验视频


via - 极客工坊

标签: Arduino教程