Project Hub

🤖
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
HC-SR04 ultrasonic
SG90 servo
Battery pack
Circuit Diagram & Wiring
Add your circuit diagram image here.
- Trig → 12, Echo → 13.
- Servo signal → 11.
- Motor driver IN1..IN4 on pins 5,6,9,10.
- Common GND between Arduino and driver.
Arduino Sketch (.ino)
obstacle-bot.ino
<span style="color:#f97583">#includespan> <Servo.h>
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 > <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>
}
}