PROYECTO Nº 4: Controlar 2 servomotores (de 0º a 180º) con 1 joystick

Aprende cómo programar un circuito para controlar la posición de 2 servomotores en función de la posición de un único joystick. Recuerda que un joystick está compuesto por 2 potenciómetros, por lo que cada potenciómetro debe asociarse a cada servomotor. La posición del servomotor variará de 0º a 180º en función del movimiento del joystick, de izquierda a derecha.

NIVEL DE DIFICULTAD: Intermedio.

DURACIÓN DE LA ACTIVIDAD: 30 min.

LISTA DE MATERIALES:

  • 1 Joystick
  • 2 Servomotores
  • 1 Placa Build&Code UNO
  • 1 Placa sensor Build&Code
  • 1 Cable USB – USB tipo B
  • Ordenador

CONEXIONES:

  1. Conecta el joystick a los puertos analógicos A0 y A1 de placa sensor Build&Code.
    Conexiones con el puerto analógico A0:
    -Conecta el GND al pin G.
    -Conecta el Vcc al pin V.
    -Conecta el VRx al pin S.
    Conexiones con el puerto analógico A1:
    -La VRy al pin S.
    Como puedes recordar, conectamos el joystick a los puertos analógicos A0 y A1 ya que está compuesto por potenciómetros, que son sensores analógicos.
  2. Conexión de los servomotores a la placa sensor Build&Code.
    -Conecta el servomotor S1 al puerto digital 6. Conecta el cable marrón al pin G, el cable rojo al pin V y cable el naranja al pin S.
    -Conecta el servomotor S2 al puerto digital 9. Conecta el cable marrón al pin G, el cable rojo al pin V y el cable naranja al pin S.
    Conectamos los servomotores a estos puertos digitales ya que tienen una salida  PWM que será la encargada de hacer girar más o menos el servomotor en función de la lectura recibida del joystick.
  3. La imagen a continuación muestra cómo son las conexiones. Úsala como guía.

CÓDIGO DE PROGRAMACIÓN

Puedes realizar esta actividad utilizando el software Arduino y otros software de programación por bloques compatibles. A continuación, encontrarás el código de programación necesario.

Código Arduino

Realizarás un programa que estará constantemente leyendo la información de las 2 salidas del joystick, y en función de la lectura que mida del joystick, hará mover al servo a una u otra posición. Cuando sueltes el joystick, el servo volverá a la posición de origen.

Antes de comenzar, recuerda que:

  • Al ser un sensor analógico, un potenciómetro hará lecturas de 0 a 1023, en función de cuánto lo hayas girado.
  • Los pines digitales PWM estarán trabajando como un pin de salida, pero en vez de dar un valor alto o bajo de manera constante, éstos pueden hacer cambios muy rápidos de valores para jugar con valores medios, lo cual permite emitir distintos niveles de voltaje de salida.
  • Para trabajar con servomotores, usarás la librería de Servomotor “#include”, ya que facilitará mucho el poder trabajar con los servomotores.
  • Un servomotor puede moverse de 0º a 180º, por lo que deberás relacionar los valores de lectura analógicos con los valores de movimiento del servo usando la instrucción “map”.

Ahora, sigue estos pasos:

  1. Descarga el software Arduino y realiza el proceso de instalación.
    1.2 Configura el programa para cargar programas en la placa controladora Build&Code UNO. Encontrarás las instrucciones para hacerlo en la guía de Primeros Pasos del Arm Robot.
  2. Abre el programa Arduino y, una vez en él, copia el siguiente programa:

    #include <Servo.h>
    
    int valorX = 0; // LECTURA DEL EJE X
    int valorY = 0; // LECTURA DEL EJE Y
    int pinJX = A0; // PIN ANALOGICO A0 DEL EJE X
    int pinJY = A1; // PIN ANALOGICO A1 DEL EJE Y
    Servo motor1; // DECLARAR SERVO 1
    Servo motor2; // DECLARAR SERVO 2
    int grados1 = 0; // GRADOS DEL SERVO 1
    int grados2 = 0; // GRADOS DEL SERVO 2
    
    
    void setup() {
    Serial.begin(9600); // ACTIVA LA COMUNICACIÓN CON LA PLACA BUILD&CODE UNO
    motor1.attach (6); // PIN DIGITAL PWM 9 DONDE ESTÁ CONECTADO EL SERVO 1
    motor1.write (0);
    motor2.attach (9); // PIN DIGITAL PWM 10 DONDE ESTÁ CONECTADO EL SERVO 2
    motor1.write (0);
    }
    
    void loop() {
    
    valorX = analogRead (pinJX); // LECTURA DEL PUERTO ANALOG. A0 DEL EJE X
    valorY = analogRead (pinJY); // LECTURA DEL PUERTO ANALOG. A1 DEL EJE Y
    
    grados1 = map(valorX, 0, 1023, 0, 180);
    grados2 = map(valorY, 0, 1023, 0, 180);
    
    motor1.write (grados1); // ENVIAR LOS GRADOS AL SERVO 1
    motor2.write (grados2); // ENVIAR LOS GRADOS AL SERVO 2
    
    //Imprimimos por pantalla las variables con las que trabajamos
    Serial.print (valorX); // MOSTRAR POR PANTALLA LOS VALORES DEL EJE X DE 0 A 1023
    Serial.print("\t");
    Serial.print (valorY); // MOSTRAR POR PANTALLA LOS VALORES DEL EJE Y DE 0 A 1023
    Serial.print("\t");
    Serial.print (grados1); // MOSTRAR POR PANTALLA LOS GRADOS DEL EJE X DE 0 A 180
    Serial.print("\t");
    Serial.println(grados2); // MOSTRAR POR PANTALLA LOS GRADOS DEL EJE Y DE 0 A 180
    }
    

Haz clic en la “lupa” del programa en Arduino para observar cómo las variaciones del joystick afectan a los grados de posición de los servomotores.

Código para software de programación por bloques compatible

  1. Descarga el software y realiza el proceso de instalación.
    1.2 Ejecuta el software de programación por bloques compatible.
    1.3 Configura el programa para cargar programas en la placa controladora Build&Code UNO. Encontrarás las instrucciones para hacerlo en la guía de Primeros Pasos del Arm Robot.
  2. Abre el programa y, una vez en él, copia el siguiente código:
  3. Para variar el ángulo del servomotor con el movimiento del joystick harás la siguiente operación matemática:

    Valor de servomotor = (Valor del joystick * valor más grande servomotor)  / valor más grande del  joystick

    Servomotor S1 = (lectura del puerto analógico A0 * 180)/1023

    El servomotor funciona con valores de 0 a 180 y el joystick da valores de 0 a 1023. Tienes que relacionar los valores del joystick para poder mover el servomotor.

Para activar el programa debes de configurar la placa controladora de una forma distinta. Sigue los pasos a continuación:

  1. Dirígete al apartado Placas y selecciona Arduino UNO.
  2. Ve al apartado Conectar y selecciona Puerto Serie. Luego, selecciona el puerto COM al cual está conectada la placa controladora Build&Code UNO.
  3. En el mismo apartado Conectar, selecciona Actualizar Firmware y espera que se haya finalizado la carga del programa de comunicación.

Una vez realizado el programa, clica en la bandera verde, mueve el joystick y observa los movimientos que hace el Arm robot. 

RESULTADO DEL EJERCICIO

El programa estará leyendo constantemente la información de las 2 salidas del joystick y, en función de la lectura que mida del joystick, hará mover los  servomotores hacia una u otra posición, de 0º a 180º (el tope de movimiento). Cuando sueltes el joystick, los servomotores volverán a la posición inicial o de reposo, que será 90º.

6 0

0