|
一般小車實(shí)現(xiàn)了跑動之后,接著要做的就是讓它按照我們設(shè)定的路線進(jìn)行巡線走路,那么就要用到循跡模塊了。網(wǎng)上循跡模塊很多的,有好多種,原理就那樣,就是利用紅外傳感原理。小車能夠按照黑線走是因?yàn)楫?dāng)紅外線的光照到黑線上時(shí)會被吸收,從而檢測部到信號,而照到白線時(shí)可以反射回去,也就可以接受得到,因此,空值起來也很簡單,一句話,檢測和模塊相連管腳的電平的高低。
哪么我就來說說,該怎樣檢測呢。
通過相應(yīng)的函數(shù)讀取管腳的電平值就行了。
- GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_12)== 1
這里就是檢測下,GPIOD 12管腳的值是否等于1,進(jìn)而進(jìn)行相應(yīng)的動作,空值小車的轉(zhuǎn)向。左邊檢測到了,說明小車往左偏,應(yīng)該向左偏;右邊類似。很簡單吧。嘻嘻!
最重要的其實(shí)還是控制循跡模塊的這些管腳,首先對他們進(jìn)行的一系列的初始化操作。因?yàn)橐袛噙@些管腳的狀態(tài),因此,在初始化的時(shí)候應(yīng)該講他們?nèi)吭O(shè)置成浮空輸入。關(guān)于管腳的4中初始化狀態(tài),具體可以參考stm32參考手冊,里面講的很詳細(xì),4種輸入,4種輸出。
下面貼出初始化的代碼:
- /****************************************************************************
- * @函數(shù)名:Traction_GPIO_Configuration(void)
- * @描述: 小車循跡管腳初始化
- * @輸入: 無
- * @輸出: 無
- * @返回值:無
- ****************************************************************************/
- 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 輸出高電平
- }
復(fù)制代碼
上面的函數(shù)主要是對所控制的管腳進(jìn)行了相應(yīng)的初始化。其他的操作,就是讀每個(gè)控制管腳的值了,然后進(jìn)行相應(yīng)的操作。我用的循跡模塊是這個(gè)型號的,我覺得還行。
0.png (91.96 KB, 下載次數(shù): 75)
下載附件
2017-5-21 21:05 上傳
湊活能用!
一直在堅(jiān)持,一直沒放棄……
|
|