Arduino教程入门系列-第十八课-Arduino驱动数码管 教程,数码管
今天我们来玩数码管,这个东西就是一堆led通过共阳并联在一起的小方块,用来显示数字和几个字母,是非常简单常见的显示器件。和学习笔记中的数码管代码不同,这次使用的代码单位时间只亮一个数码管上的灯,肉眼看到的1,2,3是因为高刷新率,大于肉眼分辨速度,使得肉眼看到1,2,3等。这样的好处是亮度高,而且亮度均匀。
所以准备一下材料
一位共阳数码管 1枚
arduino控制板 1个
面包板 1快
面包板专用跳线盒1盒
数据线 1根
220欧姆电阻 1个
我们先来看数码管的原理图
可以看到数码管的链接方式,驱动的原理就是,阳极供电后,其他引脚如果是低电平就能点亮。来看电路图
进过大家的指正,我终于知道哪里画错了,现已修正
我们可以看到,电路按照上面的原理图依据abcdefg的顺序排布了接口,这样写程序会方便很多
然后我们搭建出电路
将程序下载进去
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 />
实验视频