标题: STM32F103+野火指南者+HC-SR04测距源程序 [打印本页]

作者: JKRL    时间: 2019-8-4 10:33
标题: STM32F103+野火指南者+HC-SR04测距源程序
/*********************************************************/
/*主要控制程序,length=(tim+time*1000)*100/58.0;乘100是为了将M转为CM*/

float Senor_Using(void)


    float length=0,sum=0;
    u16 tim;
    unsigned int i=0;
    /*测5次数据计算一次平均值*/
    while(i!=5)
    {
        printf("111");
        GPIO_SetBits(GPIOC,GPIO_Pin_8);
        SysTick_Delay_Us(20);  //高电平信号超过10us
        GPIO_ResetBits(GPIOC,GPIO_Pin_8);
        /*等待回响信号*/
        while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)==0);
        TIM_Cmd(GENERAL_TIM,ENABLE);
        //回响信号到来,开启定时器计数
        while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)==1);
        //回响信号消失
        TIM_Cmd(GENERAL_TIM,DISABLE);
        printf("222");
        //关闭定时器
        tim=TIM_GetCounter(GENERAL_TIM);
        //获取计TIM3数寄存器中的计数值,一边计算回响信号时间
        length=(tim+time*1000)*100/58.0;
        //通过回响信号计算距离
        sum=length+sum;
        GENERAL_TIM->CNT=0;  //将TIM3计数寄存器的计数值清零
        time=0;  //中断溢出次数清零
        SysTick_Delay_Ms(60);
        i+=1; //每收到一次回响信号+1,收到5次就计算均值
    }
    length=sum/5;
    return length;
    //距离作为函数返回值
}
/****************************************************************************/
另外对一些不了解的朋友说一下请千万注意定时器的值。



超声波显示.7z

232.63 KB, 下载次数: 129, 下载积分: 黑币 -5

源码


作者: Laplacey    时间: 2019-8-4 16:56
这个思路强啊,靠谱吗,精度有多高
作者: JKRL    时间: 2019-8-4 21:24
Laplacey 发表于 2019-8-4 16:56
这个思路强啊,靠谱吗,精度有多高

角度在15以上误差在3MM。

作者: xit    时间: 2019-12-3 20:34
测试距离大概在什么范围呢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1