因为刚刚开始玩电调,所以不太懂,程序中加入红外寻迹之后却达不到所想要的结果。我想要通过寻迹模块来控制涵道电机的转速,但是结果却难以达到(只有可以改变一次状态),请问是什么原因,还是电调不可以这样控制呐?
部分程序如下:
/************************************************************************/
/* 电机控制速度 */
/************************************************************************/
/* */
void left_small (void)
{
push_val_left1 = duojishu[3];
push_val_left2 = duojishu[2];
}
void right_small (void)
{
push_val_left1 = duojishu[2];
push_val_left2 = duojishu[3];
}
void straight (void)
{
push_val_left1 = duojishu[3];
push_val_left2 = duojishu[3];
}
void stop (void)
{
push_val_left1 = duojishu[0];
push_val_left2 = duojishu[0];
}
void left_big (void)
{
push_val_left1 = duojishu[3];
push_val_left2 = duojishu[0];
}
void right_big (void)
{
push_val_left1 = duojishu[0];
push_val_left2 = duojishu[3];
}
/************************************************************************/
/* 小车寻迹 */
/************************************************************************/
/* */
void xiaoche()
{ uchar n;
if( (P13==1 && P12==1 && P11==1 && P10==1)
|| (P13==0 && P12==0 && P11==0 && P10==0) )
straight (); delay1ms(5000);
if( P13==1 && P12==0 && P11==1 && P10==1 )
left_small ();delay1ms(5000);
if( (P13==0 && P12==0 && P11==0 && P10==1)
|| (P13==0 && P12==0 && P11==1 && P10==1)
|| (P13==0 && P12==1 && P11==0 && P10==1)
|| (P13==0 && P12==1 && P11==1 && P10==1) )
left_big ();delay1ms(5000);
if( P13==1 && P12==1 && P11==0 && P10==1 )
right_small();delay1ms(5000);
if( (P13==1 && P12==0 && P11==0 && P10==0)
|| (P13==1 && P12==0 && P11==1 && P10==0)
|| (P13==1 && P12==1 && P11==0 && P10==0)
|| (P13==1 && P12==1 && P11==1 && P10==0) )
right_big();delay1ms(5000);
if(P13==0 && P12==0 && P11==0 && P10==0)
{
n++;
if(n==2)
stop();delay1ms(5000);
}
}
/************************************************************************/
/* Ö÷º¯Êý */
/************************************************************************/
/* */
void main()
{
TMOD = 0x01;
TH0 = (65536 - 70)/256; //70US¶¨Ê±
TL0 = (65536 - 70)%256;
TR0 = 1;
ET0 = 1;
EA = 1;
push_val_left1 = duojishu[0]; //
push_val_left2 = duojishu[0];
delay1ms(5000);delay1ms(5000);delay1ms(5000);
delay1ms(5000);delay1ms(5000);delay1ms(5000);
delay1ms(5000);delay1ms(5000);delay1ms(5000);
delay1ms(5000);delay1ms(5000);delay1ms(5000);
delay1ms(5000);delay1ms(5000);delay1ms(5000);
push_val_left1 = duojishu[3];
push_val_left2 = duojishu[3];
while(1)
{
xiaoche();
}
}
已退回6积分