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