购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1.4 广告流水灯试验

1.硬件连接

所需硬件如下。

(1)LED灯:6个。

(2)220Ω的电阻:6个。

(3)多彩面包板试验跳线:若干。

图2-22 交通信号灯的3种工作状态

按照上述方法将板子和数据线连好,然后按照二极管的接线方法,将6个LED灯依次接到数字1~6引脚上,如图2-23所示。

图2-23 广告流水灯电路原理图

2.试验原理

生活中经常会看到一些由各种颜色LED灯组成的广告灯,广告灯上各个位置上的LED灯不断的亮灭变化就形成各种不同的效果。本试验就是利用LED灯编程模拟广告灯的效果。

在程序中设置LED灯亮灭的次序和时间,从而就可以组成不同的效果。样式一子程序:LED 首先从左边的绿灯开始间隔200ms 依次点亮6个LED灯,如图2-24所示,接着从右边的绿灯开始间隔200ms依次熄灭6个LED灯。灯闪烁子程序:6个LED灯首先全部点亮,接着延时200ms,最后6个LED灯全部熄灭,这个过程循环两次就实现了闪烁的效果。样式二子程序设置k和j的值让中间的两个黄灯先亮,接着让挨着两个黄灯两边的红灯亮,最后让两边的绿灯亮;执行一遍后改变k和j的值让两边的绿灯先熄灭,接着两边的红灯熄灭,最后中间的两个黄灯熄灭。样式三子程序:设置k和j的值,让两边的绿灯亮400ms后再熄灭,接着让两边的红灯亮400ms 后再熄灭,最后让中间的两个黄灯亮400ms后再熄灭;执行一遍后改变k和j的值让两个红灯亮400ms后熄灭,接着让两边的绿灯亮400ms后熄灭。

图2-24 广告流水灯实际接线图

3.程序代码

下面是本试验的程序代码,程序代码如下:

//设置控制LED的数字I/O脚

int Led1=1;

int Led2=2;

int Led3=3;

int Led4=4;

int Led5151;

int Led6=6;

//LED灯花样显示样式1子程序

void style-1(void)

{

unsigned charj;

for(j=6;j<=6;j++)//每隔200ms依次点亮1~6引脚相连的LED灯

{

digitalwrite(j.HIGH);//点亮j引脚相连的LED灯

dety(200)://延时200ms

}

for(j=6;j>=-;j--)//每隔200ms依次熄灭6~1引脚相连的LED灯

{

digitalwrite(j.LOW);//熄灭j引脚相连的LED灯

delty(200)://延时200ms

}

}

//灯闪烁子程序

void flash(void)

{

unsigned char j.lc

for(k=0;k<=1;k++)//闪烁两次

{

for(j=6;j<=6;j++)//点亮1~6引脚相连的LED灯

digitalwrite(j.HIGH);//点亮j引脚相连的LED灯

delty(200)://延时200ms

for(j=1;j<=6;j++)//熄灭1~6引脚相连的LED灯

digitalwrite(j.LOW);//熄灭与j引脚相连的LED灯

delty(200)://延时200ms

}

}

//LED灯花样显示样式2子程序

Void styte-2(void)

{

unsigned char j,k;

k=1;//设置k的初值为1

for(j=3;j>=1;j--)

{

digitalwrite(j.HIGH);//点亮灯

digitalwrite(j+kHIGH);//点亮灯

detay(400);//延时400ms

K-=2;//k值加2

}

k=5;//设置k值为5

for(j=1;j<=3;j++)

{

digitalwrite(j.HIGH);//点亮灯

digitalwrite(j+kHIGH);//点亮灯

detay(400);延时400ms

digitalwrite(jLOW);//熄灭灯

digitalwrite(j+kLOW)熄灭灯

K-=2;//k值减2

}

//LED灯花样显示样式3子程序

void style-3(void)

{

unsigned charj.k;//LED灯花样显示样式3子程序

k=5;//设置k值为5

for(j=1;j<=3;j++)

{

digitalwrite(j.HIGH);//点亮灯

digitalwrite(j+kHIGH);//点亮灯

detay(400);//延时400ms

digitalwrite(jLOW);//熄灭灯

digitalwrite(j+kLOW)熄灭灯

k-=2;//k值减2

{

k=3;//设置k值为3

for(j=2;j>=1;j--)

{

digitalwrite(j.HIGH);//点亮灯

digitalwrite(j+kHIGH);//点亮灯

detay(400);//延时400ms

digitalwrite(jLOW);//熄灭灯

digitalwrite(j+kLOW);//熄灭灯

k+=2;//k值加2

}

}

void setup()

{

style-1();//样式1

flash();//闪烁

style-1();//样式2

flash();//闪烁

style-1();//样式3

flash();//闪烁

}

4.程序代码中用到的:

For(i=1,i<=6;i++)//依次设置1~6个数字引脚为输出模式

pinMode(i,OUTPUT);//设置第i个引脚为输出模式

这是一个for循环。它的一般形式为:for(<初始化>;<条件表达式>;<增量>)语句;初始化总是一个赋值语句,它用来给循环控制增量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制增量每循环一次后按什么方式变化。这三个部分之间用“;”分开。例如,for(i=1;i<10;i++)语句;上例中先给“i”赋初值1,判断“i”是否小于等于10,若是则执行语句,之后值增加1再重新判断,直到条件为假,即i>10时,结束循环。

1)下载程序

参照前面所讲的将程序下载到开发板中。

2)试验结果

将程序下载到试验板后可以观察到,6个 LED 不断地循环执行样式一子程序→闪烁子程序→样式二子程序→闪烁子程序→样式三子程序→闪烁子程序。 n7mv1eyINy3HEF8nphDxk6qdPd2ogXgKO8tGPRXHfyQIAOQPX9K/9w5iN02zPJGr

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开