int out1 = 2;
int out2 = 3;

int out3 = 4;
int out4 = 5;

// defining pins and variables
#define LEFT A0
#define RIGHT A1
#define EX_LEFT A2
#define EX_RIGHT A3

char next_dir = 'R';   // Next direction
 
void setup()
{       
  Serial.begin(9600);  //Set the baud rate to your Bluetooth module.
  // Motors pins
  pinMode(out1, OUTPUT);
  pinMode(out2, OUTPUT);
  pinMode(out3, OUTPUT);
  pinMode(out4, OUTPUT);
  //declaring pin types
  pinMode(LEFT, INPUT);
  pinMode(RIGHT, INPUT);
  pinMode(EX_LEFT, INPUT);
  pinMode(EX_RIGHT, INPUT);
}
 
void forward()
{
//  Serial.println("FORWARD");
  // Two motors on one side
  digitalWrite(out1, LOW);
  digitalWrite(out2, HIGH);

  digitalWrite(out3, HIGH);
  digitalWrite(out4, LOW);
}
 
void left()
{
//  Serial.println("LEFT");
  digitalWrite(out1, LOW);
  digitalWrite(out2, HIGH);

  digitalWrite(out3, LOW);
  digitalWrite(out4, HIGH);
}
 
void right()
{
//  Serial.println("RIGHT");
  digitalWrite(out1, HIGH);
  digitalWrite(out2, LOW);

  digitalWrite(out3, HIGH);
  digitalWrite(out4, LOW);
}
 
void Stop()
{
  digitalWrite(out1, LOW);
  digitalWrite(out2, LOW);

  digitalWrite(out3, LOW);
  digitalWrite(out4, LOW);
}

void left_90() {
  forward();
  delay(50);
  left();
  delay(1000);
  while(digitalRead(EX_RIGHT) == 0) left();
}

void right_90() {
  forward();
  delay(50);
  right();
  delay(1000);
  while(digitalRead(EX_LEFT) == 0) right();
//  Stop();
  readSensors();
//  delay(60000);
}

void readSensors() {
  Serial.print("left = ");
  Serial.println(digitalRead(LEFT));

  Serial.print("right = ");
  Serial.println(digitalRead(RIGHT));

  Serial.print("Exleft = ");
  Serial.println(digitalRead(EX_LEFT));

  Serial.print("Exright = ");
  Serial.println(digitalRead(EX_RIGHT));
}


void loop(){
  //printing values of the sensors to the serial monitor
//  readSensors();

  //line detected by both
  if(digitalRead(LEFT)==0 && digitalRead(RIGHT)==0){
//    Serial.println("Forward");
    //Forward
    forward();
  }
  //line detected by left sensor
  else if(digitalRead(LEFT)==0 && !analogRead(RIGHT)==0){
    //turn left
//    Serial.println("Left");
    right();
  }
  //line detected by right sensor
  else if(!digitalRead(LEFT)==0 && digitalRead(RIGHT)==0){
    //turn right
//    Serial.println("Right");
    left();
  }
  // Intersection detected
  else if(!digitalRead(LEFT)==0 && !digitalRead(RIGHT)==0 && !digitalRead(EX_LEFT)==0 && !digitalRead(EX_RIGHT)==0) {
//    Serial.println("Intersection");
    left_90();
  }
  //line detected by none
  else if(!digitalRead(LEFT)==0 && !digitalRead(RIGHT)==0){
    //stop1
//    Serial.println("Stop");
    Stop();
  }
}