使用arduino做一个简单的按键控制LED项目,说一下硬件项目需要注意的若干事

做硬件,往往涉及软件,哪里出了问题,都会导致硬件不工作,下面以使用arduino做一个简单的按键控制LED项目为例,说一下硬件项目需要注意的若干事。

硬件:arduino uno

软件:aduino ide 1.8.9

若干事之第一件事:做每个项目时,要做好文档记录,比如图片、视频等,要随时记录,来不及记录时,用手机拍下来,有时间的时候再整理,将来项目做的多的时候,就会发现归档的好处。它能使你的项目具有很高的可维护性。不管多少年过去,你的客户问你一个产品故障怎么解决时,你会在极短的时间里找到当年的开发记录,然后告诉他怎么解决,这会给你的客户留下非常专业且深刻的印象,同时,让你即使肩负百项也能应付自如。

若干事之第二件事:每次的实验,记录下来你此次使用的硬件平台和软件平台。如同上面,硬件用的是UNO,软件使用的版本是1.8.9。为什么要这么记录,是因为硬件工程师往往掌握了好多种软件,你每个项目可能都会用到不同的软件,甚至是同一种软件的不同版本。当你的项目多了之后,你再重现某一次实验结果时,发现用的什么软件、用的哪一块板子都忘了,何谈重现?至于记录版本,有的同学说了,我一直用同样一个软件,都懒得省级了,不用记录。实际情况是,你有一天会被迫升级的,当你升级之后,发现以前做的若干个项目,是新版本编的程序呢?还是旧版本编的程序呢?找不到了。所以,最好记录下来自己的开发软件版本。我就遇到过一次,开发STM32的一个项目,使用KEIL3.80编译就不能使用,更换了4.0以上版本就成功的经历。此外,最好为每次试验配上如下这样的图,一目了然。

下面开始开发,硬件如上图所示,它的电连接很简单:

LED分别连接13引脚和GND,我这里没有连接限流电阻,因为程序设计的是按下开关点亮,抬起就熄灭,短时间通电,不会将LED烧毁。这是图省事的方法,不建议新手这么做。我这么做的原因还有一个就是LED直接插上两个相邻的插孔,不用再用杜邦线连接。

按键的连接方法是:5V连接到按键的一个引脚,按键的另一个引脚通过一个10K的电阻连接到GND,同时这个引脚连接到arduino的2脚。

大家可以看到,我使用了一个面包板,这就是我要说的第三件事。

若干事之第三件事:尽量多的使用面包板或者万能板(洞洞板)做原型调试。为什么这么说呢?做硬件有一个共识,就是你想想中设计完美的电路板往往拿到之后还得飞线纠错。哪怕是一个简单的三极管电路,有可能你设计的时候,连引脚顺序都弄错了。所以建议你用面包板先实现所有的功能,再做电路板,这样可以第一时间看到电路工作的实际效果,验证自己的设计理念,同时,可以尽量减少PCB设计时的失误。

下面开始软件设计。

使用的是arduino官方开发环境。

使用的是arduino官方例程

打开这个程序之后,发现程序不长,可是程序代码前面有一段很长的注释语句。

下面分析这一段注释语句,如下图所示,注释一共分为6个部分,这一段注释,让你无论何时看到这个程序,都能瞬间明白,这个程序是干啥的,谁写的,甚至电路怎么连接都知道了。它的好处就是相当好的阅读性和可维护性。

若干事之第四件事:做好尽可能详细的程序注释。它有两个方面的好处,第一,相当好的可读性和可维护性;第二,你的员工离职后,其他同学可以快速顶上,不会浪费海量的时间理解程序。

再看程序:分为三个部分:第一部分,变量定义,这里定义了硬件引脚和一个代表按键状态的变量,并且初始化为0,数字世界就是由0和1组成的,硬件工程师更能理解这个说法。第二部分,硬件配置,相当于初始化。第三部分,主循环,判断按键的状态,让灯点亮或者熄灭。

关于程序,有一些事情需要说一说。

若干事之第五件事:变量一定要初始化。别小瞧这个事,以前有个项目,没有给某个变量赋值为0,而是想当然地以为C语言都会自动赋值为0,结果造成很严重的后果。

若干事之第六件事:主函数尽量放在最后一个。这是一个个人习惯和建议。为什么这么说呢?主函数放在最后,那么前面的函数就不用在变量定义部分后面再单独声明了,而且程序打开后,拉到最下方肯定是主函数,主要功能一目了然,便于维护和调试。

若干事之第七件事:多加注释。关键的代码,时间长了有可能会忘掉为什么的代码,以及后续版本中动过的代码,一定要注释。

若干事之第八件事:做好版本控制。无论是大公司,还是小公司,从一开始就要建立版本控制的规则,硬件开发更是这样。你要记录下来每个版本中使用的硬件(如果是自己设计的电路板,还需要记录下来PCB编码,这个编码可以自己定义)和软件。每取得一点进展,哪怕是极小的一个进展,尽量将当前的工作保存下来,为这个版本编号并保存下来。因为你下一个改动有可能会导致整个硬件系统不工作,如果你没有上一个正常运行版本做回溯并重新试验新想法的话,那么有可能就忘了怎么再改回去了。小公司尤其应该如此。

下面继续调试,将程序下载进入板子,然后发现不工作。

这个情况是最普遍的,高手也极有可能遇到这种最简单的硬件搭建完成还不能正常工作的情况。

遇到这种问题后,就需要从硬件和软件两部分进行排查了,差错最能体现硬件工程师的水准,经历越丰富,经验越多。

在此例中,我认为arduino 的例程不存在任何问题,只可能是硬件连接问题。看下图,能发现故障码?

按键的一个引脚连接的是5V,我就排查这个引脚是否连接到了5V,另一个引脚通过电阻接到GND,同时连接到2脚。

逐个排查发现按键插在面包板时错位了。

若干事之第九件事:硬件开发,调试、纠错最重要。心态上要降低预期,能一次成功的时候真的不多,关键还是要靠改错,你的价值都是通过一次次改错体现出来的。遇到问题后,要结合开发的过程,用各种方法初步分析错误根源,然后在纸上制定一个纠错步骤,每一步排除一种可能,按照步骤执行下来,往往就会顺利解决了,一定要写在纸上,别只靠脑子,否则可能会有遗漏。此外,最需要的是细心,千万别轻易认为某个引脚一定没问题,往往错误都是发生在自己以为没问题的元件或连接上面。

问题得到解决后,顺利实现功能。

发布了37 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/youngwah292/article/details/100173862