寻迹小车

来源:互联网 发布:淘宝助理无法创建宝贝 编辑:程序博客网 时间:2024/04/30 08:38

  最近在实验室做寻迹小车,用的M0控制,让后通过两对红外传感器感知黑线,但由于光照的原因,发现不同的时间段跑出来的效果截然不同,这也许是程序没有通过自动控速的原因,下面是控速的一段程序

void speed_control(void)
{
 GPIO3DIR &=~(1<<0);
 GPIO3DIR &=~(1<<3);//定义GPIO输入功能P3.0和P3.3
 
 if((GPIO3DATA & 0x01)==1)//左边传感器碰到黑线(对右轮的处理)
 {
  percent[0]=percent[0]-30;//改变占空比,以减少左轮的速度
  if(percent[0]<50)
   percent[0]=50;
  percent[1]=percent[1]+5;
  if(percent[1]>950)
   percent[1]=950;
  
   
 }
   else if(((GPIO3DATA>>3) & 0x01)==1)//右边传感器碰到黑线(检测第三位为1)
 {
  percent[1]=percent[1]-30;
     if(percent[1]<50)
   percent[1]=50;
  percent[0]=percent[0]+20;
  if(percent[0]>950)
   percent[0]=950; 
  
 }
 else if(((GPIO3DATA&(1<<0))==0)&&((GPIO3DATA&(1<<3))==0))//黑线在中间
 {
  percent[0]=500;
  percent[1]=300;
 }
 Timer32B0_PWM();
 
}

不知道能不能更完善一点?