Project Hub
Obstacle Avoiding Robot
🤖

Obstacle Avoiding Robot

A robot that turns away from walls using ultrasonic sensing.

advanced150 min

Components Needed

Arduino UNO
L298N motor driver
2× DC motors + wheels
SR04
HC-SR04 ultrasonic
SG90 servo
Battery pack

Circuit Diagram & Wiring

Add your circuit diagram image here.

  1. Trig → 12, Echo → 13.
  2. Servo signal → 11.
  3. Motor driver IN1..IN4 on pins 5,6,9,10.
  4. Common GND between Arduino and driver.

Arduino Sketch (.ino)

obstacle-bot.ino
<span style="color:#f97583">#includespan> &lt;Servo.h&gt;
Servo head;
const int trig = <span style="color:#79b8ff">12span>, echo = <span style="color:#79b8ff">13span>;
const int IN1=<span style="color:#79b8ff">5span>, IN2=<span style="color:#79b8ff">6span>, IN3=<span style="color:#79b8ff">9span>, IN4=<span style="color:#79b8ff">10span>;

long distance() {
  digitalWrite(trig, LOW); delayMicroseconds(<span style="color:#79b8ff">2span>);
  digitalWrite(trig, HIGH); delayMicroseconds(<span style="color:#79b8ff">10span>);
  digitalWrite(trig, LOW);
  return pulseIn(echo, HIGH) / <span style="color:#79b8ff">58span>;
}

void drive(int a, int b, int c, int d) {
  digitalWrite(IN1,a); digitalWrite(IN2,b);
  digitalWrite(IN3,c); digitalWrite(IN4,d);
}

void setup() {
  pinMode(trig, OUTPUT); pinMode(echo, INPUT);
  pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);
  head.attach(<span style="color:#79b8ff">11span>); head.write(<span style="color:#79b8ff">90span>);
}

void loop() {
  long d = distance();
  if (d &gt; <span style="color:#79b8ff">20span> || d == <span style="color:#79b8ff">0span>) {
    drive(<span style="color:#79b8ff">1span>,<span style="color:#79b8ff">0span>,<span style="color:#79b8ff">1span>,<span style="color:#79b8ff">0span>); <span style="color:<span style="color:#f97583">#6a737dspan>;font-style:italic">// forwardspan>
  } else {
    drive(<span style="color:#79b8ff">0span>,<span style="color:#79b8ff">0span>,<span style="color:#79b8ff">0span>,<span style="color:#79b8ff">0span>); delay(<span style="color:#79b8ff">200span>);
    drive(<span style="color:#79b8ff">0span>,<span style="color:#79b8ff">1span>,<span style="color:#79b8ff">1span>,<span style="color:#79b8ff">0span>); delay(<span style="color:#79b8ff">400span>); <span style="color:<span style="color:#f97583">#6a737dspan>;font-style:italic">// turnspan>
  }
}