標(biāo)題:
STM32智能小車之 循跡
[打印本頁(yè)]
作者:
www240697738
時(shí)間:
2017-5-21 20:05
標(biāo)題:
STM32智能小車之 循跡
一般小車實(shí)現(xiàn)了跑動(dòng)之后,接著要做的就是讓它按照我們?cè)O(shè)定的路線進(jìn)行巡線走路,那么就要用到循跡模塊了。網(wǎng)上循跡模塊很多的,有好多種,原理就那樣
,就是利用紅外傳感原理。小車能夠按照黑線走是因?yàn)楫?dāng)紅外線的光照到黑線上時(shí)會(huì)被吸收,從而檢測(cè)部到信號(hào),而照到白線時(shí)可以反射回去,也就可以接受得到,因此,空值起來(lái)也很簡(jiǎn)單,一句話,
檢測(cè)和模塊相連管腳的電平的高低。
哪么我就來(lái)說(shuō)說(shuō),該怎樣檢測(cè)呢。
通過(guò)相應(yīng)的函數(shù)讀取管腳的電平值就行了。
GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_12)== 1
這里就是檢測(cè)下,GPIOD 12管腳的值是否等于1,進(jìn)而進(jìn)行相應(yīng)的動(dòng)作,空值小車的轉(zhuǎn)向。左邊檢測(cè)到了,說(shuō)明小車往左偏,應(yīng)該向左偏;右邊類似。很簡(jiǎn)單吧。嘻嘻!
最重要的其實(shí)還是控制循跡模塊的這些管腳,首先對(duì)他們進(jìn)行的一系列的初始化操作。因?yàn)橐袛噙@些管腳的狀態(tài),因此,在初始化的時(shí)候應(yīng)該講他們?nèi)吭O(shè)置成浮空輸入。關(guān)于管腳的4中初始化狀態(tài),具體可以參考stm32參考手冊(cè),里面講的很詳細(xì),4種輸入,4種輸出。
下面貼出初始化的代碼:
代碼:
/****************************************************************************
* @函數(shù)名:Traction_GPIO_Configuration(void)
* @描述: 小車循跡管腳初始化
* @輸入: 無(wú)
* @輸出: 無(wú)
* @返回值:無(wú)
****************************************************************************/
void Traction_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);//使能PD端口時(shí)鐘
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 輸出高電平
}
上面的函數(shù)主要是對(duì)所控制的管腳進(jìn)行了相應(yīng)的初始化。其他的操作,就是讀每個(gè)控制管腳的值了,然后進(jìn)行相應(yīng)的操作。
我用的循跡模塊是這個(gè)型號(hào)的,我覺(jué)得還行。
湊活能用!
一直在堅(jiān)持,一直沒(méi)放棄……
作者:
13852833337
時(shí)間:
2017-6-16 05:25
謝謝分享,很不錯(cuò)的資料,感謝
作者:
13720249551
時(shí)間:
2017-7-22 19:04
有完整的資料嗎?
作者:
13720249551
時(shí)間:
2017-7-22 19:04
需要什么硬件
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1