[应用相关]

STM32智能小车之 循迹

[复制链接]
1024|1
手机看帖
扫描二维码
随时随地手机跟帖
说书先生|  楼主 | 2016-9-9 22:34 | 显示全部楼层 |阅读模式
  一般小车实现了跑动之后,接着要做的就是让它按照我们设定的路线进行巡线走路,那么就要用到循迹模块了。网上循迹模块很多的,有好多种,原理就那样,就是利用红外传感原理。小车能够按照黑线走是因为当红外线的光照到黑线上时会被吸收,从而检测部到信号,而照到白线时可以反射回去,也就可以接受得到,因此,空值起来也很简单,一句话,检测和模块相连管脚的电平的高低。
        哪么我就来说说,该怎样检测呢。
        通过相应的函数读取管脚的电平值就行了。

[cpp] view plain copy
print?

  • GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_12)== 1  

     这里就是检测下,GPIOD 12管脚的值是否等于1,进而进行相应的动作,空值小车的转向。左边检测到了,说明小车往左偏,应该向左偏;右边类似。很简单吧。嘻嘻!

最重要的其实还是控制循迹模块的这些管脚,首先对他们进行的一系列的初始化操作。因为要判断这些管脚的状态,因此,在初始化的时候应该讲他们全部设置成浮空输入。关于管脚的4中初始化状态,具体可以参考stm32参考手册,里面讲的很详细,4种输入,4种输出。
下面贴出初始化的代码:

[cpp] view plain copy
print?

  • /****************************************************************************
  •   * @函数名:Traction_GPIO_Configuration(void)
  •   * @描述:  小车循迹管脚初始化
  •   * @输入:  无
  •   * @输出:  无
  •     * @返回值:无
  •   ****************************************************************************/  
  • void Traction_GPIO_Configuration(void)  
  • {  
  •     GPIO_InitTypeDef GPIO_InitStructure;  
  •     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);//使能PD端口时钟  
  •       
  •     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14; //PD.11~PD.14端口配置  
  •     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  •     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入  
  •     GPIO_Init(GPIOD, &GPIO_InitStructure);  
  •     //GPIO_SetBits(GPIOD,GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);                                  //PD.11.....PD14 输出高电平  
  • }  

上面的函数主要是对所控制的管脚进行了相应的初始化。其他的操作,就是读每个控制管脚的值了,然后进行相应的操作。
我用的循迹模块是这个型号的,我觉得还行。

凑活能用!
一直在**,一直没放弃……

tongh123| | 2018-4-25 11:41 | 显示全部楼层

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

191

帖子

0

粉丝