小学生
最后登录1970-1-1
在线时间 小时
注册时间2020-3-19
|
楼主 |
发表于 2020-3-20 14:13:57
|
显示全部楼层
发现应该是小车运动函数的问题,大神们求帮忙。
if(SEARCH_L_IO == BLACK_AREA && SEARCH_M_IO == BLACK_AREA && SEARCH_R_IO == BLACK_AREA)//转弯条件
{
flag1++;
flag2++;
if(flag1==Card_Data[0])//转弯标志
{
// ZYSTM32_run(70,100);//让小车识别需要转弯时,再往前一些调整转弯位置。
if(flag2!=Card_Data[1])//停止标志,若改需要改二处136/144。
{
ZYSTM32_run(70,180);//让小车识别需要转弯时,再往前一些调整转弯位置。
ZYSTM32_Spin_Right(70,500);
// ctrl_comm = COMM_LEFT;
}
}
if(flag2>=Card_Data[1])//停止标志,若改需要改二处136/144。
{
ZYSTM32_run(70,180);
SetMotorSpeed(1,0);//左轮 //为0
SetMotorSpeed(0,0);//右轮 //为0
RIGHT_MOTOR_GO_RESET;
LEFT_MOTOR_GO_RESET;
flag1=0;
flag2=0;
flag3=1;
flag4=1;
delay_ms(1000);
delay_ms(1000);
return;
}
delay_ms(50);//让小车有足够时间转弯,不受传感器影响。延迟传感器对黑十字的感应。
}
if(SEARCH_L_IO == WHITE_AREA && SEARCH_M_IO == BLACK_AREA && SEARCH_R_IO == WHITE_AREA)
ctrl_comm = COMM_UP;
else if (SEARCH_L_IO == BLACK_AREA && SEARCH_M_IO == WHITE_AREA && SEARCH_R_IO == WHITE_AREA)
ctrl_comm = COMM_RIGHT;
else if (SEARCH_L_IO == WHITE_AREA && SEARCH_M_IO == WHITE_AREA && SEARCH_R_IO == BLACK_AREA)
ctrl_comm = COMM_LEFT;
if(ctrl_comm_last != ctrl_comm)
{
ctrl_comm_last = ctrl_comm;
switch(ctrl_comm)
{
case COMM_UP: ZYSTM32_run(60,1);break;
case COMM_LEFT: ZYSTM32_Spin_Right(70,1);break;//ZYSTM32_Left(100,1);break;
case COMM_RIGHT: ZYSTM32_Spin_Left(70,1);break;//ZYSTM32_Right(100,1);break;
case COMM_STOP: ZYSTM32_Spin_Right(50,1000);break;
default : break;
}
delay_ms(10);
}
} |
|