#include <Servo.h> // include Servo library 
Servo horizontal; // horizontal servo
int servoh = 90;     // stand horizontal servo
Servo vertical;   // vertical servo 
int servov = 60;     // stand vertical servo
// LDR pin connections
//  name  = analogpin;
int ldrlt = 0; //LDR top left 3 
int ldrrt = 1; //LDR top rigt 2
int ldrld = 2; //LDR down left 0
int ldrrd = 3; //ldr down rigt 1
const int ledPin1 =  4;      // the number of the LED pin
const int ledPin2 =  5; 
const int ledPin3 =  6;
const int ledPin4 =  7; 
const int ledPin5 =  8;      // the number of the LED pin
const int ledPin6 =  9; 
const int ledPin7 =  10;
const int ledPin8 =  11; 
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(ledPin6, OUTPUT);
  pinMode(ledPin7, OUTPUT);
  pinMode(ledPin8, OUTPUT);
  digitalWrite(ledPin1, HIGH);
  digitalWrite(ledPin2, HIGH);
  digitalWrite(ledPin3, HIGH);
  digitalWrite(ledPin4, HIGH);
  digitalWrite(ledPin5, HIGH);
  digitalWrite(ledPin6, HIGH);
  digitalWrite(ledPin7, HIGH);
  digitalWrite(ledPin8, HIGH);
}
void loop() 
{
  int lt = analogRead(ldrlt); // top left
  int rt = analogRead(ldrrt); // top right
  int ld = analogRead(ldrld); // down left
  int rd = analogRead(ldrrd); // down rigt
  
  int dtime = 60; //analogRead(4)/20; // nilai 50 ok
  int tol = analogRead(4)/3; // nilai 276 ok
  //Serial.println(tol);
  /*
  Serial.print("kiri atas:");
  Serial.print(lt);
  Serial.print(" , ");
  Serial.print("kanan atas:");
  Serial.print(rt);
  Serial.print(" , ");
  Serial.print("kiri bawah:");
  Serial.print(ld);
  Serial.print(" , ");
  Serial.print("kanan bawah:");
  Serial.println(rd);
  delay(500);
  /*
  Serial.print(" , ");
  Serial.print("delay:");
  Serial.print(dtime);
  Serial.print(" , ");
  Serial.print("toleransi:");
  Serial.print(tol);
  //*/
  int avt = (lt + rt) / 2; // average value top
  int avd = (ld + rd) / 2; // average value down
  int avl = (lt + ld) / 2; // average value left
  int avr = (rt + rd) / 2; // average value right
  /*
  Serial.print("atas:");
  Serial.print(avt);
  Serial.print(" , ");
  Serial.print("bawah:");
  Serial.print(avd);
  Serial.print(" , ");
  Serial.print("kiri:");
  Serial.print(avl);
  Serial.print(" , ");
  Serial.print("kanan:");
  Serial.println(avr);
  delay(500);
  //*/
  int dvert = avt - avd; // check the diffirence of up and down
  int dhoriz = avl - avr;// check the diffirence og left and rigt
  /*
  Serial.print("atas bawah:");
  Serial.print(dvert);
  Serial.print(" , ");
  Serial.print("kiri kanan:");
  Serial.println(dhoriz);
  */
  if (-1*tol > dvert || dvert > tol) // check if the diffirence is in the tolerance else change vertical angle
  {
  if (avt > avd)
  {
  // Serial.println("KIRI");
  digitalWrite(ledPin1, LOW); //nyala
  digitalWrite(ledPin2, HIGH); //mati
  digitalWrite(ledPin3, HIGH);//mati
  digitalWrite(ledPin4, HIGH); //mati
  }
  else if (avt < avd)
  {
 //  Serial.println("KANAN");
  digitalWrite(ledPin1, LOW); //nyala
  digitalWrite(ledPin2, LOW); //nyala
  digitalWrite(ledPin3, LOW); //nyala
  digitalWrite(ledPin4, LOW);//nyala
  }
  }
  
  if (-1*tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle
  {
  if (avl > avr)
  {
 // Serial.println("KIRI 2");
   digitalWrite(ledPin5, LOW);
  digitalWrite(ledPin6, HIGH);
  digitalWrite(ledPin7, HIGH);
  digitalWrite(ledPin8, HIGH);
  }
  else if (avl < avr)
  {
   //  Serial.println("KANAN 2");
  digitalWrite(ledPin5, LOW);
  digitalWrite(ledPin6, LOW);
  digitalWrite(ledPin7, LOW);
  digitalWrite(ledPin8, LOW);
  }
  else if (avl == avr)
  {
  digitalWrite(ledPin1, HIGH);
  digitalWrite(ledPin2, HIGH);
  digitalWrite(ledPin3, HIGH);
  digitalWrite(ledPin4, HIGH);
  digitalWrite(ledPin5, HIGH);
  digitalWrite(ledPin6, HIGH);
  digitalWrite(ledPin7, HIGH);
  digitalWrite(ledPin8, HIGH);
  }
  }
   delay(dtime);
  digitalWrite(ledPin1, HIGH);
  digitalWrite(ledPin2, HIGH);
  digitalWrite(ledPin3, HIGH);
  digitalWrite(ledPin4, HIGH);
  digitalWrite(ledPin5, HIGH);
  digitalWrite(ledPin6, HIGH);
  digitalWrite(ledPin7, HIGH);
  digitalWrite(ledPin8, HIGH); 
}