网站开发相关的教材书籍,做的网站百度没收录,动物园网站建设的可行性分析,进行网站开发 如何搭建环境每日一言 压力是成长的催化剂#xff0c;扛过去#xff0c;你会遇见更坚韧的自己。 案例#xff1a;循迹小车#xff08;末尾附上视频#xff09;
硬件#xff1a;TCRT500红外传感器 这边我就要发表一下自己的感言了#xff0c;我之前没有学习嵌入式的时候一直认为小车… 每日一言 压力是成长的催化剂扛过去你会遇见更坚韧的自己。 案例循迹小车末尾附上视频
硬件TCRT500红外传感器 这边我就要发表一下自己的感言了我之前没有学习嵌入式的时候一直认为小车怎么会跟着地面上的黑线一直走循迹哇好神奇啊一个个都是大佬是人类吗这么厉害....
现在好好好那我就默默不说话.... 我们循迹呢需要用到TCRT500红外传感器这个模块会使用了那么循迹就可以实现了
仔细介绍TCRT5000传感器的红外发射二极管不断发射红外线 当发射出的红外线没有被反射回来或被反射回来但强度不够大时 红外接收管一直处于关断状态此时模块的输出端为高电平指示二极管一直处于熄灭状态 被检测物体出现在检测范围内时红外线被反射回来且强度足够大红外接收管饱和 此时模块的输出端为低电平指示二极管被点亮 简单粗暴介绍总结就是一句话有感应到黑线D0输出高电平 灭灯我不想以后回过头来坑自己这个就是模块的使用方法对的就是那么的简单 那么我们模拟一下赛道 所以我们需要两个这个模块进行装备 就是我黄圈圈出来的这个是我们的模块
那么我们既然知道了原理有感应到黑线D0输出高电平 灭灯那我们就可以根据这个特性我们来写代码目的是将黑色轨道给他控制在两个传感器中间这样就实现了循迹 代码很简单
main.c文件 我们是直接用的电机驱动分文件的代码这个可以直接改一下就成为我们循迹小车的代码不懂得回去翻笔记
因为循迹就只需要电极转动就可以了也不需要差速什么的想要实现怎么样的效果取决于需求但是在这我只是单纯为了循迹一根线的循迹而且是2路模块的千万不要忘了不能做挑选路线的操作因为那个需要视觉模块我们还不会视觉模块并且目前51单片机做不到32还可以玩玩
因为D0输出高电平 灭灯
所以我们的逻辑是当哪一边灭灯的时候就往哪一边转向
举例1左模块灭灯说明左模块检测到黑线那么就向左转向反之道理也是一样的 这个代码是如果两个都灭灯那么是不是可能小车在黑色的区域了或者场地布置的因素当然概率很小但是我们还是要将这种情况写出来 这个代码是如果两个都是低电平说明得到了正常的红外线反射那么是不是可能小车在黑线的正中间行驶那么我们就只需要设置小车前进就好了
左转右转的大家都会写..... motor.c文件 motor.h文件 案例解决循迹小车转弯不平滑问题
经过循迹小车代码的实际操作我们发现小车的转向很抽象每当要转向的时候小车的车身幅度会非常大有点像一抽一抽的掉帧了一样所以啊我们需要进行优化
怎么优化
其实到这边我就已经可以根据之前的经验都不用想软件层面我们就用差速呗
因为我们之前的逻辑是没有用差速进行控制小车的之前是左转的时候我们直接让左轮停止右轮也是全速前进那这个转向角度就非常大了
因此我们的优化逻辑是当左转或者右转的时候让左转的时候一个轮子快一点一个轮子慢一点就是让两个轮子都要动这样不就实现了转弯比之前平滑了吗。Good 开始编写代码
Main.c 有经验的我们知道肯定要进行调用他2个定时器的初始化然后我们将之前循迹小车main函数的代码块进行改装一下就好了就是前进、停止、向左前进、向右前进都改成用差速的方法来进行配置
比如我单纯前进那么我设置speedLeft40 和 speedRight40那么就是全速前进了然后左转右转的数值换一下就好了不需要讲解说白了就是之前的差速小车的代码我们直接拿来改就是了 Motor.c文件 Motor.h头文件声明函数 Time0.c文件 Time0.h文件 这些之前代码都讲过一模一样的代码 循迹小车 具体参数我是这样调的哈基本上出不了赛道20次出1次吧关于参数可以自己根据自己的实际状况来要是怕自己的小车经常出赛道的话多买两个TCRT5000传感器这样就稳妥了