Objetivos

 

  • Aprender a crear varios objetos tipo servo.
  • Utilizar un josytick para controlar dos servos.
  • Aprender a controlar el brazo robótico de dos ejes.
  •  

    Material requerido.

     

    Vista principal de un arduino uno Arduino UNO
     Bazo robótico dos ejes  Soporte pan & tilt
     Vista lateral  Diodo Laser
     Vista principal  2 x Servo SG90
    Img_3_6 cables de Protoboard

     

    INTRODUCCIÓN Y MONTAJE

     

    Si ya habéis montado la estructura sabréis que para poder mover el brazo robótico vamos a utilizar dos servos. Uno se encargará del movimiento en el eje X (horizontal) y el otro en el eje Y (vertical).

    Ya hemos trabajado con servos anteriormente, así que realmente no vamos a aprender nada nuevo. La única novedad que vamos a introducir es que vamos a controlar a la vez dos servos, y hasta ahora habíamos controlado sólo uno, ya sea con un potenciómetro o un joystick.

    En este caso vamos a usar un joystick, porque como sabéis tiene dos ejes de movimiento, que nos viene perfecto para controlar los dos servos. Si no lo habéis seguido este cuso regularmente  (o tenéis un poco olvidados esos temas) os recomendamos que echéis un ojo a estas sesiones, en las que hablábamos de los joysticks, los servos y, por supuesto, de cómo montar el soporte del brazo robótico de dos ejes:

  • Joystick y servo.
  • Montaje estructura brazo robótico.
  •  

    El esquema de conexión y el montaje en la protoboard quedarían tal que así:

    diagrama electrónico joystick servos

    conexiones joystick servos

     

    PROGRAMA DE CONTROL

     

    El programa también va a ser básicamente el mismo que utilizamos en la sesión de la que hablamos, pero teniendo todo por duplicado.

    Lo primero es incluir la librería y crear los objetos tipo servo, que en este caso serán dos. Además crearemos una variable “angulo” para cada servo para guardar su posición, y una variable “salto”, con la que fijaremos el número de grados que se moverá en cada loop cuando estemos moviendo el joystick.

    #include <Servo.h> // Incluir la librería Servo
    Servo servo1; // Crear un objeto tipo Servo llamado servo1
    Servo servo2; // Crear un objeto tipo Servo llamado servo2
    int anguloX = 90 ; // Empezamos en el centro
    int anguloY = 90 ;
    int salto = 3 ; // Controla el salto por movimiento

    Ya en el setup especificaremos a qué pin está conectado cada servo:

    void setup()
    {
     servo1.attach(7) ; // Conectar servo1 al pin 7
     servo2.attach(8) ; // Conectar servo1 al pin 8
    }

    Y en el loop lo que hacemos es comprobar si el joystick se ha movido en alguno de los ejes, y en caso de que lo haya hecho, sumar o restar la cantidad de grados definida en variable “salto” a la posición de los servos que correspondan.

    void loop()
    {
     //EJE X
     int p = analogRead(A0);
     if ( p < 400 ) // Si la lectura es menor de 400
     anguloX = anguloX - salto ; // disminuimos el angulo
     else if (p > 600) // Si mayor de 600
     anguloX = anguloX + salto ; // Aumentamos el angulo
     servo1.write(anguloX); // Y este es el que mueve el servo 1
     delay (50); // Este delay regula la velocidad del movimiento
    
     //EJE Y
     int q = analogRead(A1);
     if ( q < 400 ) // Si la lectura es menor de 400
     anguloY = anguloY - salto ; // disminuimos el angulo
     else if (q > 600) // Si mayor de 600
     anguloY = anguloY + salto ; // Aumentamos el angulo
     servo2.write(anguloY); // Y este es el que mueve el servo 2
     delay (50); // Este delay regula la velocidad del movimiento
    }

    Podéis descargar el programa completo aquí: brazo_robot_con_joystick

    ¡Accede al contenido!

    Y os dejamos un vídeo con el resultado:

     

    Resumen de la sesión

     

  • Hemos aprendido a controlar varios servos a la vez.
  • Utilizamos ambos ejes de un joystick para ello.
  • Hemos visto cómo funciona el brazo robótico de dos ejes.
  •  

    Deja una respuesta