1+1=10 個人部落格http://kevinlq.com/
阿新 • • 發佈:2019-01-10
一般小車實現了跑動之後,接著要做的就是讓它按照我們設定的路線進行巡線走路,那麼就要用到循跡模組了。網上循跡模組很多的,有好多種,原理就那樣,就是利用紅外感測原理。小車能夠按照黑線走是因為當紅外線的光照到黑線上時會被吸收,從而檢測部到訊號,而照到白線時可以反射回去,也就可以接受得到,因此,空值起來也很簡單,一句話,檢測和模組相連管腳的電平的高低。
哪麼我就來說說,該怎樣檢測呢。
通過相應的函式讀取管腳的電平值就行了。
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 輸出高電平 }
我用的循跡模組是這個型號的,我覺得還行。
湊活能用!
一直在堅持,一直沒放棄……