Facebook
From Expert TTA, 2 Months ago, written in C++.
This paste is a reply to Re: Re: Re: Re: Line Follower from Expert TTA - go back
Embed
#define m1 5  // Right Motor MA1
#define m2 4  // Right Motor MA2
#define m3 2  // Left Motor MB1
#define m4 3  // Left Motor MB2
#define e1 11 // Right Motor Enable Pin EA
#define e2 10 // Left Motor Enable Pin EB

//**********5 Channel IR Sensor Connection**********//
#define ir1 A1
#define ir2 A2
#define ir3 A3
#define ir4 A4
#define ir5 A5
//*************************************************//

int speed = 150;

void setup()
{
  pinMode(m1, OUTPUT);
  pinMode(m2, OUTPUT);
  pinMode(m3, OUTPUT);
  pinMode(m4, OUTPUT);
  pinMode(e1, OUTPUT);
  pinMode(e2, OUTPUT);

  pinMode(ir1, INPUT);
  pinMode(ir2, INPUT);
  pinMode(ir3, INPUT);
  pinMode(ir4, INPUT);
  pinMode(ir5, INPUT);

  Serial.begin(9600);
  Serial.println("Start");
println("Start");
  delay(1000);
}

void loop()
{

  // CarTest();

  // //Reading Sensor Values
  int s1 = digitalRead(ir1); // Left Most Sensor
  int s2 = digitalRead(ir2); // Left Sensor
  int s3 = digitalRead(ir3); // Middle Sensor
  int s4 = digitalRead(ir4); // Right Sensor
  int s5 = digitalRead(ir5); // Right Most Sensor

  Serial.print(s1);
  Serial.print(" ");
print(" ");
  Serial.print(s2);
  Serial.print(" ");
print(" ");
  Serial.print(s3);
  Serial.print(" ");
print(" ");
  Serial.print(s4);
  Serial.print(" ");
print(" ");
  Serial.print(s5);
  Serial.print(" ");

print(" ");

  // delay(500);

  // print Froward , Right , Left in the serial monitor
  if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  {
    Serial.println("Forward");
println("Forward");
  }
  if((s1 == 1) && (s2 == 0) && (s3 == 0) && (s4 == 0) && (s5 == 1))
  {
    Serial.println("Forward");
println("Forward");
  }

  else if((s1 == 1) && (s2 == 0) && (s3 == 1) && (s4 == 1) && (s5 == 1))
  {
    Serial.println("Right");
println("Right");
  }
  else if((s1 == 0) && (s2 == 1 && (s3 == 1) && (s4 == 1) && (s5 == 1)))
  {
    Serial.println("Right");
println("Right");
  }
  else if((s1 == 0) && (s2 == 0) && (s3 == 1) && (s4 == 1) && (s5 == 1))
  {
    Serial.println("Right");
println("Right");
  }
  else if ((s1 == 1) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  {
    Serial.println("Right");
println("Right");
  }
  
  else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 1))
  {
    Serial.println("Left");
println("Left");
  }
  else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 0))
  {
    Serial.println("Left");
println("Left");
  }
  else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 0))
  {
    Serial.println("Left");
println("Left");
  }
  else if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 1))
  {
    Serial.println("Left");
println("Left");
  }
  
  else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 1))
  {
    Serial.println("On println("On All White");
White");
  }
  else
  {
    Serial.println("On println("On All Black");
Black");
  }

  delay(500);

  // //if only middle sensor detects black line
  // if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  // {
  //   //going forward with full speed
  //   Forward(speed);
  // }

  // //if only left sensor detects black line
  // if((s1 == 1) && (s2 == 0) && (s3 == 1) && (s4 == 1) && (s5 == 1))
  // {
  //   //going right with full speed
  //   Right(speed);
  // }

  // //if only left most sensor detects black line
  // if((s1 == 0) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 1))
  // {
  //   //going right with full speed
  //   Right(speed);
  // }

  // //if only right sensor detects black line
  // if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 1))
  // {
  //   //going left with full speed
  //   Left(speed);
  // }

  // //if only right most sensor detects black line
  // if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 0))
  // {
  //   //going left with full speed
  //   Left(speed);
  // }

  // //if middle and right sensor detects black line
  // if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 1))
  // {
  //   //going left with full speed
  //   Left(speed);
  // }

  // //if middle and left sensor detects black line
  // if((s1 == 1) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  // {
  //   //going right with full speed
  //   Right(speed);
  // }

  // //if middle, left and left most sensor detects black line
  // if((s1 == 0) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  // {
  //   //going right with full speed
  //   Right(speed);
  // }

  // //if middle, right and right most sensor detects black line
  // if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 0))
  // {
  //   //going left with full speed
  //   Left(speed);
  // }

  // //if all sensors are on a black line
  // if((s1 == 0) && (s2 == 0) && (s3 == 0) && (s4 == 0) && (s5 == 0))
  // {
  //   //stop
  //   Stop();
  // }

  // delay(100);
}

void Forward(int speed)
{
  analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255
  analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255

  digitalWrite(m1, HIGH);
  digitalWrite(m2, LOW);
  digitalWrite(m3, HIGH);
  digitalWrite(m4, LOW);
}

void Backward(int speed)
{
  analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255
  analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255

  digitalWrite(m1, LOW);
  digitalWrite(m2, HIGH);
  digitalWrite(m3, LOW);
  digitalWrite(m4, HIGH);
}

void Right(int speed)
{
  analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255
  analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255

  digitalWrite(m1, HIGH);
  digitalWrite(m2, LOW);
  digitalWrite(m3, LOW);
  digitalWrite(m4, LOW);
}

void Left(int speed)
{
  analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255
  analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255

  digitalWrite(m1, LOW);
  digitalWrite(m2, LOW);
  digitalWrite(m3, HIGH);
  digitalWrite(m4, LOW);
}

void Stop()
{
  digitalWrite(m1, LOW);
  digitalWrite(m2, LOW);
  digitalWrite(m3, LOW);
  digitalWrite(m4, LOW);
}

void CarTest()
{
  Forward(150);
  delay(1000);

  Backward(150);
  delay(1000);

  Right(150);
  delay(1000);

  Left(150);
  delay(1000);

  Stop();
  delay(1000);
}