你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32智能小车之 循迹

[复制链接]
STMCU小助手 发布时间:2022-5-12 20:03
          一般小车实现了跑动之后,接着要做的就是让它按照我们设定的路线进行巡线走路,那么就要用到循迹模块了。网上循迹模块很多的,有好多种,原理就那样,就是利用红外传感原理。小车能够按照黑线走是因为当红外线的光照到黑线上时会被吸收,从而检测部到信号,而照到白线时可以反射回去,也就可以接受得到,因此,空值起来也很简单,一句话,检测和模块相连管脚的电平的高低。
+ f: f( _" f6 u( [  \8 [$ R3 e, m4 y
        哪么我就来说说,该怎样检测呢。
% @. g+ A  d' i( M. T- S, Q( n0 ]6 v- z4 ]% j* `1 x7 f
        通过相应的函数读取管脚的电平值就行了。
2 i" ^5 s& S) I+ \: X' ?2 H! ?& h( D2 s
  1.    GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_12)== 1
复制代码
- G4 n; q4 y) |
     这里就是检测下,GPIOD 12管脚的值是否等于1,进而进行相应的动作,空值小车的转向。左边检测到了,说明小车往左偏,应该向左偏;右边类似。很简单吧。嘻嘻!
& Q/ O. x+ r5 l: ?! `' U% \最重要的其实还是控制循迹模块的这些管脚,首先对他们进行的一系列的初始化操作。因为要判断这些管脚的状态,因此,在初始化的时候应该讲他们全部设置成浮空输入。关于管脚的4中初始化状态,具体可以参考stm32参考手册,里面讲的很详细,4种输入,4种输出。; L5 N$ ~5 y( m' A9 Q

* U1 `" D  b! r: i下面贴出初始化的代码:
" n3 |1 I( ^* V5 A+ k  y; }
  1. <p>/****************************************************************************</p><p>  * @函数名:Traction_GPIO_Configuration(void)</p><p>  * @描述:  小车循迹管脚初始化</p><p>  * @输入:  无</p><p>  * @输出:  无</p><p><span style="white-space:pre">        </span>* @返回值:无</p><p>  ****************************************************************************/</p><p>void Traction_GPIO_Configuration(void)</p><p>{</p><p><span style="white-space:pre">        </span>GPIO_InitTypeDef GPIO_InitStructure;</p><p><span style="white-space:pre">        </span>RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);//使能PD端口时钟</p><p><span style="white-space:pre">        </span></p><p><span style="white-space:pre">        </span>GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14; //PD.11~PD.14端口配置</p><p><span style="white-space:pre">        </span>GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;</p><p><span style="white-space:pre">        </span>GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入</p><p><span style="white-space:pre">        </span>GPIO_Init(GPIOD, &GPIO_InitStructure);</p><p><span style="white-space:pre">        </span>//GPIO_SetBits(GPIOD,GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);<span style="white-space:pre">                                        </span> <span style="white-space:pre">                                </span>//PD.11.....PD14 输出高电平</p><p>}</p>
复制代码
" |( O1 F5 ~+ O* n5 b3 V" r
) S6 b( O+ y9 `+ T% C1 O9 p6 s
上面的函数主要是对所控制的管脚进行了相应的初始化。其他的操作,就是读每个控制管脚的值了,然后进行相应的操作。& h, [  v9 t: A- f7 o- w% k
我用的循迹模块是这个型号的,我觉得还行。
5 x8 I  ?8 U2 p" U+ T2 o/ P$ t
1 P8 w) P4 \. \; B9 S  y1 c' U R6D]81MX(IXZ1YF4T]F0_7B.png
2 A$ C6 u+ H7 Y  `  w7 ?) z8 R: [& `3 U  U+ }, k& \9 {' G" Q

. b7 }5 z% O, l% W0 T# @
赞 收藏 评论0 发布时间:2022-5-12 20:03

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版