超声波模块

超声波测距模块工作原理
  (1)采用IO口TRIG触发测距,给至少10us的高电平信号;
  (2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
  (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;
  (4)本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。如此不断的周期测,即可以达到你移动测量的值

void main()
{
uint32 timevar;
uint32 flag;
gpio_init(TRIG,GPO,0);
gpio_init(ECHG,GPI,0);

while(1)
{
    flag = 0;
    gpio_set(TRIG,1);               //产生触发脉冲
    pit_delay_us(PIT1,15);
    gpio_set(TRIG,0);
    
    while(gpio_get(ECHG) == 0);             //等待电平变高,低电平一直等待
    pit_time_start  (PIT0);                 //开始计时
    while(gpio_get(ECHG) == 1)              //等待电平变低,高电平一直等待
    {
        flag++;
        if(flag >FLAGWAIT)
        {
            break;
        }
    };             
    
    timevar = pit_time_get_us    (PIT0);    //停止计时,获取计时时间
    if(flag <FLAGWAIT )
    {
        timevar = timevar * 340 /2/1000;
            
        if(timevar > 5)
        {
            printf("\n\n距离为:%dmm",timevar); //打印延时时间
        }
    }
    
    DELAY_MS(1000); 
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值