完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
10个回答
|
|
|
|
|
|
(1)采用IO口TRIG触发测距,给至少10us的高电平信号,开定时器;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。 有了时间就又距离了。 另外给楼主个建议,超声波这玩意不是很好用,好多情况下测不准的,楼主可以去百度搜搜 |
|
|
|
|
|
1 条评论
|
|
小手一抖,经验到手,为了升级,到处游走,纯 属路过,不要介意,高抬贵手,立马飘走
|
|
|
|
論壇上高手如雲,令人佩服!!
|
|
|
|
从哪买的超声波?问厂家最直接
|
|
|
|
ddfsdafsdfdfssdgfdfgsgdfs
|
|
|
|
|
|
float Senor_Using(void)
{ float length=0,sum=0; u16 tim; unsigned int i=0; /*测5次数据计算一次平均值*/ while(i!=5) { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET); //拉高信号,作为触发信号 osDelay (10); //高电平信号超过10us HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_RESET); /*等待回响信号*/ while(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_5)==RESET); __HAL_TIM_ENABLE(&TIM2_Handler);//回响信号到来,开启定时器计数 i+=1; //每收到一次回响信号+1,收到5次就计算均值 while(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_5)==SET);//回响信号消失 __HAL_TIM_DISABLE(&TIM2_Handler);//关闭定时器 //tim=TIM_GetCounter(TIM2);//获取计TIM2数寄存器中的计数值,一边计算回响信号时间 tim=__HAL_TIM_GET_COUNTER(&TIM2_Handler); //tim = TIM2->CNT; length=(tim+overcount*1000)/58.0;//通过回响信号计算距离 sum=length+sum; TIM2->CNT=0; //将TIM2计数寄存器的计数值清零 overcount=0; //中断溢出次数清零 osDelay (10); } length=sum/5; return length;//距离作为函数返回值 } |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1285 浏览 1 评论
1019 浏览 1 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
640 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1571 浏览 2 评论
1797 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 22:31 , Processed in 0.465606 second(s), Total 56, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号