打印

求助~超声波测距

[复制链接]
1326|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
基辅之门|  楼主 | 2014-11-6 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uint32_t timer_value,wave_distance;
uint8_t s[25];
TimerLoadSet(TIMER0_BASE,TIMER_A,SysCtlClockGet());//初值装满
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0x08);//触发信号
SysCtlDelay(800/3); //延时20微秒
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0x00);//触发信号结束
while(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2)==0x00);//收到回波检测到上升沿跳出
TimerEnable(TIMER0_BASE, TIMER_A);//开始计时
while(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2)==0x04);//回波信号结束检测到下降沿跳出
timer_value=SysCtlClockGet()-TimerValueGet(TIMER0_BASE, TIMER_A);//读取值
TimerDisable(TIMER0_BASE, TIMER_A);//停止计时
wave_distance=timer_value*344000/SysCtlClockGet();//计算距离
sprintf(s,"%d",wave_distance);//写入字符数组
UARTSend(s);//通过串口打印

为什么收到的数字都是1~110左右的一些奇怪的数,貌似只和超声波模块放的位置有一点点关联,例如模块固定,数字稍稳定。但距离根本不靠谱。。。

相关帖子

沙发
dirtwillfly| | 2014-11-6 21:47 | 只看该作者
你的超声波接收电路是怎么样的?并不是收到回波就是正确的距离

使用特权

评论回复
板凳
youluo235| | 2014-11-8 09:58 | 只看该作者
超声波模块是买的?主要是测量时间然后计算就好了。这个网上的参考程序很多

使用特权

评论回复
地板
smilingangel| | 2014-11-9 21:27 | 只看该作者
这个主要使用到定时器的捕获功能的吧。

使用特权

评论回复
5
kenjifang| | 2014-12-18 15:02 | 只看该作者
光有这样的程序,无法分析出问题。

使用特权

评论回复
6
vivilzb1985| | 2014-12-18 22:38 | 只看该作者
这个是需要滤除杂波的吧先。。

使用特权

评论回复
7
ccw1986| | 2015-4-30 14:33 | 只看该作者
问题问的不是太清楚,电路图啥的没有看到

使用特权

评论回复
8
FireRiver9| | 2015-5-19 21:09 | 只看该作者
不知道楼主问题解决了吗,求分享

使用特权

评论回复
9
angerbird| | 2015-5-19 22:54 | 只看该作者
这个针对接收信号的处理的还是比较复杂的。

使用特权

评论回复
10
Thor9| | 2015-5-20 19:28 | 只看该作者
顶起

使用特权

评论回复
11
15321378015| | 2015-6-8 10:56 | 只看该作者
楼主你完整的程序能否给我发一份

使用特权

评论回复
12
vivilzb1985| | 2015-6-8 21:44 | 只看该作者
这个检查下你的接收电路的吧,可能对接受的信号的处理不理想。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝