← Todos los proyectos
Proyecto práctico · Nivel Avanzado

Robot seguidor de línea

Aprenderás a tomar decisiones con sensores y controlar dos motores. En esta guía encontrarás un montaje concreto, criterios de conexión y un programa funcional de referencia para este circuito.

Montaje ilustrado de Robot seguidor de línea

¿Qué vas a construir?

Un prototipo funcional pensado para practicar electrónica y programación con Arduino. La ilustración muestra la disposición conceptual de los componentes y sirve como referencia visual del montaje.

Materiales

  • Arduino Uno
  • sensores TCR5000
  • L298N
  • 2 motores DC
  • ruedas
  • chasis y batería

Cómo funciona

El Arduino recibe las señales de entrada, ejecuta la lógica del programa y controla las salidas. Antes de energizar, verifica polaridad, GND común y el valor de las resistencias. Los pines indicados son una propuesta de montaje y pueden adaptarse si modificas el código.

Cómo van las conexiones

Usa esta tabla junto con el diagrama para montar el circuito. Los pines corresponden al programa incluido en este proyecto.

Componente / terminalConectar a Arduino
Sensor izquierdo OUTD2
Sensor derecho OUTD3
Sensores VCC5V
Sensores GNDGND
L298N ENAD5
L298N ENBD6
L298N IN1D7
L298N IN2D8
L298N IN3D9
L298N IN4D10
L298N OUT1/OUT2Motor izquierdo
L298N OUT3/OUT4Motor derecho
L298N GNDGND Arduino
L298N alimentación motorBatería

Los pines ENA/ENB controlan velocidad mediante PWM. La alimentación de los motores debe ir a la entrada de potencia del L298N, no al pin 5 V del Arduino. Une las tierras.

Diagrama detallado de conexiones de Robot seguidor de línea

Programación

Este es un ejemplo funcional para el montaje descrito:

const int IZQ = 2;
const int DER = 3;
const int ENA = 5;
const int ENB = 6;
const int IN1 = 7;
const int IN2 = 8;
const int IN3 = 9;
const int IN4 = 10;

void setup() {
  pinMode(IZQ, INPUT);
  pinMode(DER, INPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
}

void motorAdelante() {
  digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
  digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
  analogWrite(ENA,150); analogWrite(ENB,150);
}
void giroIzq() {
  digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH);
  digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
  analogWrite(ENA,120); analogWrite(ENB,160);
}
void giroDer() {
  digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
  digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH);
  analogWrite(ENA,160); analogWrite(ENB,120);
}
void loop() {
  int izq = digitalRead(IZQ);
  int der = digitalRead(DER);
  if (izq == LOW && der == LOW) motorAdelante();
  else if (izq == HIGH && der == LOW) giroIzq();
  else if (izq == LOW && der == HIGH) giroDer();
  else { analogWrite(ENA,0); analogWrite(ENB,0); }
}

Prueba y ajustes

Componentes que necesitas

Consulta directamente los componentes disponibles en Fasantronic para replicar este proyecto.

Ver todos los componentes →