👨?💻個人主頁:@開發者-削好皮的Pineapple!
👨?💻 hello 歡迎 點贊👍 收藏? 留言📝 加關注?!
👨?💻 本文由 削好皮的Pineapple! 原創
👨?💻 收錄于專欄:C語言到基于STM32 的智能礦探小車
文章目錄
- ?前言?
- 🎶一、小車循跡功能
- 1.1 紅外模塊
- 🎶二、小車循跡實現
- 2.1 電平狀態讀取與對應關系
- 2.2 紅外模塊GPIO配置
- 2.3 循跡偽代碼
- 結束語🥇
?前言?
小車循跡功能的實現,包括紅外模塊的組成、接線方法、組裝與調試技巧,以及通過讀取GPIO引腳電平狀態來控制小車行駛狀態的循跡邏輯。掌握這些知識,能讓礦探小車沿著指定路線行駛并在終點穩穩停住,為智能礦探小車的進一步開發奠定關鍵基礎。
🎶一、小車循跡功能
1.1 紅外模塊
- 功能:使礦探小車能夠沿著指定的路線行駛,并且在終點處能夠穩穩停住。
- 組成:
-
紅外中空板(大紅外)1塊
-
-
紅外探頭(小紅外)2個
-
-
10根杜邦線
-
- 接線:
- 紅外探頭與紅外中空板:
- 紅外探頭的
VCC
接紅外中空板的VCC
- 紅外探頭的
GND
接紅外中空板的GND
- 紅外探頭的
OUT
接紅外中空板的INx
(1、2、3、4),兩個探頭接在中控板上的任意兩組即可
- 紅外探頭的
- 紅外中空板與單片機:
- 紅外中空板的
VCC
接單片機的5V - 紅外中空板的
GND
接單片機的GND
(注意不要反接,接正確后指示燈D5會亮) - 紅外中空板的
OUTx
(INx
)(1、2、3、4)接單片機的GPIO(不是4根都要連接,具體看紅外探頭和中空板的連接,選擇兩個即可)
- 紅外中空板的
- 紅外探頭與紅外中空板:
- 工作原理:正確連接好線之后,上電如果小紅外發送的紅外線遇到能夠反射光線的障礙物(黑色物體不可以反射光線),則小紅外會通過
OUT
輸出一個低電平給中空板,并且對應的指示燈(D1、D2、D3、D4)會亮。 - 組裝:小紅外用銅柱固定在小車前部,紅外燈管朝下。
- 經驗分享:
- 調試好再組裝。
- 接好線上電,讓紅外探頭探測光滑的平面,對應的指示燈應該要亮;如果不亮,可以調節對應的電位器從而調節紅外探頭的檢測距離,直到調亮;如果調節怎么都調節不亮,請換一組。
- 再讓紅外探頭檢測黑色物體,對應的指示燈應該熄滅;如果不熄滅,調節對應電位器,直到熄滅為止。
- 最終的調試結果:紅外探頭靠近光滑平面,對應指示燈亮;遠離或遇到黑色物體,對應指示燈熄滅。
🎶二、小車循跡實現
2.1 電平狀態讀取與對應關系
- 讀取對應GPIO引腳電平狀態的函數:
GPIO_ReadInputDataBit(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)
- 參數:
GPIOx
:指定GPIO組號GPIO_Pin
:指定引腳編號
- 返回值:
- 0 表示讀取到的GPIO是一個高電平
- 1 表示讀取到的GPIO是一個低電平
- 參數:
- 電平狀態對應情況:
- 紅外探頭檢測到光滑地面時,會輸出一個低電平給中空板,中控板通過
OUTx
/INTx
傳輸給對應GPIO低電平。 - 紅外探頭檢測到黑線時,會反饋一個高電平給對應GPIO。
- 紅外探頭檢測到光滑地面時,會輸出一個低電平給中空板,中控板通過
2.2 紅外模塊GPIO配置
- 時鐘使能
- GPIO初始化為浮空輸入
2.3 循跡偽代碼
left right
if(left == 0 && right == 0)
{//小車前進
}
else if(left == 1 && right == 0)
{//小車左轉
}
else if(left == 0 && right == 1)
{//小車右轉
}
else if(right == 1 && left == 1)
{//小車停止
}
結束語🥇
🔥 訂閱專欄持續學習:C語言到基于STM32的智能礦探小車
💬 歡迎點贊、收藏、留言討論,一起攻克嵌入式開發!