Please I want to do maze solving and here is the code for line tracking if you c
ID: 2072810 • Letter: P
Question
Please I want to do maze solving and here is the code for line tracking if you can modified it i would appriciate it. We are using Arduino
//www.elegoo.com
//2016.09.12
int in1=9;
int in2=8;
int in3=7;
int in4=6;
int ENA=10;
int ENB=5;
int ABS=130;
void _mForward()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
Serial.println("go forward!");
}
void _mBack()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
Serial.println("go back!");
}
void _mleft()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
Serial.println("go left!");
}
void _mright()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
Serial.println("go right!");
}
void _mStop()
{
digitalWrite(ENA,LOW);
digitalWrite(ENB,LOW);
Serial.println("Stop!");
}
void setup()
{
Serial.begin(9600);
}
void loop() {
int num1,num2,num3;
num1=digitalRead(11);
num2=digitalRead(4);
num3=digitalRead(2);
if((num1==0)&&num2&&num3)
{
_mleft(); //The sensor detected that right car turn left immediately when it meets black line
delay(2);
while(1){
num2=digitalRead(2); //Cycle to judge degree of intermediate sensor,
if(num2==1)
{ _mleft(); //If num2==1 does not go to the middle position, continue to turn left.
delay(2);}
else
break; //Detection of num2==0 instructions turned over, out of the loop, detection of three sensors’ statusand then make appropriate action
} //The following and so on
}
else if(num2&&num1&&(num3==0))
{
_mright();
delay(2);
while(1)
{
num2=digitalRead(2);
if(num2==1){
_mright();
delay(2);}
else
break;
}
}
else
{
_mForward();
delay(2);
}
}
Explanation / Answer
Modified Code
/www.elegoo.com
//2016.09.12
int in1=9;
int in2=8;
int in3=7;
int in4=6;
int ENA=10;
int ENB=5;
int ABS=130;
void _mForward()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4,HIGH);
Serial.println("go forward!");
}
void _mBack()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,HIGH);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
Serial.println("go back!");
}
void _mleft()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,HIGH);
Serial.println("go left!");
}
void _mright()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
digitalWrite(in1,HIGH);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,HIGH);
Serial.println("go right!");
}
void _mStop()
{
digitalWrite(ENA,LOW);
digitalWrite(ENB,LOW);
Serial.println("Stop!");
}
void setup()
{
Serial.begin(9600);
}
void loop() {
int num1,num2,num3;
num1=digitalRead(11);
num2=digitalRead(4);
num3=digitalRead(2);
if((num1==0)&&num2&&num3)
{
_mleft(); //The sensor detected that right car turn left immediately when it meets black line
delay(2);
while(1){
num2=digitalRead(2); //Cycle to judge degree of intermediate sensor,
if(num2==1)
{ _mleft(); //If num2==1 does not go to the middle position, continue to turn left.
delay(2);}
else
break; //Detection of num2==0 instructions turned over, out of the loop, detection of three sensors’ statusand then make appropriate action
} //The following and so on
}
else if(num2&&num1&&(num3==0))
{
_mright();
delay(2);
while(1)
{
num2=digitalRead(2);
if(num2==1){
_mright();
delay(2);}
else
break;
}
}
else
{
_mForward();
delay(2);
}
}