👨💻个人主页:@开发者-削好皮的Pineapple!
👨💻 hello 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 削好皮的Pineapple! 原创
👨💻 收录于专栏:C语言到基于STM32 的智能矿探小车
文章目录
- ⭐前言⭐
- 🎶一、小车循迹功能
- 1.1 红外模块
- 🎶二、小车循迹实现
- 2.1 电平状态读取与对应关系
- 2.2 红外模块GPIO配置
- 2.3 循迹伪代码
- 结束语🥇
⭐前言⭐
小车循迹功能的实现,包括红外模块的组成、接线方法、组装与调试技巧,以及通过读取GPIO引脚电平状态来控制小车行驶状态的循迹逻辑。掌握这些知识,能让矿探小车沿着指定路线行驶并在终点稳稳停住,为智能矿探小车的进一步开发奠定关键基础。
🎶一、小车循迹功能
1.1 红外模块
- 功能:使矿探小车能够沿着指定的路线行驶,并且在终点处能够稳稳停住。
- 组成:
-
红外中空板(大红外)1块
-
-
红外探头(小红外)2个
-
-
10根杜邦线
-
- 接线:
- 红外探头与红外中空板:
- 红外探头的
VCC
接红外中空板的VCC
- 红外探头的
GND
接红外中空板的GND
- 红外探头的
OUT
接红外中空板的INx
(1、2、3、4),两个探头接在中控板上的任意两组即可
- 红外探头的
- 红外中空板与单片机:
- 红外中空板的
VCC
接单片机的5V - 红外中空板的
GND
接单片机的GND
(注意不要反接,接正确后指示灯D5会亮) - 红外中空板的
OUTx
(INx
)(1、2、3、4)接单片机的GPIO(不是4根都要连接,具体看红外探头和中空板的连接,选择两个即可)
- 红外中空板的
- 红外探头与红外中空板:
- 工作原理:正确连接好线之后,上电如果小红外发送的红外线遇到能够反射光线的障碍物(黑色物体不可以反射光线),则小红外会通过
OUT
输出一个低电平给中空板,并且对应的指示灯(D1、D2、D3、D4)会亮。 - 组装:小红外用铜柱固定在小车前部,红外灯管朝下。
- 经验分享:
- 调试好再组装。
- 接好线上电,让红外探头探测光滑的平面,对应的指示灯应该要亮;如果不亮,可以调节对应的电位器从而调节红外探头的检测距离,直到调亮;如果调节怎么都调节不亮,请换一组。
- 再让红外探头检测黑色物体,对应的指示灯应该熄灭;如果不熄灭,调节对应电位器,直到熄灭为止。
- 最终的调试结果:红外探头靠近光滑平面,对应指示灯亮;远离或遇到黑色物体,对应指示灯熄灭。
🎶二、小车循迹实现
2.1 电平状态读取与对应关系
- 读取对应GPIO引脚电平状态的函数:
GPIO_ReadInputDataBit(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)
- 参数:
GPIOx
:指定GPIO组号GPIO_Pin
:指定引脚编号
- 返回值:
- 0 表示读取到的GPIO是一个高电平
- 1 表示读取到的GPIO是一个低电平
- 参数:
- 电平状态对应情况:
- 红外探头检测到光滑地面时,会输出一个低电平给中空板,中控板通过
OUTx
/INTx
传输给对应GPIO低电平。 - 红外探头检测到黑线时,会反馈一个高电平给对应GPIO。
- 红外探头检测到光滑地面时,会输出一个低电平给中空板,中控板通过
2.2 红外模块GPIO配置
- 时钟使能
- GPIO初始化为浮空输入
2.3 循迹伪代码
left right
if(left == 0 && right == 0)
{//小车前进
}
else if(left == 1 && right == 0)
{//小车左转
}
else if(left == 0 && right == 1)
{//小车右转
}
else if(right == 1 && left == 1)
{//小车停止
}
结束语🥇
🔥 订阅专栏持续学习:C语言到基于STM32的智能矿探小车
💬 欢迎点赞、收藏、留言讨论,一起攻克嵌入式开发!