

This circuit is designed to control multiple servos using an Arduino UNO and an Arduino Sensor Shield v5.0. The servos are powered by a 12V battery, and the Arduino UNO is programmed to control the servos based on distance measurements. The circuit includes the following components:
#include <Servo.h>
volatile int IN1 = 11;
volatile int IN2 = 6;
volatile int IN3 = 5;
volatile int IN4 = 3;
volatile int rightDistance;
volatile int leftDistance;
Servo servo_4;
void left_side_forward(int speed) {
  analogWrite(IN1, speed * 0.92);
  analogWrite(IN2, 0);
}
void right_side_forward(int speed) {
  analogWrite(IN3, speed);
  analogWrite(IN4, 0);
}
void left_side_backward(int speed) {
  analogWrite(IN1, 0);
  analogWrite(IN2, speed * 0.92);
}
void right_side_backward(int speed) {
  analogWrite(IN3, 0);
  analogWrite(IN4, speed);
}
float checkdistance_A1_A2() {
  digitalWrite(A1, LOW);
  delayMicroseconds(2);
  digitalWrite(A1, HIGH);
  delayMicroseconds(10);
  digitalWrite(A1, LOW);
  float distance = pulseIn(A2, HIGH) / 58.00;
  delay(10);
  return distance;
}
void forward(int speed) {
  left_side_forward(speed);
  right_side_forward(speed);
}
void backward(int speed) {
  left_side_backward(speed);
  right_side_backward(speed);
}
void left(int speed, int time) {
  left_side_backward(speed);
  right_side_forward(speed);
  delay(time);
  stop();
}
void right(int speed, int time) {
  left_side_forward(speed);
  right_side_backward(speed);
  delay(time);
  stop();
}
void stop() {
  left_side_forward(0);
  right_side_forward(0);
}
void setup() {
  servo_4.attach(4);
  pinMode(A1, OUTPUT);
  pinMode(A2, INPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}
void loop() {
  servo_4.write(90);
  delay(200); // Reduce delay for better responsiveness
  float distance = checkdistance_A1_A2();
  while (distance > 15) {
    forward(150); // Increase speed for faster movement
    distance = checkdistance_A1_A2(); // Continuously update distance
  }
  stop();
  delay(100); // Reduce delay for better responsiveness
  servo_4.write(0);
  delay(200); // Reduce delay for better responsiveness
  rightDistance = checkdistance_A1_A2();
  servo_4.write(180);
  delay(200); // Reduce delay for better responsiveness
  leftDistance = checkdistance_A1_A2();
  if (rightDistance >= leftDistance) {
    right(200, 300); // Reduce rotation time for better precision
  } else {
    left(200, 300); // Reduce rotation time for better precision
  }
}
This code controls the servos connected to the Arduino UNO via the Arduino Sensor Shield v5.0. The servos are used to move the robot forward, backward, left, and right