2015-9-10 16:07:47 [显示全部楼层]
30476浏览
查看: 30476|回复: 3

[中级教程] Arduino教程中级 项目一 点亮一盏灯

[复制链接]

项目一 点亮一盏灯

本系列教程配套硬件套件:新版Arduino中级套件

在前面几篇前奏中,我们已经对Arduino有了简单的了解,整个装置工作是依赖于哪些部分。也了解了电子世界最重要两个量,数字量与模拟量。接下来我们就正式开始做东西了,第一个要做的必须是最经典的,最经典的莫过于“blink”。其实,前面在一开始驱动安装的时候就用过这段代码了,区别在于这里将不使用板子上的LED13(也就是“L”灯),而是在数字引脚13连接一个LED。

所需元件

Arduino教程中级 项目一 点亮一盏灯图1

硬件连接

Arduino教程中级 项目一 点亮一盏灯图2

硬件分析(数字输出)

我们从前面几章说的输入输出的角度来看。整个装置只有两个部分,控制与输出。Arduino就是控制设备,LED发光模块就是输出设备。对的,这个整个装置是没有输入设备的。有了这么一分析,我们再看代码就不那么难理解了。
Arduino教程中级 项目一 点亮一盏灯图3

输入代码

输入代码也是一种学习编程的过程,虽然提供代码的压缩包,但还是建议初
学者自己输入代码,亲身体验一下。打开Arduino IDE,在编辑框中输入样例代码。

//项目一 —— LED 闪烁
     /*
描述:LED每隔一秒交替亮灭一次
     */   
int ledPin = 13;
void setup() {
        pinMode(ledPin, OUTPUT);
}
void loop() {
        digitalWrite(ledPin,HIGH);
        delay(1000);
        digitalWrite(ledPin,LOW);
        delay(1000);
}

输入完毕后,点击IDE的“校验(Verify)”,查看输入代码是否通过编译。如果显示没有错误,单击“下载(UpLoad)”,给Arduino下载代码。以上每一步都完成了的话,你应该可以看到面包板上的红色LED每隔一秒交替亮灭一次。

现在让我们来回顾一下代码,看看它们是如何工作的。

代码回顾

先说下Arduino代码必须具备的两个组成部分:

void setup() {
  // 写入setup代码,只运行一次:
}
void loop() {
  // 写入main代码,重复运行:  
}

Arduino代码必须包含setup()和loop()这两个函数。setup英文中是“设置”的意思。所以setup()函数是用于一些初始化设置的,只在代码一开始时,运行一次。loop是“循环”的意思,只要Arduino不掉电,loop就会不停的重复运行。

由于LED是输出设备,所以不难看出,在setup()函数中先初始化LED为输出模式。

函数格式如下:

pinMode(pin,mode)

这个函数是用来设置Arduino数字引脚的模式的,只用于数字引脚定义是输入(INPUT)还是输出(OUTPUT)。pin指数字引脚号,mode指引脚模(OUTPUT/INPUT)。
回头看下代码中,

pinMode(ledPin, OUTPUT);

这句话的意思就是,将ledPin设置为输出模式,中间的逗号可不能省。那ledPin是什么呢?看下代码的第一句话:

int ledPin = 13;

我们在一开始的时候给13号引脚起了个名字叫做ledPin,所以ledPin就代表了13号引脚。前面的int可不能少!
int代表了ledPin是个整数。

明白了这两句话的意思了,如果我们现在需要换个引脚,LED不连接到13号引脚,连接到10引脚,可以怎么写:

pinMode(10, OUTPUT);

只需把pin换成对应的引脚号就行了。

再看下loop()函数,loop函数中就
只用到了一个函数digitalWrite()。

函数格式如下:

digitalWrite(pin,value)

这个函数的意义是:引脚pin在pinMode()的中被设置为OUTPUT模式时,其电压将被设置为相应的值,HIGH为5V(3.3V控制板上为3.3V),LOW为0V。

digitalWrite(ledPin,HIGH);
//LED被点亮
digitalWrite(ledPin,LOW);
//LED被熄灭

代码中的,ledPin同样指引脚。写入HIGH时,引脚13就被至高,LED被点亮。写入LOW时,引脚13就被拉低,LED被熄灭。

亮与灭直接还有句语句:

delay(1000);

delay是延时的意思。括号中写入的是毫秒(ms)。所以,delay(1000)就是延时1s的意思。最后实现的就是 LED亮一秒,灭一秒,一直无限循环。
细心的朋友可能注意到,代码开始部分有段带“//”和“//”的文字:

//项目一 —— LED 闪烁
/*
描述: LED每隔一秒交替亮灭一次
*/

这是代码中的说明文字,可以叫做注释。是以”//”开始,这个符号所在行之后的文字将不被编译器编译。

还有另外一种写注释的方式,用“//”,这个符号的作用是可以注释多行,这也是与上一种注释方式的区别之处。在//中间的所有内容都将被编译器忽略,不进行翻译。 IDE将自动把注释的文字颜色变为灰色。

趣味练习

(1)能否试试变换LED的亮灭速度,让LED保持关闭5秒,然后快速闪烁一下( 250毫秒),就像汽车报警器上的LED指示灯那样。
(2)通过改变LED开和关的时间,可以产生不同的效果,开关时间短,则感觉动感,开关时间长,则感觉柔和。

※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!mc.dfrobot.com.cn

Lesson1_1.ino

280 Bytes, 阅读权限: 10, 下载次数: 87

jiashe2011  见习技师

发表于 2017-2-22 00:48:43

学习!!!!
回复

使用道具 举报

zhouyu77642017  学徒

发表于 2018-8-9 09:44:30

学习学习
回复

使用道具 举报

小飞侠_  见习技师

发表于 2019-7-8 23:42:36

学习学习
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail