点亮LED

网友投稿 2019-08-24 12:00

Arduino编程入门 课时3——点亮LED

这一节首先需要大家准备好Mixly arduino套件,我这里采用如图1所示套件。大家可以在某宝上搜索,为了免除打广告嫌疑,这里就不放链接了(如果读者不清楚可以在文末留言或者联系笔者)。然后通过这里下载Mixly软件。

https://cdn.china-scratch.com/timg/190826/120012OJ-0.jpg

图1 Mixly arduino套件

一、Arduino扩展板

Arduino主板选用UNO。为了方便可以选择套装(包含主板、扩展板、传感器)。主板不再赘述,扩展板如下。

https://cdn.china-scratch.com/timg/190826/120012N23-1.jpg

图2 Arduino扩展板

扩展板主要是将主板的某些引脚与电源封装为一组,这样传感器就不需要用杜邦线一根根连接,而是一组直接连接。这样就保证了硬件连接基本不会出错。

二、LED

LED是啥玩意呢,其实就是一个发光二极管,这个小灯和日常生活中的小灯珠有点不一样。发光二极管具有单向导电性,加正向电压二极管导通(亮),反向电压则截止(不亮)。要点亮发光二极管,需要一定的压降。我们常用的二极管压降一般在3V左右,电流一般是3-20mA。所以如果直接将LED连接在3V或5V电源上,很容易将其烧掉。但是通过I/O口控制影响不大。这里采用LED模块,模块已经连接电阻,使用起来非常方便。

https://cdn.china-scratch.com/timg/190826/12001223N-2.jpg

图3 LED模块

LED模块的+(正级)连接Arduino扩展板上的+,LED模块的-(负极)接电阻到S。S连接扩展板上的控制引脚。(当控制引脚为低电平时,LED亮;反之灭。)根据以上要求,我们可以使用扩展板上4、5、7、8、9任意一组端口, 下面以端口5为例。注意:5号端口对应的I/O引脚是D8(D是数字引脚,与之对应的A是模拟引脚),后面将通过编写D8引脚代码控制LED的亮灭(D8低电平,LED亮;反之LED灭)。

https://cdn.china-scratch.com/timg/190826/120012M07-3.jpg

图4 LED模块与扩展板连接

三、编程1

初始化

打开Mixly软件,首先在“控制”中选择“初始化”.初始化就是指明最开始的状态。

https://cdn.china-scratch.com/timg/190826/120013G02-4.jpg

图5 选择初始化模块

这里我想让LED在最开始的时候是灭的,所以D8引脚初始化为高电平。要设置高电平,需要用到“输入/输出”模块,然后再选择“数字输出”,“管脚”为8,“设为”高。

https://cdn.china-scratch.com/timg/190826/12001333a-5.jpg

图6 选择输出模块

初始化完整代码如下,非常简单。

https://cdn.china-scratch.com/timg/190826/120013A45-6.jpg

图7 初始化完整代码

将代码上传到板子上,可以看到LED处于熄灭状态。(注意:上传的时候板子选择Arduino/Genuino Uno)2

点亮LED

控制LED的D8引脚最开始为高电平,所以LED灭。现在我们让D8为低电平。鼠标指针移到刚刚的“数字输出”积木块,右键复制,然后将“高”改为“低”。上传程序,即可看到效果。

https://cdn.china-scratch.com/timg/190826/1200131B9-7.jpg

图8 点亮LED完整代码

将代码上传到板子上,可以看到LED点亮。3

如何让LED亮灭交替?

要让LED亮灭交替,我们先完成一次亮灭,即先点亮LED,然后再熄灭LED。大家应该已经想到代码。但是要注意,在点亮和熄灭LED时,不要忘了加延时,延时在“控制”模块中。(因为计算机执行代码很快,不加延时看不到效果。大家可以对比。)

https://cdn.china-scratch.com/timg/190826/120014B62-8.jpg

图9 LED亮灭交替完整代码

将代码上传到板子,你会发现LED实现了点亮后熄灭。但奇怪的是居然自动交替进行。这是怎么回事呢?这里我们点开编程界面的“代码”,如图10所示。

https://cdn.china-scratch.com/timg/190826/120014HE-9.jpg

图10 LED亮灭交替代码窗口

代码不细看,等到后期学习代码编程时再讲解。我们大略看一下,这部分代码分为两个板块:前面一个板块是“void setup()”,后一个板块是“void loop()”。其实它们就是两个函数。前者对应积木块的“初始化”,我们初始化的内容都放在这里面;后者则是放其他代码,我们后面让LED亮灭以及延时都是放在这里面。板子执行程序时,前者(void setup())编译的代码只执行一次,而后者(void loop())则是当前者一次执行完后就一直重复执行。正如loop这个单词所表达的意思“循环”一样。所以我们看到LED亮灭交替效果。

所以大家注意:“初始化”板块中的积木块代码只执行一次,其他积木块代码一直重复执行。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com