论坛元老
 
- 积分
- 10653
- 金钱
- 10653
- 注册时间
- 2017-4-14
- 在线时间
- 2780 小时
|
发表于 2018-1-28 12:03:22
|
显示全部楼层
本帖最后由 275891381 于 2018-1-28 12:05 编辑
有很多种,给你写了一个
#define pinghua_long 10
float pinghua(void)
{
u8 juli_temp[pinghua_long];
u8 i=0;
u16 juli_max=0,juli_min=0xffff;
u32 juli_sum=0;
float juli=0;
for(i=0;i<pinghua_long;i++)
{
juli_temp=读取一次超声波距离;
juli_sum=juli_sum+juli_temp;
if(juli_temp>juli_max)
juli_max=juli_temp;
if(juli_temp<juli_min)
juli_min=juli_temp;
//这可以加个delay_ms(1);
}
juli=(float(juli_sum-juli_max-juli_min)/(pinghua_long-2);
return juli;
}
不过最好的还是,弄个数组,循环朝里面写数据,读取的时候去掉最大,最小,平均就可以了,因为这种方法读的间隔太小,加延时又浪费时间 |
|