中级会员
 
- 积分
- 278
- 金钱
- 278
- 注册时间
- 2016-9-13
- 在线时间
- 73 小时
|
4金钱
这两天在用HC SR04,有些问题就是:1、不知道可不可以读取mm,我现在都是读取cm
2、通过串口输出的时候,有时候会卡一下,不会顺畅的输出数据,
3、有时候会出现3000多的数值
4、怎么优化、处理,才能让数据更准确、实时性更高呢?
下面是我的程序
[mw_shl_code=c,true]void UltrasonicWave_StartMeasure(void)
{
GPIO_SetBits(TRIG_PORT,TRIG_PIN); //送>10US的高电平
DelayTime_us(20); //延时20US
GPIO_ResetBits(TRIG_PORT,TRIG_PIN);
while(!GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待高电平
TIM_Cmd(TIM2, ENABLE); //开启时钟
while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待低电平
TIM_Cmd(TIM2, DISABLE); //定时器2失能
UltrasonicWave_CalculateTime(); //计算距离
TIM_SetCounter(TIM2,0);
switch((u16)UltrasonicWave_Distance/7)
{
case 0:BEEP_Switch(100);break;
case 1:BEEP_Switch(200);break;
case 2:BEEP_Switch(300);break;
default :break;
}
// printf("\r\ndistance:%d%d cm\r\n",UltrasonicWave_Distance/256,UltrasonicWave_Distance%256);
printf("\r\ndistance:%d cm\r\n",UltrasonicWave_Distance);
DelayTime_ms(200);
}
[/mw_shl_code]
|
|