La robótica móvil permite dotar a las máquinas de capacidad de percepción y toma de decisiones autónomas en entornos cambiantes. En este manual práctico, construiremos un droide explorador dotado de un sistema de radar giratorio que combina un sensor ultrasónico de medición de distancia con un servomotor de alta precisión. A través de este proyecto, los jóvenes estudiantes aprenderán a coordinar la lectura de sensores, la navegación con motores de corriente continua y el control de posiciones angulares mediante la placa Arduino.

1. El Equipo de Exploración: Componentes y Conexiones
Para que el droide pueda desplazarse y percibir su entorno de forma independiente, se requiere una arquitectura integrada por un cerebro electrónico, un sensor de eco, una articulación giratoria y un controlador de potencia para las ruedas. Como se especifica en la arquitectura del droide, cada elemento se vincula a un pin digital determinado en la placa de control.
El sensor ultrasónico de modelo HC-SR04 actúa como los ojos del robot, emitiendo pulsos de sonido inaudibles para calcular la proximidad de los objetos. Este sensor va montado directamente sobre las paletas del servomotor SG90, el cual gira a izquierda y derecha simulando el barrido de un radar. Finalmente, el módulo puente H L298N recibe las instrucciones lógicas desde Arduino y suministra la corriente necesaria a los motores de tracción izquierdo y derecho.

#include <Servo.h> // Librería estándar para Arduino Uno

Servo sRadar;
const int Trig = 4; // Pin que dispara el pulso
const int Echo = 5; // Pin que recibe el rebote[cite: 7]
const int IN1 = 8, IN2 = 9, IN3 = 10, IN4 = 11; // Músculos L298N

void setup() {
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);

pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);

sRadar.attach(12); // Vincular el pin físico al cable de señal
sRadar.write(90); // Mirar al frente
}

int medirDistancia() {
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
long duracion = pulseIn(Echo, HIGH);
return duracion * 0.034 / 2; // Convertir a centímetros
}

void loop() {
sRadar.write(90);
delay(100);
int distancia = medirDistancia();

if (distancia > 0 && distancia < 20) { // Obstáculo a menos de 20 cm
// Freno Total
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);

sRadar.write(0); // Escanear derecha
delay(500); // Pausa obligatoria para que el motor alcance la posición
int distDer = medirDistancia();

sRadar.write(180); // Escanear izquierda
delay(500);
int distIzq = medirDistancia();

if (distDer > distIzq) {
// Girar Derecha (Motor A retrocede, Motor B avanza)
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
} else {
// Girar Izquierda (Motor A avanza, Motor B retrocede)
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}
delay(1000); // 1000 milisegundos = 1 segundo humano
} else {
// Motor A y B Avanzan
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}
}

CEB  Bilingue Eben-Ezer
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.