智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1401|回复: 9
打印 上一主题 下一主题

[软件类] 大神 可以帮我看下代码吗

[复制链接]

15

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1348
威望
668
贡献
388
兑换币
414
注册时间
2014-2-28
在线时间
146 小时
毕业学校
吉首大学
跳转到指定楼层
1#
发表于 2014-5-7 19:25:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个电磁组的采集数据处理
请问一下  里面的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;
   }*/

}

回复

使用道具 举报

25

主题

808

帖子

0

精华

常驻嘉宾

该设备未检测到相应驱动!

Rank: 8Rank: 8

积分
3355

优秀会员奖章活跃会员奖章

威望
2154
贡献
901
兑换币
428
注册时间
2014-2-20
在线时间
150 小时
2#
发表于 2014-5-8 10:11:58 | 只看该作者
我也看不懂。
回复 支持 反对

使用道具 举报

8

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1625
威望
862
贡献
491
兑换币
560
注册时间
2012-12-8
在线时间
137 小时
毕业学校
西北师大
3#
发表于 2014-5-8 13:07:01 | 只看该作者
你这程序是对水平五个传感器的数据进行处理的吧,根据可以看看北科的方案,找到最大值然后判断相邻的数据,根据差值给的舵机控制,好像是这样的吧:)
回复 支持 反对

使用道具 举报

15

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1348
威望
668
贡献
388
兑换币
414
注册时间
2014-2-28
在线时间
146 小时
毕业学校
吉首大学
4#
 楼主| 发表于 2014-5-8 13:23:36 | 只看该作者
xiaoyuyzx 发表于 2014-5-8 13:07
你这程序是对水平五个传感器的数据进行处理的吧,根据可以看看北科的方案,找到最大值然后判断相邻的数据, ...

恩恩  ,但是我不懂那个“差值给的舵机控制” ,这个怎么搞
回复 支持 反对

使用道具 举报

8

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1625
威望
862
贡献
491
兑换币
560
注册时间
2012-12-8
在线时间
137 小时
毕业学校
西北师大
5#
发表于 2014-5-8 13:27:45 | 只看该作者
liuxiaoxiong 发表于 2014-5-8 13:23
恩恩  ,但是我不懂那个“差值给的舵机控制” ,这个怎么搞

你这只是算出来了车的位置,然后你根据这个位置给出对舵机的PD控制,然后就可以了
回复 支持 反对

使用道具 举报

15

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1348
威望
668
贡献
388
兑换币
414
注册时间
2014-2-28
在线时间
146 小时
毕业学校
吉首大学
6#
 楼主| 发表于 2014-5-8 13:37:10 | 只看该作者
xiaoyuyzx 发表于 2014-5-8 13:27
你这只是算出来了车的位置,然后你根据这个位置给出对舵机的PD控制,然后就可以了

恩恩,谢谢 ,但是还有一个地方不懂,不是有俩个垂直的电感吗,不是可以五各电感可以测出差值,给舵机,那为什么还要用俩垂直的电感了, y[0]=abs(adc[0]-adc[6]);
回复 支持 反对

使用道具 举报

8

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1625
威望
862
贡献
491
兑换币
560
注册时间
2012-12-8
在线时间
137 小时
毕业学校
西北师大
7#
发表于 2014-5-8 13:44:41 | 只看该作者
liuxiaoxiong 发表于 2014-5-8 13:37
恩恩,谢谢 ,但是还有一个地方不懂,不是有俩个垂直的电感吗,不是可以五各电感可以测出差值,给舵机,那 ...

要不你把剩下的给我看看??我分析下??一起进步??
回复 支持 反对

使用道具 举报

15

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1348
威望
668
贡献
388
兑换币
414
注册时间
2014-2-28
在线时间
146 小时
毕业学校
吉首大学
8#
 楼主| 发表于 2014-5-8 13:46:42 | 只看该作者
xiaoyuyzx 发表于 2014-5-8 13:44
要不你把剩下的给我看看??我分析下??一起进步??

加我QQ:1054042386
回复 支持 反对

使用道具 举报

6

主题

389

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6181
威望
2486
贡献
2705
兑换币
1564
注册时间
2012-9-18
在线时间
495 小时
毕业学校
家里蹲大学
9#
发表于 2014-5-8 18:48:05 | 只看该作者
能发一份给我吗?我也挺感兴趣的  1595926345@qq.com  谢谢拉
回复 支持 反对

使用道具 举报

6

主题

389

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6181
威望
2486
贡献
2705
兑换币
1564
注册时间
2012-9-18
在线时间
495 小时
毕业学校
家里蹲大学
10#
发表于 2014-5-8 18:53:34 | 只看该作者
能发一份给我吗?我也挺感兴趣的  1595926345@qq.com  谢谢拉
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-11 12:41 , Processed in 0.069381 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表