Project: Obstacle-Avoiding Robot
Let's build a complete robot that can navigate and avoid obstacles!
Components Needed
- Arduino Uno
- L298N Motor Driver
- 2× DC Motors with wheels
- HC-SR04 Ultrasonic Sensor
- Chassis (can be DIY cardboard)
- 9V or 11.1V battery
- Jumper wires
Complete Code
// Ultrasonic sensor pins
const int trigPin = 12;
const int echoPin = 11;
// Motor A (Right)
const int enA = 9;
const int in1 = 8;
const int in2 = 7;
// Motor B (Left)
const int enB = 3;
const int in3 = 5;
const int in4 = 4;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
}
void loop() {
float distance = measureDistance();
Serial.print("Distance: ");
Serial.println(distance);
if (distance > 20) {
moveForward();
} else {
stopRobot();
delay(500);
turnRight();
delay(700);
}
}
float measureDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
return distance;
}
void moveForward() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, 200);
analogWrite(enB, 200);
}
void stopRobot() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void turnRight() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, 200);
analogWrite(enB, 200);
}
Assembly Steps
- Mount motors on chassis
- Attach wheels to motors
- Mount Arduino and motor driver on chassis
- Connect motors to motor driver
- Connect motor driver to Arduino
- Mount ultrasonic sensor at front
- Connect battery to motor driver
- Upload code and test!
✅ Success: Congratulations! You've built your first autonomous robot!