c语言延时函数delay_机器人技术等级考试四级AduinoC语言学习基础:闪烁LED与流水LED...

机器人技术等级考试四级AduinoC语言学习基础:闪烁LED与流水LED

e6318921aaa298c33d94c7e19b6662a0.png

一、 发光二极管介绍

1、 什么是发光二极管

发光二极管简称为 LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管,在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。

fe4b0f14238a708d4ed05f7f3310cf68.png

图 1.1 各种颜色的发光二极管

它是半导体二极管的一种,可以把电能转化成光能;常简写为 LED。发光二极管与普通二极管一样是由 PN 结组成,也具有单向导电性。当给发光二极管加上正向电压后,从 P 区注入到 N 区的空穴和由 N 区注入到 P 区的电子,在 PN 结付近数微米内分别与 N 区的电子和 P 区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的的光波长越短。常用的是发红光、绿光或黄光的二极管。

2、工作原理

发光二极管的反向击穿电压约 5V。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻 R 可用下列计算:

R=(E-VF)/I;

式中 E 为电源电压,VF 为 LED 的正向压降,I 为 LED 的一般工作电流。发光二极管的工作电压一般为 1.5~2.0V,其工作电流一般为 10~20MA。所以在 5V 的数字逻辑电路中,可使用 220 欧作为限流电阻。

3、Led 灯的内部结构与连线

发光二极管的两根引线中较长的一根为正极,应连接电源正极。有的发光二极管的引线一样长,但管壳上有一凸起的小舌的引线是正极。如下图所示:

7957c871a1c2f2f4ca29fe4251390238.png

图 1.2 发光二极管内部结构图

LED 灯有两种连线方法:当 led 灯的阳极通过限流电阻与板子上的数字 I/O 相连,数字口输出高电平时,led 导通,发光二极管发出亮光;数字口输出低电平时,led 截止,发光二极管熄灭。如图:

b0c02377730a9a1670ca5cb58fe82004.png

图 1.3 发光二极管接线方法 1

当 led 灯的阴极与板子上的数字 I/O 口相连时,数字口输出高电平,led 截止,发光二极管熄灭;数字口输出低电平,led 灯导通,发光二极管点亮。

14e703ca2e0d972fb6e0a069da820c69.png

图 1.4 发光二极管接线方法 2

本实验选择了接线方法 1 连接发光二极管,将 220 欧电阻的一端插在 Prototype Shield 扩展板上的第 8 个 digital I/O 口,电阻的另一端插在面包板上,电阻和发光二极管通过导线相连,发光二极管的负端插在面包板上与 GND 相连。具体连接如图:

6435dd06f8876de6de580d87706f66b1.png

图 1.5 发光二极管具体连线

简单的控制一个 led 灯的闪烁实验

1、实验器件

■ Led 灯:1 个

■ 220 欧的电阻:1 个

■ 多彩面包板实验跳绳:若干

2、实验连线

按照图 1.5 将发光二极管连接到数字的第 10 引脚。这样我们就完成了实验的连线部分。

3、实验原理

先设置数字 10 引脚为高电平电亮 led 灯,然后延时 1S,接着设置数字 8 引脚为低电平

熄灭 led 灯,再延时 1s。这样使 led 灯亮 1s、灭 1s,在视觉上就形成闪烁状态。如果想让

led 快速闪烁,可以将延时时间设置的小一些,但不能过小,过小的话人眼就识别不出来了,

看上去就像 led 灯一直在亮着;如果想让 led 慢一点闪烁,可以将延时时间设置的大一些,

但也不能过大,过大的话就没有闪烁效果了。

4、程序代码

直接复制这个代码到软件的编程界面就好了。

程序代码如下:

//机器人包老师(玩得趣科教俱乐部)

int LED = 10;//定义数字接口 10,对应

void setup()

{

pinMode(LED,OUTPUT);//设置数字 10 口为输出接口,Arduino 上我们用到的 I/O 口都要进行类似这样的定义。

}

void loop() //死循环体

{

digitalWrite(LED,HIGH);//IO 口 10 设置为高电平,点亮数字 10 口 LED

delay(500);//延时 500MS

digitalWrite(LED,LOW);//IO 口 10 设置为低电平,熄灭数字 10 口 LED

delay(500);//延时 500MS

}

从 Arduino 的教程中我们可以知道,Arfuino 语言是以 setup()开头,logo()作为主

体的一个程序构架。Setup()是用来初始化变量,管脚模式,调用库函数等等,此函数只运

行一次。本程序在 setup()中用输入输出模式定义函数 pinMode (pin,mode),将数字的第

10 引脚设置为输出模式。

Loop()函数是一个循环函数,函数内的语句周而复始的循环执行,本程序在 loop()中先用

数字 IO 口输出电平定义函数 digitalWrite(pin,value),将数字 10 口定义为高电平,点亮 led

灯;接着调用延时函数 delay(ms)(单位 ms)延时 1000ms,将发光二极管亮 1s;再用数字 IO

口输出电平定义函数 digitawrite(pin,value)将数字 10 口定义为低电平,熄灭 led 灯;接着

再调用延时函数 delay(ms)(单位 ms)延时 1000ms,让发光二极管熄灭 1s。因为 loop()函数

是一个循环函数,所以这个过程会不断的循环。

5、下载程序

按照 arduino 教程中的程序下载方法将本程序下载到实验板中。

6、程序功能

将程序下载到实验板后我们可以观察到,发光二极管以 1s 的时间间隔不断的闪烁。

广告灯效果实验

1、实验器件

■ Led 灯:6 个

■ 220 欧的电阻:6 个

■ 多彩面包板实验眺线:若干

2、实验连线

然后按照二极管的接线方法,将六个 LED 灯依次接到数字 1~6 引脚上。如图:

15d9f6e7a17b145ed67958e0454ace53.png

图 1.6 广告灯实验的接线

3、实验原理

在生活中我们经常会看到一些由各种颜色的 led 灯组成的广告牌,广告牌上各个位置上

的 led 灯不断的亮灭的变化,就形成各种不同的效果。本节实验就是利用 led 灯编程模拟广

告灯效果。在程序中我们设置 led 灯亮灭的次序和时间,这样就可以组成不同的效果。样式一子程序:led 首先从左边的绿灯开始间隔 200ms 依次点亮六个 led 灯。灯闪烁子程序:六个 led灯首先全部点亮,接着延时 200ms 最后六个 led 灯全部熄灭,这个过程循环两次就实现了

闪烁的效果。样式二子程序设置 k 和 j 的值让中间的两个黄灯先亮,接着让挨着两个黄灯两

边的红灯亮,最后让两边的绿灯亮;执行一遍后改变 k 和 j 的值让两边的绿灯先熄灭,接着

两边的红灯熄灭,最后中间的黄灯熄灭。样式三子程序:设置 k 和 j 的值,让两边的绿灯亮

400ms 后再熄灭,接着让两边的红灯亮 400ms 后再熄灭,最后让中间的两个黄灯亮 400m后熄灭;执行一遍后改变 k 和 j 的值让两个红灯亮 400ms 后熄灭,接着让两边的绿灯400ms 后熄灭。

ea35c285496dadb11190873179492890.png

4、程序代码

直接复制这个代码到软件的编程界面就好了。

程序代码如下:

//机器人包老师(玩得趣科教俱乐部)

int Led1 = 1;//定义数字接口 1

int Led2 = 2;//定义数字接口 2

int Led3 = 3;//定义数字接口 3

int Led4 = 4;//定义数字接口 4

int Led5 = 5;//定义数字接口 5

int Led6 = 6;//定义数字接口 6

void style_1(void)

{

unsigned char j;

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

{

digitalWrite(j,HIGH);//点亮 J 引脚相连的 LED 灯

delay(200);//延时 200ms

}

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

{

digitalWrite(j,LOW);//熄灭 J 引脚相连的 LED 灯

delay(200);//延时 200ms

}

}

//灯闪烁子程序

void flash(void)

{

unsigned char j,k;

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

{

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

digitalWrite(j,HIGH);//点亮于 j 引脚相连的 led 灯

delay(200);//延时 200ms

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

digitalWrite(j,LOW);//熄灭与 j 引脚相连 dled 灯

delay(200);//延时 200ms

}

}

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

void style_2(void)

{

unsigned char j,k;

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

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

{

digitalWrite(j,HIGH);//点亮灯

digitalWrite(j+k,HIGH);//点亮灯

delay(400);//延时 400ms

k +=2;//设置 k 的值加 2

}

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

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

{

digitalWrite(j,LOW);//熄灭灯

digitalWrite(j+k,LOW);//熄灭灯

delay(400);//延时 400ms

k -=2;//设置 k 的减 2

}

}

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

void style_3(void)

{

unsigned char j,k;

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

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

{

digitalWrite(j,HIGH);//点亮灯

digitalWrite(j+k,HIGH);//点亮灯

delay(400);//延时 400ms

digitalWrite(j,LOW);//熄灭灯

digitalWrite(j+k,LOW);//熄灭灯

k -=2;//设置 k 的减 2

}

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

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

{

digitalWrite(j,HIGH);//点亮灯

digitalWrite(j+k,HIGH);//点亮灯

delay(400);//延时 400ms

digitalWrite(j,LOW);//熄灭灯

第 13 页 共 14 页

digitalWrite(j+k,LOW);//熄灭灯

k +=2;//设置 k 的加 2

}

}

void setup()

{

unsigned char i;

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

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

}

void loop()

{

style_1();//样式 1

flash();//闪烁

style_2();//样式 2

flash();//闪烁

style_3();//样式 3

flash();//闪烁

}

程序代码中用到的:

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

时,结束循环。

5、下载程序

按照 arduino 教程中的程序下载方法将本程序下载到实验板中。

6、程序功能

将程序下载到实验板后我们可以观察到,六个 led 不断的循环执行样式——子程序->闪烁

子程序—>样式子程序—>闪烁子程序—>样式二子程序—>闪烁子程序—>样式三子程序。

在掌握了以上两个程序后,大家可以充分发挥自己的想象,编写出自己想要的 led 灯效果,

玩转多彩 led 灯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值