#define int1 10
#define int2 9
#define int3 6
#define int4 5
#define front_light 13
#define left_light 12
#define right_light 11
#define main_light 8
#define back_light 7
#define speaker 3
#define vcc_ir 4
#define left_ir A0
#define right_ir A1
#define ldr A2
char data;  
int ldrVal;


void setup() {
  pinMode(int1, OUTPUT);
  pinMode(int2, OUTPUT);
  pinMode(int3, OUTPUT);
  pinMode(int4, OUTPUT);   
  pinMode(main_light, OUTPUT);   // main light (in car) 
  pinMode(front_light, OUTPUT);  // front light 
  pinMode(back_light, OUTPUT);   // back light 
  pinMode(left_light, OUTPUT);   //side left light
  pinMode(right_light, OUTPUT);  //side right light 
  pinMode(speaker, OUTPUT);      //speaker for horn
  pinMode(vcc_ir, OUTPUT);      //speaker for horn
  pinMode(left_ir, INPUT);       // initialize Left sensor as an input
  pinMode(right_ir, INPUT);      // initialize Right sensor as an input
  pinMode(ldr, INPUT);           // initialize ldr sensor for brightness
  Serial.begin(9600);            //Set the baud rate to your Bluetooth module.
}
  
void loop() {
if(Serial.available()){
  data = Serial.read();
  Serial.println(data);
} 

ldrVal = analogRead(ldr); 
if(ldrVal <= 400){
  digitalWrite(main_light,HIGH);
  digitalWrite(front_light,HIGH);
} else {
  digitalWrite(main_light,LOW);
  digitalWrite(front_light,LOW);
}
 
if(data == 'F'){                 //move forward 
  digitalWrite(int1,HIGH);
  digitalWrite(int3,HIGH);
  digitalWrite(speaker,LOW);
  digitalWrite(left_light,LOW);
  digitalWrite(right_light,LOW);
  digitalWrite(back_light,LOW);
}
 
else if(data == 'B'){            //move reverse  
  digitalWrite(int2,HIGH);
  digitalWrite(int4,HIGH);
  digitalWrite(back_light,HIGH);
  digitalWrite(speaker,HIGH);
  digitalWrite(left_light,LOW);
  digitalWrite(right_light,LOW);
}
 
else if(data == 'L'){            //turn left  
  digitalWrite(int1,HIGH);
  digitalWrite(int4,HIGH);  
  digitalWrite(left_light,HIGH); 
  digitalWrite(right_light,LOW); 
}

else if(data == 'G'){            //turn forword left  
  digitalWrite(int1,HIGH); 
  analogWrite(int3,100);
  digitalWrite(left_light,HIGH);
  digitalWrite(right_light,LOW); 
} 

else if(data == 'H'){           //turn back left  
  digitalWrite(int2,HIGH);
  analogWrite(int4,100);
  digitalWrite(back_light,HIGH); 
  analogWrite(speaker,100);
  digitalWrite(left_light,HIGH);
  digitalWrite(right_light,LOW); 
}

else if(data == 'J'){           //turn back right  
  analogWrite(int2,100);
  digitalWrite(int4,HIGH);
  digitalWrite(back_light,HIGH);
  analogWrite(speaker,100);
  digitalWrite(right_light,HIGH);
  digitalWrite(left_light,LOW);
}

else if(data == 'I'){           //turn forword right  
  analogWrite(int1,100);
  digitalWrite(int3,HIGH); 
  digitalWrite(right_light,HIGH);
  digitalWrite(left_light,LOW);
}
 
else if(data == 'R'){           //turn right 
  digitalWrite(int3,HIGH);
  digitalWrite(int2,HIGH);
  digitalWrite(right_light,HIGH); 
  digitalWrite(left_light,LOW);
}
  
else if(data == 'W'){           //turn on front light 
  digitalWrite(front_light,HIGH); 
}
  
else if(data == 'w'){           //turn off front light
  digitalWrite(front_light,LOW); 
} 
  
else if(data == 'U'){           //turn on back light 
  digitalWrite(back_light,HIGH); 
}
  
else if(data == 'u'){           //turn off back light
  digitalWrite(back_light,LOW); 
}
 
else if(data == 'V'){           //turn on horn
  digitalWrite(speaker,HIGH); 
}
  
else if(data == 'v'){           //turn off horn
  digitalWrite(speaker,LOW); 
}
 
else if(data == 'S'){           //STOP (all motors stop) and on back light
  digitalWrite(int1,LOW); 
  digitalWrite(int2,LOW); 
  digitalWrite(int3,LOW); 
  digitalWrite(int4,LOW); 
  digitalWrite(back_light,HIGH);
  digitalWrite(left_light,LOW);
  digitalWrite(right_light,LOW);
  digitalWrite(speaker,LOW);
} 

else if(data == 'X'){         // this code for lane following 
  digitalWrite(vcc_ir,HIGH);
  int LEFT_SENSOR = digitalRead(left_ir);
  int RIGHT_SENSOR = digitalRead(right_ir); 
    
  if(RIGHT_SENSOR==0 && LEFT_SENSOR==0) {
    analogWrite(int1,100);
    analogWrite(int2,0);
    analogWrite(int3,100);       //FORWARD
    analogWrite(int4,0);
    digitalWrite(speaker,LOW);
    digitalWrite(left_light,LOW);
    digitalWrite(right_light,LOW);
    digitalWrite(back_light,LOW);
  }
  
    else if(RIGHT_SENSOR==0 && LEFT_SENSOR==1) {
    analogWrite(int1,150);
    analogWrite(int4,150);     //Move left
    digitalWrite(left_light,HIGH); 
    digitalWrite(right_light,LOW); 
    digitalWrite(int2,LOW);
    digitalWrite(int3,LOW);
  }
  
    else if(RIGHT_SENSOR==1 && LEFT_SENSOR==0) {
    analogWrite(int3,150);
    analogWrite(int2,150);     //Move right
    digitalWrite(right_light,HIGH); 
    digitalWrite(left_light,LOW);
    digitalWrite(int1,LOW);
    digitalWrite(int4,LOW);
  }
  
    else if(RIGHT_SENSOR==1 && LEFT_SENSOR==1) {
    analogWrite(int1,0); 
    analogWrite(int2,0); 
    analogWrite(int3,0); 
    analogWrite(int4,0);      //STOP
    digitalWrite(back_light, HIGH); 
    digitalWrite(left_light,LOW);
    digitalWrite(right_light,LOW);
    digitalWrite(speaker,LOW);
  }

} 

else if(data =='x'){
  digitalWrite(vcc_ir,LOW);
  digitalWrite(int1,LOW); 
  digitalWrite(int2,LOW); 
  digitalWrite(int3,LOW); 
  digitalWrite(int4,LOW); 
  digitalWrite(back_light,HIGH);
  digitalWrite(left_light,LOW);
  digitalWrite(right_light,LOW);
  digitalWrite(speaker,LOW);
}
}