kode line follower 3

#include <NewPing.h>
#include <Servo.h>
#include <AFMotor.h>

//hc-sr04 sensor
#define TRIGGER_PIN A2
#define ECHO_PIN A3
#define max_distance 50

int waktu1 = 500;
int waktu2 = 700;
int waktu3 = 500;


//jika pergerakan robot terbalik antara kiri dan kanan, tukar A1 dan A0 
#define irLeft A1
#define irRight A0

//speed 4 motor gerak maju
int speedMaju = 100;
//speed 2 motor gerak gerak maju saat belok (motor akan bergerak maju di sisi yang satu dan mundur di sisi yang lain)
int speedBelokMaju = 100; 
//speed 2 motor gerak mundur saat belok (motor akan bergerak maju di sisi yang satu dan mundur di sisi yang lain)
int speedBelokMundur = 80;


//motor
#define MAX_SPEED 200
#define MAX_SPEED_OFFSET 20

Servo servo;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, max_distance);

AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);


int distance = 0;
int leftDistance;
int rightDistance;
boolean object;

void setup() {
  Serial.begin(9600);
  pinMode(irLeft, INPUT);
  pinMode(irRight, INPUT);
  servo.attach(10);
  servo.write(90);

}

void loop() {
  if (digitalRead(irLeft) == 0 && digitalRead(irRight) == 0 ) {
    objectAvoid();
    //forword
  }
  else if (digitalRead(irLeft) == 0 && digitalRead(irRight) == 1 ) {
    objectAvoid();
    Serial.println("TL");
    //leftturn
    Stop();
    delay(20);
    moveLeft();
  }
  else if (digitalRead(irLeft) == 1 && digitalRead(irRight) == 0 ) {
    objectAvoid();
    Serial.println("TR");
    //rightturn
    Stop();
    delay(20);
    moveRight();
  }
  else if (digitalRead(irLeft) == 1 && digitalRead(irRight) == 1 ) {
    //Stop
    Stop();
  }
}

void objectAvoid() {
  distance = getDistance();
  if (distance <= 15) {
    //stop
    Stop();
    delay(100);
  }
  else {
    //forword
    Serial.println("moveforword");
    moveForward();
  }
}

int getDistance() {
  delay(50);
  int cm = sonar.ping_cm();
  if (cm == 0) {
    cm = 100;
  }
  return cm;
}

int lookLeft () {
  //lock left
  servo.write(150);
  delay(500);
  leftDistance = getDistance();
  delay(100);
  servo.write(90);
  Serial.print("Left:");
  Serial.print(leftDistance);
  return leftDistance;
  delay(100);
}

int lookRight() {
  //lock right
  servo.write(30);
  delay(500);
  rightDistance = getDistance();
  delay(100);
  servo.write(90);
  Serial.print("   ");
  Serial.print("Right:");
  Serial.println(rightDistance);
  return rightDistance;
  delay(100);
}
void Stop() {
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
}
void moveForward() {
  motor1.run(FORWARD);
  motor1.setSpeed(speedMaju);
  motor2.run(FORWARD);
  motor2.setSpeed(speedMaju);
  motor3.run(FORWARD);
  motor3.setSpeed(speedMaju);
  motor4.run(FORWARD);
  motor4.setSpeed(speedMaju);
}
void moveBackward() {
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);

}
void turn() {
  if (object == false) {
    Serial.println("turn Right");
    moveLeft();
    delay(waktu1);
    moveForward();
    delay(waktu2);
    moveRight();
    delay(waktu3);
    if (digitalRead(irRight) == 1) {
      loop();
    } else {
      moveForward();
    }
  }
  else {
    Serial.println("turn left");
    moveRight();
    delay(waktu1);
    moveForward();
    delay(waktu2);
    moveLeft();
    delay(waktu3);
    if (digitalRead(irLeft) == 1) {
      loop();
    } else {
      moveForward();
    }
  }
}
void moveRight() {
  motor1.run(BACKWARD);
  motor1.setSpeed(speedBelokMundur);
  motor2.run(FORWARD);
  motor2.setSpeed(speedBelokMaju);
  motor3.run(FORWARD);
  motor3.setSpeed(speedBelokMaju);
  motor4.run(BACKWARD);
  motor4.setSpeed(speedBelokMundur);
  
}
void moveLeft() {
  motor1.run(FORWARD);
  motor1.setSpeed(speedBelokMaju);
  motor2.run(BACKWARD);
  motor2.setSpeed(speedBelokMundur);
  motor3.run(BACKWARD);
  motor3.setSpeed(speedBelokMundur);
  motor4.run(FORWARD);
  motor4.setSpeed(speedBelokMaju);
}