This document provides a detailed overview of a line-following robot circuit. The robot uses an Arduino UNO microcontroller to read values from a line sensor array and control two DC motors via an L298N motor driver. The robot is powered by a 18650 Li-Ion battery.
Arduino UNO
Line Sensor
L298N DC Motor Driver
DC Motor (Motor 1)
DC Motor (Motor 2)
18650 Li-Ion Battery
/*
* Arduino-Controlled Line Following Robot with Dual DC Motors and L298N Driver
* This code reads values from a line sensor array and controls two DC motors
* via an L298N motor driver to follow a line.
*/
// Pin definitions
const int lineSensorPins[] = {A0, A1, A2, A3, A4, A5};
const int motorEnablePins[] = {5, 6};
const int motorControlPins[] = {8, 9, 10, 11};
void setup() {
// Initialize line sensor pins
for (int i = 0; i < 6; i++) {
pinMode(lineSensorPins[i], INPUT);
}
// Initialize motor control pins
for (int i = 0; i < 4; i++) {
pinMode(motorControlPins[i], OUTPUT);
}
// Initialize motor enable pins
for (int i = 0; i < 2; i++) {
pinMode(motorEnablePins[i], OUTPUT);
}
// Enable motors
digitalWrite(motorEnablePins[0], HIGH);
digitalWrite(motorEnablePins[1], HIGH);
}
void loop() {
int sensorValues[6];
// Read sensor values
for (int i = 0; i < 6; i++) {
sensorValues[i] = analogRead(lineSensorPins[i]);
}
// Determine motor actions based on sensor values
if (sensorValues[0] < 500 && sensorValues[5] < 500) {
// Move forward
moveForward();
} else if (sensorValues[0] < 500) {
// Turn left
turnLeft();
} else if (sensorValues[5] < 500) {
// Turn right
turnRight();
} else {
// Stop
stopMotors();
}
}
void moveForward() {
digitalWrite(motorControlPins[0], HIGH);
digitalWrite(motorControlPins[1], LOW);
digitalWrite(motorControlPins[2], HIGH);
digitalWrite(motorControlPins[3], LOW);
}
void turnLeft() {
digitalWrite(motorControlPins[0], LOW);
digitalWrite(motorControlPins[1], HIGH);
digitalWrite(motorControlPins[2], HIGH);
digitalWrite(motorControlPins[3], LOW);
}
void turnRight() {
digitalWrite(motorControlPins[0], HIGH);
digitalWrite(motorControlPins[1], LOW);
digitalWrite(motorControlPins[2], LOW);
digitalWrite(motorControlPins[3], HIGH);
}
void stopMotors() {
digitalWrite(motorControlPins[0], LOW);
digitalWrite(motorControlPins[1], LOW);
digitalWrite(motorControlPins[2], LOW);
digitalWrite(motorControlPins[3], LOW);
}
This code initializes the line sensor and motor control pins, reads sensor values, and controls the motors to follow a line based on the sensor readings. The robot moves forward, turns left, turns right, or stops based on the sensor values.