一个技术宅是怎么学会做机器人程序的?_1
分类:新酷科技 热度:

单片机

今天我用我的经历来告诉大家一个我认为比较有效的单片机学习方法。

上大学时,因为痴迷机器人制作,我开始自学单片机。随着深入了解,我开始对单片机产生浓厚的兴趣。室友们在开黑玩dota,我在搭电路敲代码;室友们在看天下霸唱的小说《鬼吹灯》无法自拔,我在读郭天祥的自述《我的大学六年》斗志昂扬。就这样,学习了一段时间C语言和单片机,我就开始着手制作机器人。经过一年多时间,我制作的机器人数量不断的增多,对单片机的理解和使用也有了很大的提升。后来我的好友也开始学习单片机,可没多久他就跑来和我抱怨单片机太难学,我就让他去网上买了一套单片机开发板,或许这样学习会更容易一点。别说,开发板上的资源还挺丰富,流水灯、数码管、矩阵键盘、LED点阵、红外遥控器、直流电机、步进电机、LCD屏......应有尽有,还配有视频教程。这可比我当初自己搭建的最小系统板强多了,这下应该没问题了。

单片机开发板

果然,没过多久好友就告诉我:“单片机其实还是挺简单的嘛。“我给他设计了几个小项目,他瞄了一眼,说这个太简单,涉及到的知识点开发板上的教程都有讲过,不用再做了,自己回去找点别的项目做。过了一段时间,我的机器人小组要招新人,考题是根据提供的材料现场制作一辆循迹避障智能车。我的好友也来了,看着他自信满满的样子,我也就放心了。可是最后的结果出乎我的意料,他什么都没做出来,他自己也很诧异,明明想法是有的,可是却无从下手。后来,又有几个学弟在学单片机的时候也存在这种问题。我开始认真的思考他们的问题所在:

初学阶段过度依赖单片机开发板,完全跟着开发板的教程学习,缺乏主动性。

对单片机的认知不足,急于求成,恨不得一天就把单片机学会,导致基础不扎实。

盲目自信,跟着教程学习了板上所有资源就觉得自己已经学会了单片机,不屑于从简单的项目开始做起。

遇到疑难问题总是逃避,不积极处理,总想留在以后解决。

误认为单片机主要学习内容就是写代码,不重视底层硬件知识和接口电路知识。

总而言之,没有找到正确的学习方法。

那为什么我在学习单片机过程中没有出现他们的这些现象呢?

第一点,我没有使用开发板进行学习,我不是说开发板不好,其实开发板是很好的单片机学习入门工具,但仅限于入门,它的延展性太差,无法引导大家更深入的学习。

第二点,我学习单片机主要是为了制作机器人,而机器人制作则恰好为我深入学习单片机开辟了一条正确的道路:当我制作红外循迹智能车时,我认识了红外反射传感器,设计了红外传感器接口电路和H桥电机驱动电路,编写了多路红外传感器扫描和PWM调速代码;当我制作CCD循迹智能车时,我认识了图像传感器,设计了图像传感器接口电路,编写了图像传感器的驱动程序和简单的图像处理算法,认识了opencv开源库,学习了PID控制算法;当我制作六足机器人的时候,我认识了舵机,开发了多路舵机控制器,开始学习Labview编写上位机;当我制作自平衡车的时候,我认识了加速度传感器和陀螺仪,了解了卡尔曼滤波,加深了对PID的认识;当我......

在这些机器人的制作过程中,我熟练掌握了各种调试技巧,注重代码编写的质量,面向接口编程,接触了设计模式,归纳了编程中常见错误......就这样,沿着机器人制作这条路去学习单片机,不会因为某一个模块代码简单就不写,不会因为某一个模块电路简单就不画,更不会因为眼前的困难而放弃,因为我的目标就是完成我的机器人制作。

说了这么多,只是想让大家知道我的方法并不是空穴来风,而是我这么年来的经验之谈,即使现在已经工作好几年,我依然通过这种方式在进步。当然,这也只是我的一家之谈,希望对你有所帮助。

再次郑重提醒,初学单片机时,再简单的代码也要敲,不要眼高手低,bug往往藏在最简单的语句中,多写多练,归纳易错点是非常必要的。考考你:

if (1 == ir_num) { } //注释:这是我当时自己归纳总结的,后来在《C++ Primer》中也看到这种写法。

上一篇:云计算、物联网、大数据齐头并进_1 下一篇:没有了
猜你喜欢
热门排行
精彩图文