当前位置: 首页 > news >正文

小车循迹功能的实现(第六天)

在这里插入图片描述


👨‍💻个人主页:@开发者-削好皮的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会亮)
      • 红外中空板的OUTxINx)(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配置

  1. 时钟使能
  2. 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的智能矿探小车
💬 欢迎点赞、收藏、留言讨论,一起攻克嵌入式开发!

http://www.dtcms.com/a/275236.html

相关文章:

  • 自由学习记录(68)
  • C#事件:从原理到实践的深度剖析
  • 数据结构 顺序表(3)---顺序表的应用
  • 网安学习NO.14
  • 创意总监的动态视觉秘诀:用AE动态遮罩AI,轻松实现“人景分离”
  • 分割网络Segformer
  • 需求跟踪深度解析:架构师视角下的全链路追溯体系
  • Vue性能监控
  • PreparedStatement 实现分页查询详解
  • 你以为大数据只是存?其实真正的“宝藏”藏在这招里——数据挖掘!
  • 自动评论+AI 写作+定时发布,这款媒体工具让自媒体人躺赚流量
  • 卸载软件总留一堆“垃圾”?这款免费神器,一键扫清注册表和文件残留!
  • BLOB 数据的插入与读取详解
  • 9月22日跨境电商高峰会都说了啥?郑州跨境电商发展机遇在哪?
  • Nginx的配置与使用
  • 多元思维模型:数据分析需要具备的四大能力?
  • 傅里叶方法求解正方形偏微分方程
  • Redis缓存三兄弟:穿透、击穿、雪崩全解析
  • 张量与维度
  • Grid网格布局完整功能介绍和示例演示
  • 2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析
  • RestTemplate动态修改请求的url
  • 第一周JAVA——选择结构、循环结构、随机数、嵌套循环、数组(一维、二维)、方法、形参实参
  • 《每日AI-人工智能-编程日报》--7月11日
  • python知识:正则表达式快速入门案例:提取文章中所有的单词、提取文章中所有的数字、提取百度热搜的标题、提取ip地址
  • Web攻防-SSTI服务端模版注入利用分类语言引擎数据渲染项目工具挖掘思路
  • Umi-OCR 的 Docker安装(win制作镜像,Linux(Ubuntu Server 22.04)离线部署)
  • 数据集相关类代码回顾理解 | StratifiedShuffleSplit\transforms.ToTensor\Counter
  • 数据结构-双链表
  • 数字产品的专利战:要么布局称王,要么维权忙?