rt.小车超声波避障
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)
|