12 de julio de 2026 · 11 min

Robot evita-obstáculos con Arduino: la guía completa del clásico

El primer robot de todo el mundo: dos motores, un HC-SR04, un L298N y un Arduino. Lista de compra completa, conexionado sin misterios, código listo para cargar y los errores que hacen que 'no ande'.

arduinoroboticahc-sr04l298nproyectos

Si el LED parpadeante es el “hola mundo” de Arduino, el robot que esquiva obstáculos es la tesis de graduación del principiante. Junta todo: sensores, motores, driver, alimentación y lógica. Y es el proyecto que más consultas nos genera en el mostrador — casi siempre por los mismos tres errores, que te adelantamos abajo para que no pierdas el fin de semana.

Qué vas a armar

Un vehículo de dos ruedas motrices que avanza solo; cuando el sensor ultrasónico detecta un obstáculo a menos de 20 cm, frena, retrocede, “mira” a izquierda y derecha girando el sensor con un servo, y arranca para el lado más despejado.

Lista de compra

ComponenteCantidadNota
Arduino UNO o Nano1El UNO es más cómodo para empezar
Chasis 2WD con motores TT y ruedas1Trae motores, ruedas y rueda loca
Driver L298N1Maneja los dos motores
HC-SR041Los “ojos”
Servo SG901Para que el sensor mire a los lados
Portapilas 18650 ×2 + pilas1~7.4 V para motores y placa
Cables dupont1 juegoM-M y M-H
Interruptor1Para no desenchufar pilas cada vez

Conexionado

Alimentación (leé esto dos veces):

Motores:

Control del L298N → Arduino:

HC-SR04: Trig → pin 9, Echo → pin 10, VCC → 5V, GND → GND. Servo: señal → pin 3, VCC → 5V, GND → GND. El HC-SR04 va montado sobre el servo, al frente del chasis.

El código

#include <Servo.h>

// Motores
const int ENA = 5, IN1 = 7, IN2 = 8;   // izquierdo
const int ENB = 6, IN3 = 11, IN4 = 12; // derecho
// Sensor
const int TRIG = 9, ECHO = 10;
const int VEL = 180;          // 0-255
const int DIST_FRENO = 20;    // cm

Servo cuello;

void setup() {
  pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  cuello.attach(3);
  cuello.write(90);  // mirar al frente
  delay(500);
}

int distancia() {
  digitalWrite(TRIG, LOW);  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH); delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long d = pulseIn(ECHO, HIGH, 30000);
  int cm = d * 0.034 / 2;
  return (cm == 0) ? 400 : cm;  // sin eco = camino libre
}

void motores(int izq, int der) {  // -255 a 255
  digitalWrite(IN1, izq >= 0); digitalWrite(IN2, izq < 0);
  digitalWrite(IN3, der >= 0); digitalWrite(IN4, der < 0);
  analogWrite(ENA, abs(izq));
  analogWrite(ENB, abs(der));
}

void loop() {
  if (distancia() > DIST_FRENO) {
    motores(VEL, VEL);              // avanzar
    return;
  }
  motores(0, 0);                    // frenar
  delay(200);
  motores(-VEL, -VEL);              // retroceder
  delay(350);
  motores(0, 0);

  cuello.write(160); delay(400);    // mirar izquierda
  int izq = distancia();
  cuello.write(20);  delay(400);    // mirar derecha
  int der = distancia();
  cuello.write(90);  delay(300);    // centrar

  if (izq > der) motores(-VEL, VEL);  // girar a izquierda
  else           motores(VEL, -VEL);  // girar a derecha
  delay(400);
  motores(0, 0);
}

Cargalo, apoyá el robot en el piso, prendé el interruptor y listo. Ajustá VEL si es muy violento y el delay(400) del giro según cuánto rote tu chasis.

Los 3 errores que traen el robot “muerto” al mostrador

  1. Alimentarlo con la pila cuadrada de 9 V. Es el error #1 histórico. Esa pila no entrega la corriente que piden dos motores TT: el robot avanza medio metro y se resetea. Van 2× 18650 o 6 pilas AA. Punto.
  2. Sin masa común. Si el Arduino se alimenta por USB para probar y los motores con pilas, GND del L298N y GND del Arduino tienen que estar unidos igual. Síntoma: motores que hacen “lo que quieren”.
  3. Un motor gira al revés. No es un problema de código: invertí los dos cables de ESE motor en el borne del L298N y listo.

¿El L298N te calienta o querés entender mejor cómo funciona el puente H? Tenemos una guía completa de drivers de motores.

Para llevarlo más lejos

Kit completo con envío

Chasis, motores, L298N, HC-SR04, servo, portapilas y cables: todo en electronicabyp.com.ar con envío a toda Argentina. Armamos este kit seguido para escuelas técnicas y talleres de robótica — si necesitás varios, pedí precio por cantidad por WhatsApp.


¿Necesitás los componentes de esta guía? Los encontrás en electronicabyp.com.ar — hacemos envíos a toda Argentina. Para cotizaciones por cantidad, escribinos por WhatsApp.