1. 程式人生 > >1+1=10 個人部落格http://kevinlq.com/

1+1=10 個人部落格http://kevinlq.com/

           一般小車實現了跑動之後,接著要做的就是讓它按照我們設定的路線進行巡線走路,那麼就要用到循跡模組了。網上循跡模組很多的,有好多種,原理就那樣就是利用紅外感測原理。小車能夠按照黑線走是因為當紅外線的光照到黑線上時會被吸收,從而檢測部到訊號,而照到白線時可以反射回去,也就可以接受得到,因此,空值起來也很簡單,一句話,檢測和模組相連管腳的電平的高低。

        哪麼我就來說說,該怎樣檢測呢。

        通過相應的函式讀取管腳的電平值就行了。

   GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_12)== 1
     這裡就是檢測下,GPIOD 12管腳的值是否等於1,進而進行相應的動作,空值小車的轉向。左邊檢測到了,說明小車往左偏,應該向左偏;右邊類似。很簡單吧。嘻嘻!

最重要的其實還是控制循跡模組的這些管腳,首先對他們進行的一系列的初始化操作。因為要判斷這些管腳的狀態,因此,在初始化的時候應該講他們全部設定成

浮空輸入。關於管腳的4中初始化狀態,具體可以參考stm32參考手冊,裡面講的很詳細,4種輸入,4種輸出。

下面貼出初始化的程式碼:

/****************************************************************************
  * @函式名: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 輸出高電平
}
上面的函式主要是對所控制的管腳進行了相應的初始化。其他的操作,就是讀每個控制管腳的值了,然後進行相應的操作。

我用的循跡模組是這個型號的,我覺得還行。

湊活能用!

一直在堅持,一直沒放棄……