2019-11-22 14:57:33 [显示全部楼层]
13795浏览
查看: 13795|回复: 0

[入门] 【LED 闪烁】基于Mind+ Ardunio入门教程01

[复制链接]
让我开们始吧!
       从LED开启我们的Arduino之旅吧!你将学会像控制按钮输入一样控制Arduino的各种输出。在硬件方面,你将学习到有关LED、按钮、和电阻的内容,包括上拉和下拉电阻的知识,这对于之后的项目非常重要。在这过程中,你会接触Mind+图形化编程,编程其实也没你想象的那么困难,对照图形化编程自动生成的C代码,你能学习基本的代码知识。让我们从一个最基本的项目,使用Arduino控制一个外部LED的闪烁。

       在第一个项目中,我们将重复使用之前的那个测试代码Blink程序。有所不同的是,这里我们需要外接一个LED到数字引脚,而不是使用焊在开发板上的LED 13(也就是“L”灯)。便于我们能清晰的认识LED的工作原理及一些硬件电路的搭建。



所需元件
1×  DFduino UNO R3(以及配套USB数据线)

■ 1×  Prototype Shield原型扩展板+面包板


■ 若干 彩色面包线

■ 1×  5mm LED灯  

■ 1×  220欧电阻   

*这里电阻仅为示意图,具体阻值参看xxx标示。阻值可能根据你使用的LED的不同而不同,后面会说明如何计算这个阻值。



硬件连接
       首先,从我们的套件中取出Prototype shield扩展板和面包板,将面包板背面的双面胶歇下,粘贴到Prototype shield扩展板上。再取出UNO,把贴有面包板Prototype shield扩展板插到UNO上。取出所需元件,按照图LED 闪烁1-1连接。
*在连接时需要注意图片中的扩展板和实际手中的扩展版可能存在一定的版本差异,接线要对照所用接口下的标号,而非依靠接口的相对位置。



图LED闪烁1-1
       用绿色与黑色的杜邦线连接元件(在DFRobot的产品中有如下定义,绿色为数字口,蓝色为模拟口,红色为电源VCC,黑色为GND,白色可随意搭配),使用面包板上其他孔也没关系,只要元件和线的连接顺序与上图保持一致即可。

       确保LED连接是否正确的,LED长脚为+,即VCC,短脚为-,即GND,完成连接后,给Arduino接上USB数据线、供电,准备下载程序。



图形化编程
       打开Mind+,完成前一课中所学的加载扩展Arduino UNO库,并用USB线将主板和电脑相连,然后在连接设备复选框中选择主板并连接。之后将左侧指令区拖曳到脚本区。输入样例程序1-1所示程序。
样例程序 1-1:



         输入完毕后,点击给Arduino下载程序。

       运行结果:以上每一步都完成了的话,你应该可以看到面包板上的红色LED每隔一秒交替亮灭一次。

       现在让我们来学习一下程序中用到的指令,看看它们是如何工作的。



图形化指令学习



       通过图形化编程,已经完成了LED闪烁效果,根据代码区自动生成的C代码,让我们一起来学习一下代码语言。



代码学习
       本项目的C代码如下。接下来我们将依次学习每一行代码的意义

[mw_shl_code=applescript,true]void setup() {

}
void loop() {
        digitalWrite(13, HIGH);
        delay(1000);
        digitalWrite(13, LOW);
        delay(1000);
}[/mw_shl_code]


void setup() {}

    这是setup()函数对应指令。函数格式如下:


       函数内部被花括号括起来的部分将会被依次执行,从“ { ”开始,“ } ”结束。两个符号之间的语句都属于这个函数。该括号内的函数通常起着初始化的作用,在arduino通电或者重启后,setup函数只运行一次。



函数
       函数通常为具有一个个功能的小模块,通过这些功能的整合,就组成了我们的整段代码,一个完整的功能实现。这些功能块也能被反复运用。这时,就体现函数的好处了。在程序运行过程中,有些功能可能会被重复使用,所以只需程序中调用一下函数名就可以了,无需重复编写。而setup()和loop()比较特殊,不能反复调用。
      
       还有一个概念我们需要了解一下,就是函数的返回值,我们可以理解为是一种反馈。在函数中是如何体现有无返回值的呢?就是,函数的声明,比如“ void ”就是函数无返回值的信号,我们之后会经常用到。带返回值的函数,我们先不做说明了,有兴趣的可以去网上了解一下。
      
       然而setup和loop函数比较特殊,一段代码中只能使用一次。

       你是否对函数有了一个简单的概念了呢?不明白也没关系,在我们之后的项目还会涉及到的。


void loop() {}


loop() 函数,对应 指令。


* Arduino程序必须包含setup () 和loop () 两个函数,否则不能正常工作。

       loop () 函数顾名思义,该函数在程序运行过程中不断的循环,loop () 函数中的每条语句都逐次进行,直到函数的最后,然后再从loop函数的第一条语句再次开始,三次、四次……一直这样循环下去,直到关闭Arduino或者按下重启按钮。


digitalWrite(13, HIGH)

       digitalWrite () 函数对应指令,作用是给引脚13一个高电平,点亮LED。


函数格式如下:

delay(1000)


         delay()函数对应指令用于延时等待。注意delay函数的时间单位为毫秒,1000毫秒也就是1秒举一反三,如果我们需要延时0.5秒,指令对应的代码是什么呢?答案:delay(500)



■ digitalWrite(13, LOW);
       有了上面的引导,这句话是不是很容易理解了呢?这句话意思为,给引脚13一个0V的低电平,也就是熄灭LED。



拓展练习
       现在我们知道代码是如何运作的了,让我们来个小小的改动吧!让LED保持关闭5秒,然后快速闪烁一下(0.25秒),就像汽车报警器上的LED指示灯那样。试着写一下!


答案:


       通过改变LED亮和暗的时间,可以产生不同的效果,亮暗交替迅速,则感觉动感,亮暗交替放缓,则感觉柔和。外面的灯光效果很多都是基于这样的原理。



硬件回顾
Prototype Shield原型扩展板
       Arduino UNO上面的端口资源是非常金贵。尤其是5V和GND的电源接口在板子上只有2到3个。因此在搭建多个器件时,需要用到多个GND或者5V接口,就没有足够的端口资源了。因此必须要一个端口扩展板来充分扩展Arduino的资源。

       与Arduino UNO配合使用的PrototypeShield原型扩展板,用来搭建电路原型,可以直接在板子上焊接元件,也可以通过上面的迷你面包板连接电路。面包板与电路板之间通过双面胶连接。来稍微看下这块板子,数字口与模拟口与UNO是一一对应的。其次,下图标出的5V都是相通的,GND也一样,都是相通的。(后续项目的接线图都以老版本为示例)


(新版本的Prototype Shield原型扩展板)


面包板
       面包板是一种可重复使用的非焊接的元件,用于制作电子线路原型或者线路设计。简单的说,面包板是一种电子实验元件,表面是打孔的塑料,底部有金属条,可以实现插上即可导通,无需焊接的作用。面包板该怎么使用?其实很简单,就是把电子元件和跳线插到板子上的洞洞里,具体该怎么插,我们就要从面包板的内部结构上说了。


       从上图我们可以看到,面包板分为上下两个部分,蓝线指出的纵向每5个孔是相通的。那会有人问,为什么上下两个部分不全通呢?其实面包板中间这个凹槽设计是有讲究的。凹槽两面孔间距刚好是7.62mm,这个间距正好可以插入标准窄体的DIP引脚的IC。

       IC插上后,因为引脚多,一般很难取下,硬来很容易弄弯引脚,这个槽刚好可以用镊子之类的东西将IC慢慢取下。


电阻
       下一个要说的元件是电阻。电阻的单位是 Ω。电阻会对电流产生一定的阻力,引起它两端电压的下降。可以将电阻想象成一个水管,它比连接它的管子细一点,当水(电流)流入电阻,因管子变细,水流(电流)虽然从另一端出来,但水流减小了。电阻也是一样的道理,所以电阻可以用来给其他元件减流或减压。
      
       电阻有很多用处,对应名称也不同,上拉电阻,下拉电阻,限流电阻等。我们这里用作限流电阻。在这个例子里,数字引脚10 输出电压为5V,输入电流为40mA(毫安)直流电。普通的LED需要2V的电压和35mA左右的电流。因此如果想以LED的最大亮度点亮它,需要一个电阻将电压从5V降到2V,电流从40mA减到35mA。这个电阻起限流的作用。

       如果不连电阻会怎样呢?流过LED的电流过过大(可以理解为水流过大,水管爆裂了!),会使 LED烧掉,就会看到一缕青烟并伴随着糊味儿~

       这里具体对电阻值选取的计算就不做说明了,只要知道在接LED时需要用到一个100Ω左右的电阻就可以了。大一点也没关系,但不能小于100Ω。如果电阻值选的过大的话,LED不会有什么影响,就是会显的比较暗。很容易理解,电阻越大,减流或减压效果更明显了。LED 随电流减小而变暗。


电阻色环读值
       我们元器件的包装袋上已经明确标明了各个元件的名称。但不排除有时候不小心标签掉了,可是手头又没有可以测量的工具,那该怎么办呢?有个方法就是从电阻上的色环来读取电阻值。我们这里就不做详细说明了。感兴趣的同学可以参照下图读读看阻值。



LED
       最后要说就是LED,标准的发光二极管,是二极管中的一种。二极管是一种只允许电流从一个方向流进的电子器件。它就像一个水流系统的中的阀门,但是只允许一个方向通过。如果电流试图改变流动方向,那么二极管就将阻止它这么干。所以,二极管在电路中的作用通常是用来防止电路中意外地将电源与地连接,避免造成损坏其他元件。

       LED也是一种二极管,会发光的二极管。LED能发出不同颜色和亮度的光线,包括光谱中的紫外线和红外线。(比如我们经常使用的各类遥控器上面的LED也是其中一种,与普通的发光二极管长的一样,只是发出的光我们人眼看不到,我们也称之为红外发射管。)

       如果仔细观察LED,你会注意到,LED引脚长度不同,长引脚为+,短引脚为-。那如果正负接反会怎么样呢?下面这张图就说明问题了,接反就不亮了呗。下图是不是还缺个电阻呀,细心的你发现了吗?




       在我们的套件中,还有一种LED,是4个脚的,不要以为我们发错了噢。这个LED功能可大着呢,它能呈现不同颜色,也称之为RGB LED。我们都知道红色、绿色、蓝色是三原色,通过这三种颜色的暗弱变换的组合可以呈现出任何你想要的颜色。把三种颜色放在同一个外壳里就能达到这样的效果。在我们之后的项目中还会介绍到。

       现在你知道了各元件的功能及整个项目中软硬件是如何工作的,让我们尝试做其他好玩儿的东西吧!


*部分图片素材源自网络,如有侵权,联系后将及时修改、删除。

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

本版积分规则

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

硬件清单

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

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

mail