首页 > 编程知识 正文

智能小车循迹避障程序,避障小车

时间:2023-05-04 11:01:27 阅读:125077 作者:3795

项目准备:

一台stm32c8t6单片机

1个降压模块

L298N电机驱动模块2个、直流电机4个

三个TCRT5000跟踪模块

一枚12V锂电池

电路连接基本思路:12v锂电池为两个L298N电机驱动模块供电,一个L298N输出5V为C8T6单片机供电,12v电池通过降压模块输出3.3V电压为循迹模块,避障模块供电。

跟踪模块图像(有两种常见的跟踪模块,但我使用它)注:不同的循迹模块检测到黑白线输出端电平不一定相同

跟踪模块的使用介绍

跟踪模块原理:

检测到黑线时,输出端为低电平,二极管为熄灭状态

如果不是黑线,则反射回来的红外线强度足够大,因此输出端为高电平,指示二极管点亮。

跟踪设计思路:三个跟踪模块分别位于小车左中右,分别标记为led0、led1、led2

将适当的模式设置为上拉输入。

从跟踪模块的原理可以看出,跟踪模块检测到黑线时,输出端为低电平,否则为高电平。

所以呢

//anhighlightedblockif (led0==0le D1==1led2==1)购物车左转if (led0==1le D1==0led2==1)购物车前进if (led0===1le )

左转:

左、左、后两个车轮向后旋转; 右前、右后两个车轮向前转动,实现了原地左转

右转:

左、左、后两个车轮前转; 右前、右后两个车轮向后旋转,实现了原地右转

了解更多信息

STM32通过PWM实现小型电机的正反旋转

屏障设计理念:屏障模块图片:

同样将三个模块的信号端模式设置为上拉输入,相应的设计步骤也分别检测三个模块的高低等级,实现小车的避障。

//a代码块红外光故障检测函数S_BIZG_Input的后三位分别与[PA3、PA2、PA1]的状态值对应,未遇到故障(未接收红外光)的对应状态=1遇到故障)红外光对应状态(0--------------(() ) ) ) ) )0 s_bizg_input=() (u8 ) gg //0x0E 0000 1110然后向右移动1位}该函数功能直接读取数据寄存器的值,确定PA1 PA2 PA3的状态,

0x0E:0000 1110三个“1”正好对应A1、A2、A3

例如,假设在左边发现了障碍物0000 1110

0000 1100即0000 1100左右移动即0x06

例如在中间发现了障碍物0000 1110情况下

当向右移动0000 1010即0000 1010时,即0x05

//anhighlightedblock # defineno _ find x0x 07//无障碍#define Middle_Findx0x05 //中间有障碍物# define left _ findx0x 06/defineright_middle_findx0x01///右侧#define All_Findx0x00 //全部为障碍物http://www.sina .

如果有错误,欢迎大家指正。

其他的都是以此类推,当然左边发现障碍物可以分为:只有左边发现障碍物和左边或者左中发现障碍物。

小车销轴连接图:

导线连接:

链接: https://pan.Baidu.com/s/1k1 uave 72 ynij _ hws as _ qtg

抽屉代码: lbay

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。