本节书摘来异步社区《Arduino实战》一书中的第2章,第2.1节,作者:【美】Martin Evans ,Joshua Noble ,Jordan Hochenbaum,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.1 准备开始
Arduino实战
为了完成你的反应速度计,你需要一些元件:
1块面包板,用来组装你的项目
一些跳线,用来将原件连接到一起
6个红色LED,你也可以用其他你喜欢的颜色
1个绿色LED
1个按钮式瞬时接触开关
7个电阻,每只阻值约180Ω,或者比180Ω稍大一些
1个10 kΩ的电阻
元件如图2-1所示。
接下来,你要在面包板上搭电路了。
2.1.1 面包板的使用
在项目的开发阶段,面包板是组装电路的极佳选择,因为它使你可以很容易地移动和增加元件。
一块面包板的典型布局如图2-2所示。面包板由许多插座组成。在面包板的中部,插座是纵向相连的,在正中间断开,而在面包板的上方和下方,插座则是横向相连的。上方和下方的区域通常用来为所搭建的电路提供电源。元件之间的连接则通常使用各种不同长度的跳线。
现在就来添加第一批LED和电阻,让它们来占据你的面包板吧。
2.1.2 电路图
本项目的第一步,你要在面包板上插接5个LED。图2-3所示的图形,也叫电路图,它表示了你即将要搭建的电路。如果你现在看不懂它也别担心——你很快就会掌握阅读电路图的窍门,并将其转化为面包板上的电路。
在电路图中,Arduino的数字引脚D8至D12各连接到一个LED(LED1至LED5),每个LED都连接了一个限流电阻(R1至R5)。负极,通常就是LED上较短的那个引脚,被连接到了Arduino上的GND引脚。电路的电源由连接到你的计算机的USB线提供。
当你熟悉了电路图,并且明白了LED、电阻和Arduino是如何连接到一起的,你就可以将元件插接到面包板上了。
2.1.3 添加LED
在图2-3中,LED1至LED5依次连接到了Arduino的第8~12号数字引脚(在电路图中以D8至D12表示)。每个LED都分别连接到Arduino的一个引脚。
每个LED上都串联了一个电阻,这些都是限流电阻,它们可以限制流过LED的电流,以免LED被烧毁。
计算限流电阻的阻值
限流电阻的阻值通过下列公式计算得出:
(工作电压−LED正向电压) / 电流的安培值=电阻的欧姆值
根据经验来说,绝大多数LED都可承受最多20 mA的电流而不至于烧毁。mA是表示毫安培,通常简称毫安。正向工作电压对于红色、黄色和橙色的LED来说是1.5 V,对于绿色的LED来说是2.0 V,对于蓝色和白色的LED来说是3.0 V。
你使用USB为电路供电,也就是5 V。如果你使用具有1.5 V正向电压的红色LED,假设工作电流是20 mA,那么计算电阻值的方法如下:(5 V~1.5 V) / 0.02 A = 175 Ω。
与之最接近的可用的电阻的阻值是180 Ω,所以为可靠地保护LED,你需要使用180Ω或者更大的电阻。我们使用了270 Ω的电阻,因为这个型号我们有很多,而且使用它们时LED仍然可以点亮。
2.1.4 连接硬件
确保Arduino没有连接到你的电脑上,在你连接硬件电路的时候请不要给它通电。
图2-4展示了如何使用一根跳线将Arduino的第12号引脚连接到第一个电阻,从而完成第一个LED的连接。注意电阻要跨过面包板*的横槽,确保LED较长的引脚,也就是正极,连接到了电阻,而较短的引脚,也就是负极,连接到了面包板上部的GND电源插座。
接下来,按照图2-5中那样,用跟刚才一样的方式连接剩下的4个LED。
图2-6展示了连接完成后的电路。注意将Arduino上GND引脚与面包板上公共端用一根长跳线连接在一起。你可以使用USB接口为这个项目的电路提供电源,因为这些LED只需要很小的电流。
现在已经组装好了电路,接下来你就可以开发程序代码,来让这些LED闪烁起来了。
2.1.5 使5个LED闪烁的程序
完成硬件的连接后,你就可以开始编程序了。启动Arduino IDE,然后新建一个Arduino程序。仔细地将以下代码输入到编辑器窗口中。
代码清单2-1 5个闪烁的LED,一个接一个地闪烁
在程序的第一部分,声明了程序的变量。数组ledArray用来设置你要使用的数字引脚编号。
你也可以直接使用引脚编号为变量赋值,就像这样:
但当你要操作一组功能类似的引脚时,使用数组就会更加高效。
在setup子程序中,可以使用一个for循环将8~12号引脚全部设为输出。
在程序的主循环中,可以再使用一个for循环,循环调用的digitalWrite函数,通过索引值count``从数组ledArray中获得要写入的LED引脚编号,依次将引脚设置为高电平,从而将相应的LED点亮。在75 ms的延时之后,引脚再次通过digitalWrite设置为低电平,相应的LED就会熄灭。
这个循环继续执行,就会以一个短暂的延时,轮流点亮和熄灭每个LED。你可以通过修改timer变量的值来修改延时的长短。
注意 digitalWrite函数的作用是将相应的引脚设置为高电平或者低电平。如果相应的引脚设置为高电平,digitalWrite将其电压置为5 V,这就足以点亮一个LED;如果相应引脚设置为低电平,digitalWrite将其电压置为0 V,LED就会熄灭。
现在你已经搭建好电路并编写好了程序,接下来让我们来测试一下它吧。
2.1.6 烧写和测试
用USB电缆将Arduino连接到你的计算机上,校验这个程序就会执行编译。如果发生了任何错误,请确保你已经准确输入了代码清单2-1所列的代码。要特别注意大括号{}左右匹配,还有不要漏掉分号(;)。当程序成功编译之后,就可以将其写入到Arduino中。如果烧写过程中出现错误,请检查是否已经选择了正确的Arduino类型和串口。
一旦程序被写入到Arduino,在一个短暂的延迟之后,LED就会开始一个接一个地闪烁。如果在程序在编译和写入到Arduino的过程中都没有发生任何错误,但LED并没有闪烁,请将Arduino从USB电缆上断开,然后仔细检查电路的连线。确保LED连接正确而且负极已经接地,然后尝试再次接上USB电缆。
注意 你并不需要为Arduino重新烧写程序,因为程序会保留在它的内置存储器中。
你的LED现在已经开始闪烁了,现在是时候做些更复杂的事情了。在这个入门教程接下来的部分中,你要为这个电路添加一个按钮。