金牌会员
- 积分
- 1348
- 威望
- 668
- 贡献
- 388
- 兑换币
- 414
- 注册时间
- 2014-2-28
- 在线时间
- 146 小时
- 毕业学校
- 吉首大学
|
这是一个电磁组的采集数据处理
请问一下 里面的x[0]=-10-(10-10*D/(M0-M))/2 是怎么出来的 X[0]是离导线的距离
函数名称:采集数据处理
*********************************************************/
void data_process(void)
{ u8 max,cn,cn1;
u8 i;
int d;
u8 D;
u16 adc_sum;
u8 t=5;
//for(i=0;i<7;i++)
//printf("%d\n",adc[i]);
//for(i=0;i<5;i++)
//adc[i]=(int)(adc[i]*(1+positiony*0.05));
for(i=0;i<9;i++)
{ x[i+1]=x[i];
}
for(i=0;i<9;i++)
{
y[i+1]=y[i];
}
y[0]=abs(adc[0]-adc[6]);
//printf("y[0]=%d\n",y[0]);
max=0;
for(cn=1;cn<6;cn++)
if(adc[cn]>max)
{ max=adc[cn];
cn1=cn;
}
//printf("%d\n",cn1);
if(cn1==1)
{ D=adc[1]-adc[2];
if(D<t)
x[0]=-15;
else if(adc[2]>M)
x[0]=-20+(10-10*D/(M0-M))/2;
else
x[0]=-20;
//printf("%d\n",x[0]);
}
if(cn1==2)
{ d=adc[1]-adc[3];
if(d>t)
{ D=adc[2]-adc[1];
x[0]=-10-(10-10*D/(M0-M))/2;}
else if(d<-t)
{ D=adc[2]-adc[3];
x[0]=-10+(10-10*D/(M0-M))/2;}
else
x[0]=-10;
}
if(cn1==3)
{
d=adc[2]-adc[4];
if(d>t)
{ D=adc[3]-adc[2];
x[0]=0-(10-10*D/(M0-M))/2;}
else if(d<-t)
{ D=adc[3]-adc[4];
x[0]=0+(10-10*D/(M0-M))/2;}
else
x[0]=0;
}
if(cn1==4)
{
d=adc[3]-adc[5];
if(d>t)
{ D=adc[4]-adc[3];
x[0]=10-(10-10*D/(M0-M))/2;}
else if(d<-t)
{D=adc[4]-adc[5];
x[0]=10+(10-10*D/(M0-M))/2;}
else
x[0]=10;
}
if(cn1==5)
{ D=adc[5]-adc[4];
if(D<t)
x[0]=15;
else if(adc[4]>M)
x[0]=20-(10-10*D/(M0-M))/2;
else
x[0]=20;
}
adc_sum=adc[1]+adc[2]+adc[3]+adc[4]+adc[5];
if(adc_sum<M)
x[0]=x[1];
else if(adc_sum<(M0+M))
{ if(x[1]<-5)
x[0]=-20;
else if(x[1]>5)
x[0]=20;
}
/* cn0=cn1-1;
cn2=cn1+1;
if(cn1==3)
x=-100;
case 3: d=adc[cn0]-adc[cn2];
if((d<t)&&(d>-t))
x=-50;
else if(d>t)
{D=adc[cn1]-adc[cn0];
x=-50-(50-D*50/M)/2;
}
else if(d<-t)
{
D=adc[cn1]-adc[cn2];
x=-50+(50-D*50/M)/2;
}
break;
case 4:d=adc[cn0]-adc[cn2];
if((d<t)&&(d>-t))
x=0;
else if(d>t)
{D=adc[cn1]-adc[cn0];
x=0-(50-D*50/M)/2;}
else if(d<-t)
{D=adc[cn1]-adc[cn2];
x=0+(50-D*50/M)/2;}
break;
case 5: d=adc[cn0]-adc[cn2];
if((d<t)&&(d>-t))
x=50;
else if(d>t)
{D=adc[cn1]-adc[cn0];
x=50-(50-D*50/M)/2;}
else if(d<-t)
{ D=adc[cn1]-adc[cn2];
x=50+(50-D*50/M)/2;}
break;
case 6:x=100;break;
default: break;
}*/
}
|
|