文章目录

  • 前言
  • 一、红外循迹模块工作原理及接线图
    • 红外循迹模块工作原理
      • 红外循迹模块和STM32的接线图
  • 二、cubeMX配置
  • 三、代码解析
  • 总结

前言

本篇文章将带大家学习STM32智能小车的循迹功能。

一、红外循迹模块工作原理及接线图

红外循迹模块工作原理

电路工作描述
以其中一路为例

TCRT5000传感器的红外发射二极管不断发射红外线,当发射的红外线没有被反射回来或者反射回的强度不够大时,红外接收管一直处于关闭状态,此时比较器LM393的2脚的电压低于3脚的电压,输出OUT1为低电平,LED1为点亮状态;当红外反射强度足够且被接收到时,比较器LM3932脚的电压大于3脚的电压,输出OUT1为低电平,LED1为熄灭状态。简单的可以理解为遇到黑线灯亮,遇到白线灯灭。

红外循迹模块和STM32的接线图

此红外循迹模块使用到了4个IO口分别接到了STM32的PA4~PA7。

二、cubeMX配置

将红外循迹的4个IO口都设置为上拉输入模式即可。

三、代码解析

find.c

#include "find.h"
#include "Moto.h"extern TIM_HandleTypeDef htim3;/*
函数功能:调节小车左右电机PWM
Left:左电机PWM
Right:右电机PWM
*/
void Moto_speed_set(int Left,int Right)
{__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, Right);__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_4, Left);
}/*
函数功能:循迹
*/
void Find(void)
{//全是白线前进if((IO1_read()==0)&&(IO2_read()==0)&&(IO3_read()==0)&&(IO4_read()==0)){Moto_speed_set(800,800);car_move(0);    }//右边有黑线小车向左即左轮加速右轮减速else if((IO1_read()==0)&&(IO2_read()==1)&&(IO3_read()==0)&&(IO4_read()==0)){Moto_speed_set(800,0);car_move(0);    }//右边有黑线小车向左即左轮加速右轮减速else if((IO1_read()==1)&&(IO2_read()==1)&&(IO3_read()==0)&&(IO4_read()==0)){Moto_speed_set(800,0);car_move(0);    }//右边有黑线小车向左即左轮加速右轮减速else if((IO1_read()==1)&&(IO2_read()==0)&&(IO3_read()==0)&&(IO4_read()==0)){Moto_speed_set(800,0);car_move(0);    }//左边有黑线小车向右即右轮加速左轮减速else if((IO1_read()==0)&&(IO2_read()==0)&&(IO3_read()==1)&&(IO4_read()==0)){Moto_speed_set(0,800);car_move(0);    }//左边有黑线小车向右即右轮加速左轮减速else if((IO1_read()==0)&&(IO2_read()==0)&&(IO3_read()==1)&&(IO4_read()==1)){Moto_speed_set(0,800);car_move(0);    }//左边有黑线小车向右即右轮加速左轮减速else if((IO1_read()==0)&&(IO2_read()==0)&&(IO3_read()==0)&&(IO4_read()==1)){Moto_speed_set(0,800);car_move(0);    }//全是黑线停车if((IO1_read()==1)&&(IO2_read()==1)&&(IO3_read()==1)&&(IO4_read()==1)){Moto_speed_set(0,0);car_move(2);}
}

find.h

#ifndef _FIND_H_
#define _FIND_H_#include "main.h"#define u8 unsigned char
#define u16 unsigned short
#define u32 unsigned int//红外循迹IO口定义
//传感器从右到左  IO1 IO2 IO3 IO4
#define IO1_read() HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4)
#define IO2_read() HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_5)
#define IO3_read() HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6)
#define IO4_read() HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7)void Find(void);
void Moto_speed_set(int Left,int Right);#endif

总结

循迹代码已经贴出希望大家可以好好理解一下循迹算法的编写。

STM32智能小车循迹教程相关推荐

  1. Arduino智能小车——循迹篇

    Arduino智能小车--循迹篇 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 点击 ...

  2. 循迹智能小车c语言主程序,智能小车循迹、避障、红外遥控C语言代码

    <智能小车循迹.避障.红外遥控C语言代码>由会员分享,可在线阅读,更多相关<智能小车循迹.避障.红外遥控C语言代码(13页珍藏版)>请在人人文库网上搜索. 1.智能小车避障.循 ...

  3. 基于51单片机智能小车循迹功能的实现

    基于51单片机智能小车循迹功能的实现 目录 基于51单片机智能小车循迹功能的实现 一.思路(仅供参考) 二.部分硬件模块介绍 1.L298n电机驱动模块 2.两路红外循迹模块 三.实现 1.代码 2. ...

  4. 五路循迹传感器的优点_5路红外线传感器控制智能小车循迹,27秒走完所有站点...

    5路红外线循迹智能小车27秒走完比赛地图 为了指导学生参加2017年广东省机器人挑战赛自选项目"高铁时代"的比赛,我改进了某厂家的arduino智能小车,把红外线循迹传感器从2路增 ...

  5. 51单片机智能小车循迹完整程序_电气与信息工程学院双创协会开展循迹小车培训...

    为培养青年学子创新意识和创新能力,激发勇于创新的主动性和积极性,营造良好科技创新氛围,10月29日至30日,电气与信息工程学院双创协会于一教609.三教102和三教202开展循迹小车培训,该培训由电子 ...

  6. 遥控汽车的编程c语言,智能小车循迹、避障、红外遥控C语言代码.docx

    //智能小车避障.循迹.红外遥控C语言代码 // 实现功能有超声波避障, 红外遥控智能小车, 红外传感器实现小车自动循迹, 1602 显示小 车的工作状态,另有三个独立按键分别控制三种状态的转换 // ...

  7. 智能小车循迹、跟随业务代码编写

    通过这段时间的学习,终于是把智能小车的循迹.跟随.避障业务实现出来.那么通过写下这篇文章,将自己在这个过程的心得.组装智能小车以及通过代码的编写实现各种业务的心路历程记录下来. 这是小车的实物图,通过 ...

  8. c32循迹小车c语言程序,stm32篇--小车循迹

    小车的循迹算法 循迹小车使用红外对射寻黑线,根据轨道的不同,我使用了两种不同算法: (1)第一种是在轨道外有影响的,比如轨道外有黑色,车出去一点就会碰到黑色,那就是检测到歪了之后除非检测它 回来了,否 ...

  9. 基于51单片机的多功能智能语音循迹避障小车

    目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...

最新文章

  1. 基片集成波导原理_ETH研究人员开发微型红外光谱仪 可以集成到芯片当中
  2. 64位 vs2010 和 opencv2.4.4 配置问题
  3. 【干货】值得收藏的 14 个 Linux 下 CPU 监控工具
  4. CenOS下安装Eclipse并配置PyDev
  5. MySQL高级-MySQL锁
  6. zookeeper 阿里滴滴 有点用 zookeeper主从选举方式
  7. 新浪微博API使用入门:申请应用、授权、使用官方java版本SDK
  8. [4G5G专题-81]:流程 - 4G LTE 小区切换流程大全
  9. 网络工程师中级(知识产权与标准化)
  10. dpbs和pbs的区别_PBS与TBS区别
  11. 阿法狗之后的围棋世界
  12. 设置此计算机的用户已选择屏蔽此网站,已阻止此网站显示有安全证书错误的内容,详细教您已阻止此网站显示有安全证书错误的内容怎么解决...
  13. Diligent Corporation获得Clearlake Capital和黑石的新投资
  14. 如何查看linux进程?
  15. python自动下载酷狗音乐_使用Python下载酷狗音乐
  16. 孔子为何砸掉子路给工人送饭的锅?
  17. 诚邀参加“认知与路径:元宇宙科技传播”线上专题研讨会
  18. win7家庭版和旗舰版区别_WIN7_64位系统安装 MicroWIN_SP9后没有PC-PPI通讯协议怎么处理?...
  19. 基于JAVA体育城场地预定系统前台计算机毕业设计源码+数据库+lw文档+系统+部署
  20. 虚幻引擎_材质+后处理实现中国风水墨渲染

热门文章

  1. STM3利用FATFS向SD卡文件追加数据的三种方法
  2. 解决ubuntu键盘乱码问题
  3. cics oracle xad_cics oracle xad_可以从大型机直接升级Oracle数据库吗?
  4. jqweui引入的标签
  5. vb身份证读取桌面程序
  6. 纽约时报 | 新一代的智能机器人正在改变全球工业
  7. 使用js获取时间并页面赋值
  8. Manjaro无法启动?别急,试试grub 命令加载系统。
  9. 电脑打不开文件服务器,Windows10系统任务栏打不开文件资源管理器的解决方法
  10. Smoke Test And Ad hoc Test