This document provides a detailed overview of an obstacle avoidance robot circuit. The circuit includes an Arduino UNO microcontroller, an HC-SR04 ultrasonic sensor for distance measurement, an L298N motor driver to control two DC motors, and a micro servo for additional movement. The robot is powered by a 12V battery.
Battery 12V
L298N DC Motor Driver
Micro Servo 9G
Motor with Reducer (x2)
HC-SR04 Ultrasonic Sensor
Arduino UNO
/*
* Obstacle Avoidance Robot with Servo
* This Arduino sketch controls an obstacle avoidance robot using an ultrasonic
* sensor (HC-SR04) for distance measurement, a motor driver (L298N) to control
* two DC motors, and a micro servo for additional movement.
*/
#include <Servo.h>
// Pin definitions
const int trigPin = 8;
const int echoPin = 9;
const int motorIn1 = 7;
const int motorIn2 = 6;
const int motorIn3 = 5;
const int motorIn4 = 4;
const int servoPin = 3;
Servo myServo;
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Initialize motor control pins
pinMode(motorIn1, OUTPUT);
pinMode(motorIn2, OUTPUT);
pinMode(motorIn3, OUTPUT);
pinMode(motorIn4, OUTPUT);
// Initialize ultrasonic sensor pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Attach servo to pin
myServo.attach(servoPin);
// Set initial servo position
myServo.write(25);
}
void loop() {
// Measure distance
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
// Print distance to serial monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Obstacle avoidance logic
if (distance < 20) {
// Stop motors
digitalWrite(motorIn1, LOW);
digitalWrite(motorIn2, LOW);
digitalWrite(motorIn3, LOW);
digitalWrite(motorIn4, LOW);
// Move servo to scan area
myServo.write(0);
delay(500);
myServo.write(90);
delay(500);
myServo.write(155);
} else {
// Move forward
digitalWrite(motorIn1, HIGH);
digitalWrite(motorIn2, LOW);
digitalWrite(motorIn3, HIGH);
digitalWrite(motorIn4, LOW);
}
delay(100);
}
This code initializes the pins for the motors, ultrasonic sensor, and servo. It measures the distance using the ultrasonic sensor and controls the motors and servo based on the distance to avoid obstacles.