Encuentra tu pasión a solo 4,17 US$/mes | Aprende Robótica, IA e IOT.

Brazo Robótico con Arduino y Joystick

En el proyecto anterior construimos un brazo robótico con Arduino impreso en 3D. Después de ensamblarlo, lo programamos y comprobamos que funcionaba correctamente controlándolo desde la computadora mediante el teclado.

Mientras lo probaba, recordé esas máquinas de las ferias donde, con una palanca, puedes mover una pinza para intentar atrapar un premio. En ese momento me surgió una idea: ¿y si pudiéramos controlar nuestro brazo robótico de la misma manera?

La solución era más sencilla de lo que parecía. Solo necesitábamos incorporar dos joysticks analógicos para controlar cada movimiento del brazo robótico. 

Con esa idea en mente, en este tutorial aprenderás a realizar las conexiones y a programar el Arduino para controlar el brazo robótico de una forma más cómoda y natural. 

Montaje de joysticks

En este proyecto no es necesario modificar el montaje realizado en el tutorial anterior. El Arduino, el protoboard y el brazo robótico permanecen exactamente igual.

Lo único que debes hacer es incorporar los dos joysticks analógicos en la posición mostrada en la siguiente imagen. Esta será la única modificación necesaria para añadir una nueva forma de controlar el brazo robótico.

Diagrama de conexiones

Las conexiones realizadas en el tutorial anterior, correspondientes a los servomotores, el Arduino y la fuente de alimentación externa, se mantienen sin cambios.

En esta ocasión únicamente agregaremos los dos joysticks analógicos al circuito. Sigue el diagrama mostrado en la siguiente imagen y conecta cada joystick al pin correspondiente del Arduino.

Una vez añadidos los joysticks, el sistema estará listo para cargar el programa y comenzar las pruebas de control del brazo robótico.



Programación del brazo robótico

Ya tenemos el brazo robótico listo y todas las conexiones realizadas. Ahora es momento de cargar el programa en el Arduino para comenzar a controlar sus movimientos mediante los joysticks.

El código ha sido desarrollado en Arduino IDE y permite controlar la base, el eslabón y la pinza utilizando dos joysticks analógicos. Además, incorpora un filtro de media móvil exponencial (EMA), una técnica que suaviza la lectura de los joysticks y hace que los movimientos del brazo sean más fluidos y agradables durante su operación.

A continuación, copia el siguiente código en Arduino IDE, súbelo a la placa y prueba el funcionamiento de tu brazo robótico.

Libro de proyectos de inteligencia artificial para niños con contenido educativo práctico y creativo

🧠 IA Educativa desde cero

Explora nuestros eBooks educativos con proyectos guiados paso a paso para enseñar inteligencia artificial desde casa o en el aula.

				
					#include <Servo.h>


Servo servoBase;
Servo servoEslabon;
Servo servoPinza;


// Pines de los servomotores
const int PIN_BASE = 9;
const int PIN_ESLABON = 10;
const int PIN_PINZA = 11;


// Pines de los joysticks
const int JOY_BASE = A2;
const int JOY_ESLABON = A1;
const int JOY_PINZA = A0;


// Variables para suavizar las lecturas
float lecturaBase = 512;
float lecturaEslabon = 512;
float lecturaPinza = 512;


void setup() {


  Serial.begin(9600);


  servoBase.attach(PIN_BASE);
  servoEslabon.attach(PIN_ESLABON);
  servoPinza.attach(PIN_PINZA);


  servoBase.write(90);
  servoEslabon.write(90);
  servoPinza.write(0);


}


void loop() {


  // BASE
  int valorBase = analogRead(JOY_BASE);
  lecturaBase = lecturaBase * 0.9 + valorBase * 0.1;
  int angBase = map((int)lecturaBase, 0, 1023, 0, 180);
  servoBase.write(angBase);


  // ESLABÓN
  int valorEslabon = analogRead(JOY_ESLABON);
  lecturaEslabon = lecturaEslabon * 0.9 + valorEslabon * 0.1;
  int angEslabon = map((int)lecturaEslabon, 0, 1023, 0, 180);
  servoEslabon.write(angEslabon);


  // PINZA
  int valorPinza = analogRead(JOY_PINZA);
  lecturaPinza = lecturaPinza * 0.9 + valorPinza * 0.1;
  int angPinza = map((int)lecturaPinza, 0, 1023, 80, 0);
  servoPinza.write(angPinza);


  Serial.print("Base: ");
  Serial.print(angBase);
  Serial.print(" | Eslabón: ");
  Serial.print(angEslabon);
  Serial.print(" | Pinza: ");
  Serial.println(angPinza);


  delay(10);


}

				
			

Pruebas Experimentales

Ha llegado el momento de comprobar el funcionamiento del brazo robótico con Arduino y joystick. Al encender el sistema, los servomotores adoptarán la siguiente posición inicial:

  • Base: posicionada en 90°, apuntando al frente.
  • Eslabón: ubicado en 90°, quedando perpendicular a la base.
  • Pinza: completamente abierta.

Ahora verifica el funcionamiento de cada joystick:

  • Joystick izquierdo (eje horizontal): mueve la base. Al desplazar el joystick hacia la izquierda, la base girará hacia la izquierda; al moverlo hacia la derecha, girará hacia la derecha.
  • Joystick izquierdo (eje vertical): controla el eslabón. Al empujar el joystick hacia arriba, el brazo subirá; al moverlo hacia abajo, el brazo bajará.
  • Joystick derecho (eje vertical): controla la pinza. Al empujar el joystick hacia arriba, la pinza se cerrará; al moverlo hacia abajo, se abrirá.

Durante las pruebas notarás que los movimientos son más suaves gracias al filtro de media móvil exponencial (EMA), el cual reduce las pequeñas variaciones de los joysticks y proporciona un control más cómodo durante la operación del brazo robótico.

Si alguno de los movimientos se encuentra invertido, simplemente modifica el orden de los valores en la función map() correspondiente a ese servomotor para adaptar el sentido de giro a tu montaje.

 

🧠 IA Educativa desde cero

Libro de proyectos de inteligencia artificial para niños con contenido educativo práctico y creativo

Explora nuestros eBooks educativos con proyectos guiados paso a paso para enseñar inteligencia artificial desde casa o en el aula.

Ingrese a su cuenta