标题: 四路红外模块循迹程序。 [打印本页]

作者: cxhhahahah    时间: 2016-11-27 23:14
标题: 四路红外模块循迹程序。
#include<reg51.h>
sbit RSEN2=P1^4;
sbit RSEN1=P1^3;
sbit LSEN1=P1^2;
sbit LSEN2=P1^1;
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit IN3=P2^2;
sbit IN4=P2^3;      
//****************延时函数****************//
int i,j;
void delay(int z)   
{  
for(i=0;i<z;i++)
   for(j=0;j<110;j++);
}
//***************循迹函数*****************//
main()
{
  while(1)
  {
   if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))   
    { IN1=1,IN3=0,IN2=1,IN4=0; }//*******直行*******//
   else  if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==0))
    {
IN1=0,IN3=1,IN2=1,IN4=0;
     delay(30);
} //***左偏1
  else  if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==1))
    {
IN1=0,IN3=1,IN2=1,IN4=0;
delay(200);
} //***左偏2
   else  if((RSEN1==1)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))
    {
  IN1=1,IN3=0,IN2=0,IN4=1;
  delay(30);
  } //***右偏1
   else  if((RSEN1==0)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0))
    {
IN1=1,IN3=0,IN2=0,IN4=1;
delay(200);
  }//***右偏2

   else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
    {IN1=1,IN3=1,IN2=1,IN4=1;}//停止
   
}
}


作者: 长安丿    时间: 2016-12-6 00:45
然后就没了?...这是四轮差速麽
作者: 彬Lsl    时间: 2017-5-18 16:54
楼主试过没

作者: 雨轩wyx    时间: 2017-7-22 21:58
程序可以吗

作者: grh    时间: 2017-8-2 21:17
楼主试过没
作者: 零度时空    时间: 2017-8-5 18:13
不错,但是我觉得可能会出现bug,因为     else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
     {IN1=1,IN3=1,IN2=1,IN4=1;}//停止
这里有问题,因为小车不会四个检测的端口会同时出现高电平,因为小车是移动的,应该在前面赋值四个电机端口初值为0,不然有可能在前面的两个端口检测到黑线时,也就是RSEN1==1 RSEN1==1 LSEN1==0 LSEN1==0,因为没有定义,小车可能会乱跑
   




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1