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

项目一 点亮一盏灯
本系列教程配套硬件套件:新版Arduino中级套件
上一课:前奏3 从串口中认识“数字”与“模拟”
在前面几篇前奏中,我们已经对Arduino有了简单的了解,整个装置工作是依赖于哪些部分。也了解了电子世界最重要两个量,数字量与模拟量。接下来我们就正式开始做东西了,第一个要做的必须是最经典的,最经典的莫过于“blink”。其实,前面在一开始驱动安装的时候就用过这段代码了,区别在于这里将不使用板子上的LED 13(也就是“L”灯),而是在数字引脚13连接一个LED。
所需元件
1×数字食人鱼红色LED发光模块

image001.jpg (18.79 KB, 下载次数: 4)

下载附件

保存到相册

2015-9-10 16:02 上传

*之后的项目将都不重复罗列UNO与I/0传感器扩展板,但是!每次都还是需要用到的。
硬件连接
直接把食人鱼红色模块连接到Arduino UNO的数字口13。插上USB线,准备下载程序。

image003.jpg (88.16 KB, 下载次数: 4)

下载附件

保存到相册

2015-9-10 16:02 上传

输入代码
打开Arduino IDE,在编辑框中输入样例代码1-1所示代码。(输入代码也是一种学习编程的过程,虽然提供代码的压缩包,但还是建议初学者自己输入代码,亲身体验一下。) 样例代码 1-1:
//项目一 —— 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就是控制设备,LED发光模块就是输出设备。对的,这个整个装置是没有输入设备的。有了这么一分析,我们再看代码就不那么难理解了。

image005.jpg (61.69 KB, 下载次数: 4)

下载附件

保存到相册

2015-9-10 16:02 上传

代码分析
先说下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将自动把注释的文字颜色变为灰色。
趣味练习
能否试试变换LED的亮灭速度,让LED保持关闭5秒,然后快速闪烁一下(250毫秒),就像汽车报警器上的LED指示灯那样。 通过改变LED开和关的时间,可以产生不同的效果,开关时间短,则感觉动感,开关时间长,则感觉柔和。
下一课:项目二 感应灯
※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!www.dfrobot.com.cn

标签: Arduino教程