赞
踩
我上学时,沉迷了很多年传奇游戏,从正版到sf,从潜在学霸,变成彻底的学渣。
有时候,我都分不清自己是擅长文科,还是理科。
说擅长理科吧,我理科的成绩比较差,说擅长文科吧,毕业后又干着理科的活。
刚开始学单片机开发时,有个问题也苦恼我很久,英语,数学不好,能学会吗?
后面实在走投无路了,硬着头皮学,干了么多年,才发现,英语数学,并不是学编程的门槛,而是天花板。
技术天花板高低,无所谓了,够用就好,因为迟早有一天,你会发现,99%的问题,都不是技术问题。
有个矛盾的问题,我们用单片机去开发产品的时候,多多少少都会涉及一些算法,那我为什么认为数学功底不好,也不影响开发呢?
比如我们无际项目特训营的项目,做一些功能的时候,会用到一些小算法,无线通信软解码、锂电池电量检测、CRC、MD5、固件升级等等。
有两点:
第一,很多算法,网上都有现成的,可以拿来修修改改。
第二,不管算法多么复杂,最终在程序里面,都是进行加减乘除,左移右移运算,哪怕算法不懂,可以花钱找个数学厉害的人,把需求给他,让他给你个加减乘除的公式,你用代码去实现这个计算就好。
下面罗列一些,单片机开发中常用的算法种类。
1.基础数学运算算法
比如加减乘除、求和、求平均、求最大/最小值等简单的数学运算,这些是算法中的基础,经常用于数据处理和计算。
2.排序算法
如冒泡排序、选择排序、插入排序等,用途是将数据按照升序或降序进行排列。
3.滤波算法
如均值滤波、中位值滤波、卡尔曼滤波等,一般用于ADC采集信号的二次处理,用软件算法过滤信号上的噪声,还原接近真实的数据。
4.查找算法
包括线性查找和二分查找等,用于在数据集合中快速定位特定元素。
5.字符串处理算法
涉及字符串的比较、复制、连接、查找、替换等操作,这些算法在单片机上面也会用到,比如屏显示,json、物联网模块的指令数据处理。
6.控制算法
如PID算法,PID控制算法在工业控制系统用的很多,主要作用是让如温度、速度、位置等,能够快速且准确地达到并维持在期望的目标值。
PID算法就像是有一个智能的调节器,它能够根据系统的当前状态和目标状态之间的差异,来自动调整控制量,从而使系统稳定地工作在期望的状态。
例如,在恒温系统中,PID控制器会根据当前温度与设定温度之间的差异来调节加热器的功率,以保持恒温。
在机器人导航中,PID控制器可以调整机器人的行驶方向和速度,以确保它沿着预定的路径行驶。
7.数据处理算法
包括数据采集、转换、编码、解码等操作,我们无际单片机项目特训营中的无线软解码、OTA固件升级就涉及此类算法,这些算法在数据通信和存储中用的比较多。
8.加密解密算法
如AES、DES等,用于保证数据的安全性,防止未授权的访问和篡改,这些市面上一般有现成的可用。
9.数据校验算法
比如CRC、总和校验、异或校验,在串口通信的应用比较多。
10.数学函数算法
如三角函数、对数、指数、开方等算法,这些在处理复杂数学问题时非常有用,不过我接触的应用中,比较少。
11.图形处理算法
在需要显示或处理图像的单片机应用中,可能会用到点阵显示、图形变换、颜色处理等算法,在一些点阵屏,TFT屏的应用比较多,这个一般根据实际的图形或者屏尺寸制定算法。
12.状态机算法
这个属于程序架构的一部分了,用于功能复杂项目中的状态转换和事件处理,比如TI蓝牙协议栈的OSAL系统。
13.搜索算法
如深度优先搜索(DFS)、广度优先搜索(BFS)等,用于在图或树结构中搜索特定的节点或路径,这个用链表来做队列时会用到。
14.优化算法
如遗传算法、模拟退火算法等,用于寻找问题的最优解或近似最优解,像遗传算法一般用来做机器人的路径规划,以找到最优的移动路径,避开障碍物,做过智障小车的小伙伴,应该比较熟悉了。
看到这么多算法,是不是很头大?
不用怕,常用的,我已经帮大家整理好了,可找我安排,免废无套路。都存起来,下次用到了,直接复制粘贴,嘎嘎爽。
最后提醒一句,并不是所有产品都需要算法,用到了再针对性去学习就好了,而且很多都有现成的,不用自己从头到尾写。
不知不觉,又写了3小时(我的意思是,可以挥起发财小手来个赞了^ ^!)
最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单
片机最佳学习路径+单片机入门到高级教程+工具包」,全部无偿分享给铁粉!!!
除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!
教程资料包和详细的学习路径可以看我下面这篇文章的开头。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。