智能车制作

标题: 新手写了个最简单的电磁程序,但舵机就是不打角啊,求助 [打印本页]

作者: SYK    时间: 2013-11-6 23:09
标题: 新手写了个最简单的电磁程序,但舵机就是不打角啊,求助
刚刚开始搞程序,写了个最简单,但下进去后,舵机始终打到中值,不打角,各位大神帮忙看看啊!用的是k60写的


#include "include.h"
#define midle  111 //舵机中值
u16 AD_data0[10];
u16 AD_data1[10];
u16 AD_average[2];
u16  AD_temp;
u8  biaodingflag=0;
u16  zuida0;
u16   zuida1;
float  sensor_to_one[2];  //传感器转换结果归一化
s16  sensor_to_another[2];
s16  max_AD[2]={0,0};          //最大采样值数组
s16  min_AD[2]={0,0};   //存放最小值
void Systeminit()
{
  gpio_init (PORTA,4, GPI,HIGH);
   adc_init(ADC1,SE4a);//E0
   adc_init(ADC1,SE5a);//E1
   max_AD[0]=ad_ave(ADC1, SE4a, ADC_16bit,10);
   max_AD[1]=ad_ave(ADC1, SE5a, ADC_16bit,10);
   while(!biaodingflag)   标定最大值用于归化处理
   {
     while(!PTA4_IN)
     {
       zuida0=ad_ave(ADC1, SE4a, ADC_16bit,10);
       if(zuida0>max_AD[0])
         max_AD[0]=zuida0;
        zuida1=ad_ave(ADC1, SE5a, ADC_16bit,10);
       if(zuida1>max_AD[1])
         max_AD[1]=zuida1;
        biaodingflag=1;
     }
   }
   FTM_PWM_init(FTM0, CH0, 10000, 500);//电机pwm C1  50%不转
   FTM_PWM_init(FTM1, CH0, 50, 111);//舵机pwm  A8    111为中值
}
void Motor_forward(u32 duty)
{
   
   FTM_PWM_Duty(FTM0, CH0,duty);   
}
void Get_AD_data()
{
   u8 i=0;
   for(i=0;i<10;i++)
  {
    AD_data0[i]=ad_ave(ADC1, SE4a, ADC_16bit,6);//E0
    AD_data1[i]=ad_ave(ADC1, SE5a, ADC_16bit,6);//E1
  }
  
     AD_average[0]=(AD_data0[1]+AD_data0[2]+AD_data0[3]+AD_data0[4]+AD_data0[5]+AD_data0[6]+AD_data0[7]+AD_data0[8])/8;
     AD_average[1]=(AD_data1[1]+AD_data1[2]+AD_data1[3]+AD_data1[4]+AD_data1[5]+AD_data1[6]+AD_data1[7]+AD_data1[8])/8;
     for(i=0;i<2;i++)
    {
     sensor_to_one[i]=100*(AD_average[i]-min_AD[i])/(max_AD[i]-min_AD[i]);
     sensor_to_another[i]=(int)(sensor_to_one[i]) ;
    }
}
void  duojikongzhi()
{
  u8 angle;
  s8 chazhi;
  chazhi=sensor_to_another[0]-sensor_to_another[1];
  angle=midle+(int)(chazhi/10);
  FTM_PWM_Duty(FTM1,CH0,angle);
  delayms(1);
}
void main()
{
   
  Systeminit();
  Motor_forward(650);
   while(1)
   {
     Get_AD_data();
     delayms(1);
     duojikongzhi();
     
   }
   
      
}

作者: Jyoun    时间: 2013-11-7 00:05
一点一点的来弄吧,不要全部写出来再调试。
作者: 暗剑    时间: 2013-11-7 00:40
我怎么上次见你在做电机驱动,这次就在写程序了?你硬软双修的啊!
作者: qylqh2012    时间: 2013-11-7 07:42
暗剑 发表于 2013-11-7 00:40
我怎么上次见你在做电机驱动,这次就在写程序了?你硬软双修的啊!

不都是软硬件一起搞么? 难道不是?  

作者: SYK    时间: 2013-11-7 08:50
暗剑 发表于 2013-11-7 00:40
我怎么上次见你在做电机驱动,这次就在写程序了?你硬软双修的啊!

没办法啊!

作者: SYK    时间: 2013-11-7 13:03
Jyoun 发表于 2013-11-7 00:05
一点一点的来弄吧,不要全部写出来再调试。

单个模块都是好的啊。但整到一块就是不行了

作者: 天之晴    时间: 2013-11-7 14:06
好乱
作者: 音之夏萤    时间: 2013-11-7 21:52
还是单独写个子程序吧,你确定你给上来的程序中每个模块都能正常工作:??
作者: -Lamborghini    时间: 2013-11-8 10:33
你用的k60?
作者: 青涩的记忆o泛滥    时间: 2015-1-8 17:29
楼主大神  能给我发一份电磁最简单的程序么? 电磁控制舵机即可,或者更简单的     小弟小白一个,电磁传感器一点资料都没有 不知从何处入手  。谢谢    song5925@qq.com




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2