上大学时,因为痴迷机器人制作,我开始自学单片机。随着深入了解,我开始对单片机产生浓厚的兴趣。室友们在开黑玩dota,我在搭电路敲代码;室友们在看天下霸唱的小说《鬼吹灯》无法自拔,我在读郭天祥的自述《我的大学六年》斗志昂扬。就这样,学习了一段时间C语言和单片机,我就开始着手制作机器人。经过一年多时间,我制作的机器人数量不断的增多,对单片机的理解和使用也有了很大的提升。后来我的好友也开始学习单片机,可没多久他就跑来和我抱怨单片机太难学,我就让他去网上买了一套单片机开发板,或许这样学习会更容易一点。别说,开发板上的资源还挺丰富,流水灯、数码管、矩阵键盘、LED点阵、红外遥控器、直流电机、步进电机、LCD屏......应有尽有,还配有视频教程。这可比我当初自己搭建的最小系统板强多了,这下应该没问题了。
单片机开发板
果然,没过多久好友就告诉我:“单片机其实还是挺简单的嘛。“我给他设计了几个小项目,他瞄了一眼,说这个太简单,涉及到的知识点开发板上的教程都有讲过,不用再做了,自己回去找点别的项目做。过了一段时间,我的机器人小组要招新人,考题是根据提供的材料现场制作一辆循迹避障智能车。我的好友也来了,看着他自信满满的样子,我也就放心了。可是最后的结果出乎我的意料,他什么都没做出来,他自己也很诧异,明明想法是有的,可是却无从下手。后来,又有几个学弟在学单片机的时候也存在这种问题。我开始认真的思考他们的问题所在:
初学阶段过度依赖单片机开发板,完全跟着开发板的教程学习,缺乏主动性。
对单片机的认知不足,急于求成,恨不得一天就把单片机学会,导致基础不扎实。
盲目自信,跟着教程学习了板上所有资源就觉得自己已经学会了单片机,不屑于从简单的项目开始做起。
遇到疑难问题总是逃避,不积极处理,总想留在以后解决。
误认为单片机主要学习内容就是写代码,不重视底层硬件知识和接口电路知识。
总而言之,没有找到正确的学习方法。
那为什么我在学习单片机过程中没有出现他们的这些现象呢?
第一点,我没有使用开发板进行学习,我不是说开发板不好,其实开发板是很好的单片机学习入门工具,但仅限于入门,它的延展性太差,无法引导大家更深入的学习。
第二点,我学习单片机主要是为了制作机器人,而机器人制作则恰好为我深入学习单片机开辟了一条正确的道路:当我制作红外循迹智能车时,我认识了红外反射传感器,设计了红外传感器接口电路和H桥电机驱动电路,编写了多路红外传感器扫描和PWM调速代码;当我制作CCD循迹智能车时,我认识了图像传感器,设计了图像传感器接口电路,编写了图像传感器的驱动程序和简单的图像处理算法,认识了opencv开源库,学习了PID控制算法;当我制作六足机器人的时候,我认识了舵机,开发了多路舵机控制器,开始学习Labview编写上位机;当我制作自平衡车的时候,我认识了加速度传感器和陀螺仪,了解了卡尔曼滤波,加深了对PID的认识;当我......
在这些机器人的制作过程中,我熟练掌握了各种调试技巧,注重代码编写的质量,面向接口编程,接触了设计模式,归纳了编程中常见错误......就这样,沿着机器人制作这条路去学习单片机,不会因为某一个模块代码简单就不写,不会因为某一个模块电路简单就不画,更不会因为眼前的困难而放弃,因为我的目标就是完成我的机器人制作。
说了这么多,只是想让大家知道我的方法并不是空穴来风,而是我这么年来的经验之谈,即使现在已经工作好几年,我依然通过这种方式在进步。当然,这也只是我的一家之谈,希望对你有所帮助。