Required Materials
Electronic Components:
- Arduino Uno board
- 2 x DC motors with wheels
- L298N motor driver
- 2 x IR sensors
- 9V battery
- Breadboard and jumper wires
- Robot chassis
Circuit Setup
Connecting Motors
Connect the DC motors to the L298N motor driver:
- Left motor to OUT1 and OUT2
- Right motor to OUT3 and OUT4
- Motor driver to Arduino pins 5,6,9,10
IR Sensor Connection
Connect IR sensors to detect the line:
// Left IR sensor to pin 2 // Right IR sensor to pin 3 // VCC to 5V, GND to GND
Programming the Robot
Basic Movement Functions
// Define motor pins
int leftMotor1 = 5;
int leftMotor2 = 6;
int rightMotor1 = 9;
int rightMotor2 = 10;
void setup() {
// Set motor pins as OUTPUT
pinMode(leftMotor1, OUTPUT);
pinMode(leftMotor2, OUTPUT);
pinMode(rightMotor1, OUTPUT);
pinMode(rightMotor2, OUTPUT);
}
void moveForward() {
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
}
void turnLeft() {
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
}
Line Following Logic
void loop() {
int leftSensor = digitalRead(2);
int rightSensor = digitalRead(3);
if (leftSensor == LOW && rightSensor == LOW) {
moveForward();
} else if (leftSensor == HIGH && rightSensor == LOW) {
turnLeft();
} else if (leftSensor == LOW && rightSensor == HIGH) {
turnRight();
} else {
stopRobot();
}
}
Testing and Troubleshooting
Common Issues
- Motors not moving? Check battery connection
- Robot not following line? Adjust sensor height
- Erratic movement? Check all wire connections