rt.小車超聲波避障
0.jpg (9.65 KB, 下載次數: 75)
下載附件
2017-12-18 23:03 上傳
stm32單片機源程序如下:
- #include "stm32f10x.h"
- #include "led.h"
- #include "Sonic.h"
- #include "USART1.h"
- #include "bsp_systick.h"
- #include "TIM3_PWM.h"
- #include "direction.h"
- u32 PW1; //左輪pwm
- u32 PW2; //右輪pwm
- u16 PW3; //舵機pwm
- extern u32 averge_distance; //超聲波值
- int main(void)
- {
- DIRECTION_GPIO_CONFIG(); //電機初始化
- TIM3_PWM_Init(9999,143); //小車電機速度(占空比)控制
- SysTick_Init(); //系統滴答定時器初始化
- USART_Config(); //串口初始化
- LED_GPIO_Config();
- UltrasonicWave_Configuration(); //超聲波模塊初始化
- TIM2_Configuration(); //定時器2初始化
- while(1)
- { Average_Distance(); //超聲波發送
- Delay_ms (500); //延時500ms
- Auto_run(); //自動避障函數
- printf("The Distance is:%d\r\n",averge_distance); //串口打印超聲波數值
- }
- }
- /*************************超聲波模塊工作原理***********************************/
- //基本工作原理:
- //(1)采用IO口TRIG觸發測距,給至少10us的高電平信號;
- //(2)模塊自動發送8個40khz的方波,自動檢測是否有信號返回;
- //(3)有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;
- //本模塊使用方法簡單,一個控制口發一個10US以上的高電平,就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,當此口變為低電平時
- //就可以讀定時器的值,此時就為此次測距的時間,方可算出距離.如此不斷的周期測,即可以達到你移動測量的值.
- /****************************************************************************/
復制代碼
所有資料51hei提供下載:
小車超聲波避障.rar
(352.12 KB, 下載次數: 313)
2017-12-18 23:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|