智能车制作

标题: 新手代码求助 [打印本页]

作者: 极冰之焰    时间: 2013-12-18 06:30
标题: 新手代码求助
    PWM9_SetRatio16(duty1);
    PWM10_SetRatio16(duty2);
    AD1_Measure(TRUE);
    AD1_GetValue(ad);
    ad[0]=ad[0]>>4;
    ad[1]=ad[1]>>4;
    ad[2]=ad[2]>>4;
    ad[3]=ad[3]>>4;   
    if ((ad[2]>20) && (ad[3]>20) && ((ad[2]-ad[3]>5) || (ad[3]-ad[2]>5)))
    {
    if (ad[3]>ad[2]+5) {pre_pwm=18350;flag_wan=18350;}
    else if (ad[2]>ad[3]+5) {pre_pwm=18650;flag_wan=18650;}      
    }
    else
    {
    if ((ad[0]<=11) && (ad[1]<=11)) pre_pwm=flag_wan;
    else if ((ad[0]>11) && (ad[1]>11))  
    pre_pwm=18490+kp*(ad[1]-ad[0])+kd*(ad[1]-ad[0]-last_err);
    else if (ad[0]<=11) {pre_pwm=18650;flag_wan=18650;}
    else if (ad[1]<=11) {pre_pwm=18350;flag_wan=18350;}
    }
    PWM8_SetDutyUS(pre_pwm);
    last_err=ad[1]-ad[0];

弄了一段时间总算让电磁车跑起来了,但是都不能跑完全程。ad0,ad1是左右两端的电感,ad2,ad3是中间竖起来的电感,处理直角弯使用。

现在碰到的问题是,1.直道上不断左右晃动,原理我懂是要区分直道和弯道,但是代码不奏效。
                           2.直角弯经常是根据之前左右晃动的结果过,运气50%好能过。
                           3.360度环型弯有的时候会进去跑两轮。
                           4.十字交叉处本来应该入弯直接拐走了。
                           5.各种冲出赛道。

求指导


作者: Jyoun    时间: 2013-12-18 09:49
自己多想多动手吧,你写的代码问题太多了。别说你是新手,哪个不是新手成长起来的?你这样求别人改,那你永远都是只能是新手。自己动手,丰衣足食。
作者: yyyzrxh    时间: 2013-12-18 11:04
直道PID参数过大,或者不协调。直角弯减速减速,丢线的问题都存在,加丢线处理程序
作者: 极冰之焰    时间: 2013-12-18 21:48
Jyoun 发表于 2013-12-18 09:49
自己多想多动手吧,你写的代码问题太多了。别说你是新手,哪个不是新手成长起来的?你这样求别人改,那你永 ...

我又没求什么“完整源代码”,只是想问问问题大概出在哪自己改,这也要嘲讽?下面还一堆跟风狗,笑)

作者: 叶鸣    时间: 2014-3-7 17:52

作者: an~    时间: 2014-3-7 18:01
加油!相信自己能做的更好~




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