请选择 进入手机版 | 继续访问电脑版

52代码

 找回密码
 立即注册
查看: 125|回复: 0

[Arduino] 神奇的Arduino第三期——灯红酒绿的秘密,外部LED闪烁

[复制链接]

4

主题

4

帖子

14

积分

超级版主

Rank: 8Rank: 8

积分
14
发表于 2017-9-27 12:08:40 | 显示全部楼层 |阅读模式
本帖最后由 程序猿 于 2017-9-27 12:14 编辑

前言

这是《神奇的Arduino》第三期了,这期文章我们要做一个真正的arduino项目了,鉴于大家可能没学过C语言,所以我用实例来教大家编程,顺便再教大家一些物理知识。可谓一箭双雕啊。

今天我们稍微提升一点难度,代码还是Blink的,但是今天用的不是板载LED了,我们要用外部LED。



需要的原件


面包板



5mm LED



100欧姆电阻及跳线若干


面包板在淘宝大概2元左右,不是很贵,但是肯定是要邮费的。Led比较常见,如果买led的时候尽量知道led的工作电压和工作电流(如果实在不知道的话也没关系,这个原件很便宜,新手入门,烧坏几个原件是正常的,我也是从这个地方走过来的)。跳线很便宜,10元能买一大堆。当然,最重要的我们还需要一个arduino主板,你可以用arduino uno,如果你想出成品,那你也可以买arduino nano,大概6-8元一片。



原件连接图

好了,现在原件的都准备完成,咱们把原件拼接到一起吧,我用一个连接图来表示;



在这里讲解以下这个连接图。我们用arduino的2好引脚作为led灯珠的电源正级,因为arduino的引脚能提供5V 40ma的电压和电流,点亮一个LED是完全没问题的。

LED串联一个电阻,因为LED的标准电压可能不到5V,如果直接连接到电路里,可能会因为电压过高,把LED烧坏。所以我们要连接一个电阻帮LED分担电压,一般来讲,这个电阻选择多大阻值是可以计算的。如果想知道是怎么计算的,请留下评论~

LED是有正负极的,连接的时候要注意一下,一般是引脚有弯曲的是正级,如果你还是不能分辨那个是正级的话,可以连接到电路里试试,插反了LED不亮。

程序代码

上节课我们介绍了如何安装IDE和如何编写一个官方的事例,所以在这里就不再多陈述,如果大家不太明白的话,可以查看我发的历史消息。直接放代码

// 神奇的Arduino(3)

int ledPin = 2;

void setup()

{

pinMode(ledPin, OUTPUT);

}

void loop()

{

digitalWrite(ledPin, HIGH);

delay(1000);

digitalWrite(ledPin, LOW);

delay(1000);

}

我们把代码上传上去,如果你没有输入错误,那个LED会每秒交替闪烁一次。


代码分析

在这里我们简单的分析以下代码,其实大部分代码上篇文章已经解释过了,我们在这里解释一些没有说过的。

// 神奇的Arduino(3)

这行内容不是代码,而是一个注释,计算看到以//开头的文字,会把他理解为注释内容,就是这行内容是对代码的一个说明,执行的时候直接跳过这行就可以了。

我的代码里真的需要注释吗?你可能觉得这个代码并不需要这样的注释,没错,如果你的代码只有10行,当然不需要注释;但是如果你的代码是100+行,1000+行的时候,那你除非有天才一样的记忆力不然几个月后你再看到自己的代码肯定会抓狂。



所以,写代码要养成一个勤写注释的好习惯。刚才那个是单行注释,在这里我介绍一下,还有中注释形式,叫:多行注释。看例子:

/*

作者:52代码

时间:2017年7月12日

标题:一个点亮外部LED的程序

*/

多行注释是以 /* 作为开始,以 */ 作为结束,你可以在里面写作者、时间、标题之类的。Arduino崇尚开源精神,所以如果你写出了很好的代码,一定加好注释、分享出来~

int ledPin = 2;

这行代码是说,我们创建了一个整形变量来存放数字2。如果你没学过编程,一定很难理解这句话,没关系,我给你举个例子。我们一般用纸巾盒装纸巾、用牙签盒装牙签、用书包装书、用技术装X,咳咳最后一句不是重点,重点是,这个变量就像一个盒子,用来装东西的,而且每个变量(盒子)都是有类型的,就好比是来描述这个变量(盒子)用来装什么类型的东西,骨灰盒他就是用来装骨灰的,你拿它盛饭也不合适,是吧。。。

所以,我们弄了一个盒子,这个盒子的名称叫“ledPin”,int是一个基本类型,他代表的是整数。当然它存放的整数也是有范围的,以后我们会讲到。话说话来,这个盒子是用来存放数字的,然后里面存了一个数字2。

在以后用到引脚位置的时候,我们可以直接把这个变量名称写进去。你肯定会问这么做不是多此一举么?不!并不是多此一举。首先,以后你用到引脚的位置肯定不是一次,如果你的LED从2号引脚拔下来,插到3号引脚,那你就要把程序里所有写了2号引脚的代码都改成3,假设你的代码里有20次用到这个代码,那你就要更改20处。如果你用了变量代替,那你只需要更改变量的值就可以了,没错,只改一处。

digitalWrite(ledPin, HIGH);

这句代码是将2号引脚设置为高电平。

digitalWrite(ledPin, LOW);

这句代码是将2号引脚设置为低电平。

什么是高电平?低电平?你可以把高电平理解为将这个引脚的电压设置为5V。低电平就将这个引脚的电压设置为0V。

当LED正极为5V、负极连接GUN的时候,那么LED的正负极电压不相等,这个时候就会产生电流,然后LED就会发光。(除了有要有电压,还一定要有回路才行)

delay(1000);

是延迟函数,里面的1000是1000毫秒,如果你想延迟3秒,那你要写3000。

最后

如果你成功驱动了外部LED闪烁,那你还可以通过更改延迟时间来更改LED的闪烁频率。如果你在做的时候遇到了什么问题,那你可以在评论区留下你的问题,我会帮你解答。如果下次我们会做一个SOS的莫尔斯编码发送器。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

QQ|52代码 ( 鲁ICP备11007528号 )

GMT+8, 2017-12-18 05:38 , Processed in 0.062500 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2014 Comsenz Inc.

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