// IR Sensor Pins
int leftIR = 2;
int rightIR = 3;
// Motor Driver Pins
int ENA = 5;
int IN1 = 8;
int IN2 = 9;
int ENB = 6;
int IN3 = 10;
int IN4 = 11;
void setup()
{
pinMode(leftIR, INPUT);
pinMode(rightIR, INPUT);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// Set initial motor speed
analogWrite(ENA, 100);
analogWrite(ENB, 100);
}
void loop()
{
int leftSensor = digitalRead(leftIR);
int rightSensor = digitalRead(rightIR);
// Both sensors detect object -> Reverse Straight
if (leftSensor == LOW && rightSensor == LOW)
{
analogWrite(ENA, 100);
analogWrite(ENB, 100);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
// Left sensor detects object -> Reverse Right
else if (leftSensor == LOW && rightSensor == HIGH)
{
analogWrite(ENA, 100);
analogWrite(ENB, 100);
// Left motor reverse
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
// Right motor stop
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
// Right sensor detects object -> Reverse Left
else if (leftSensor == HIGH && rightSensor == LOW)
{
analogWrite(ENA, 100);
analogWrite(ENB, 100);
// Left motor stop
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
// Right motor reverse
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
// No object detected -> Stop
else
{
analogWrite(ENA, 0);
analogWrite(ENB, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
}