急急急,求大神看看我写的五路循迹程序哪有问题,怎么不会往前走,而且检测到白色区域时一边的轮子会一直转,停不下来
/***************************** 寻迹小车 **************************/
int left_moto2 = 2;//left 左
int left_moto4 = 4;
int right_moto6 = 6;//right 右
int right_moto7 = 7;
int pwmleft = 3; // pwm调速左
int pwmright = 5; // pwm调速右
int XJBR; //循迹偏右 8
int XJR; //循迹右 9
int XJM; //循迹中 10
int XJL; //循迹左 11
int XJBL; //循迹偏左 12
int MA;//火焰 15
int MB;//火焰 16
void setup()
{
/****************************** 电机输出口 ***********************************/
pinMode(left_moto2,OUTPUT); //端口2输出
pinMode(left_moto4,OUTPUT);
pinMode(right_moto6,OUTPUT);
pinMode(right_moto7,OUTPUT);
pinMode(pwmleft,OUTPUT);
pinMode(pwmright,OUTPUT);
pinMode(14,OUTPUT);//灭火输出控制
/******************************* 传感器读取口 **************************/
pinMode(8,INPUT); //循迹偏右
pinMode(9,INPUT); //循迹右
pinMode(10,INPUT);//循迹中
pinMode(11,INPUT);//循迹左
pinMode(12,INPUT);//循迹偏左
pinMode(15,INPUT);//火焰1
pinMode(16,INPUT);//火焰2
}
/******************************* 电机输出模式 *****************************/
void qian() //前进
{
digitalWrite(right_moto6,1); //数字端口6输出高电平
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,1);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,120);
analogWrite(pwmright,120);
}
void Lqian() //前进
{
digitalWrite(right_moto6,1); //数字端口6输出高电平
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,1);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,75);
analogWrite(pwmright,75);
}
void hou() //后退
{
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,1);
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,1);
analogWrite(pwmleft,255);
analogWrite(pwmright,255);
}
void you() //右
{
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,0);
digitalWrite(right_moto6,1);
digitalWrite(right_moto7,0);
analogWrite(pwmleft,0);
analogWrite(pwmright,95);
}
void zuo() //左
{
digitalWrite(left_moto2,1);
digitalWrite(left_moto4,0);
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,0);
analogWrite(pwmleft,95);
analogWrite(pwmright,0);
}
void ting() // 停
{
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,0);
analogWrite(pwmright,0);
}
void miehuo()
{
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,0);
analogWrite(pwmright,0);
digitalWrite(14,LOW);
}
void loop()
{
digitalWrite(14,LOW);
for (int i=0;i <= 1024;i++)
{
XJBR=digitalRead(8);
XJR=digitalRead(9);
XJM=digitalRead(10);
XJL=digitalRead(11);
XJBL=digitalRead(12);
MA=digitalRead(15);
MB=digitalRead(16);
if(MA==HIGH&&MB==HIGH)
{
if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
ting();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==LOW)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
qian;
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==HIGH&&XJBR==LOW)
{
zuo();
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==HIGH&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==HIGH&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==HIGH&&XJR==HIGH&&XJBR==LOW)
{
qian();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==HIGH&&XJL==HIGH&&XJM==HIGH&&XJR==HIGH&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==HIGH&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
}
else if(MA==LOW&&MB==HIGH)
{
if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
ting();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==LOW)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
qian;
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==HIGH&&XJBR==
/***************************** 寻迹小车 **************************/
int left_moto2 = 2;//left 左
int left_moto4 = 4;
int right_moto6 = 6;//right 右
int right_moto7 = 7;
int pwmleft = 3; // pwm调速左
int pwmright = 5; // pwm调速右
int XJBR; //循迹偏右 8
int XJR; //循迹右 9
int XJM; //循迹中 10
int XJL; //循迹左 11
int XJBL; //循迹偏左 12
int MA;//火焰 15
int MB;//火焰 16
void setup()
{
/****************************** 电机输出口 ***********************************/
pinMode(left_moto2,OUTPUT); //端口2输出
pinMode(left_moto4,OUTPUT);
pinMode(right_moto6,OUTPUT);
pinMode(right_moto7,OUTPUT);
pinMode(pwmleft,OUTPUT);
pinMode(pwmright,OUTPUT);
pinMode(14,OUTPUT);//灭火输出控制
/******************************* 传感器读取口 **************************/
pinMode(8,INPUT); //循迹偏右
pinMode(9,INPUT); //循迹右
pinMode(10,INPUT);//循迹中
pinMode(11,INPUT);//循迹左
pinMode(12,INPUT);//循迹偏左
pinMode(15,INPUT);//火焰1
pinMode(16,INPUT);//火焰2
}
/******************************* 电机输出模式 *****************************/
void qian() //前进
{
digitalWrite(right_moto6,1); //数字端口6输出高电平
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,1);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,120);
analogWrite(pwmright,120);
}
void Lqian() //前进
{
digitalWrite(right_moto6,1); //数字端口6输出高电平
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,1);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,75);
analogWrite(pwmright,75);
}
void hou() //后退
{
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,1);
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,1);
analogWrite(pwmleft,255);
analogWrite(pwmright,255);
}
void you() //右
{
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,0);
digitalWrite(right_moto6,1);
digitalWrite(right_moto7,0);
analogWrite(pwmleft,0);
analogWrite(pwmright,95);
}
void zuo() //左
{
digitalWrite(left_moto2,1);
digitalWrite(left_moto4,0);
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,0);
analogWrite(pwmleft,95);
analogWrite(pwmright,0);
}
void ting() // 停
{
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,0);
analogWrite(pwmright,0);
}
void miehuo()
{
digitalWrite(right_moto6,0);
digitalWrite(right_moto7,0);
digitalWrite(left_moto2,0);
digitalWrite(left_moto4,0);
analogWrite(pwmleft,0);
analogWrite(pwmright,0);
digitalWrite(14,LOW);
}
void loop()
{
digitalWrite(14,LOW);
for (int i=0;i <= 1024;i++)
{
XJBR=digitalRead(8);
XJR=digitalRead(9);
XJM=digitalRead(10);
XJL=digitalRead(11);
XJBL=digitalRead(12);
MA=digitalRead(15);
MB=digitalRead(16);
if(MA==HIGH&&MB==HIGH)
{
if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
ting();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==LOW)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
qian;
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==HIGH&&XJBR==LOW)
{
zuo();
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==HIGH&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==HIGH&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==HIGH&&XJR==HIGH&&XJBR==LOW)
{
qian();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==HIGH&&XJL==HIGH&&XJM==HIGH&&XJR==HIGH&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==HIGH&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
}
else if(MA==LOW&&MB==HIGH)
{
if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
ting();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==LOW)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==LOW&&XJBR==LOW)
{
qian;
}
else if(XJBL==LOW&&XJL==HIGH&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==HIGH&&XJL==LOW&&XJM==LOW&&XJR==LOW&&XJBR==LOW)
{
you();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==LOW&&XJR==HIGH&&XJBR==HIGH)
{
zuo();
}
else if(XJBL==LOW&&XJL==LOW&&XJM==HIGH&&XJR==HIGH&&XJBR==