#include <Servo.h>
#define trigPinIn 7
#define echoPinOut 13
#define in1 9
#define in2 10
#define in3 11
#define in4 12
#define enablePin 8
#define servoLPin 5
#define servoRPin 6
Servo myservoL;
Servo myservoR;
long duration, distance, RightSensor,BackSensor,FrontSensor,LeftSensor;
void setup(){
Serial.begin (9600);
pinMode(trigPinIn, OUTPUT);
pinMode(echoPinOut, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(enablePin, OUTPUT);
}
void loop() {
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
digitalWrite(enablePin,LOW);
delay(200);
SonarSensor(trigPinIn, echoPinOut);
LeftSensor = distance;
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
delay(200);
SonarSensor(trigPinIn, echoPinOut);
FrontSensor = distance;
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
delay(200);
SonarSensor(trigPinIn, echoPinOut);
RightSensor = distance;
if(FrontSensor<18){
if(RightSensor>LeftSensor){
fixR();
}else{
fixL();
}
}else{
myservoL.attach(servoLPin);
myservoR.attach(servoRPin);
myservoL.write(98);
myservoR.write(90);
}
}
void SonarSensor(int trigPin,int echoPin)
{
duration=0;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
if(duration>190000){
delay(100);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
}
distance = (duration/2) / 29.1;
}