LOS JOYSTICKS

Objetivos

 

  • Presentar el joystick.
  • Aprender a conectarlo correctamente.
  • Utilizar el joystick para mover objetos en el escenario.
  •  

    Material requerido

     

    Imagen de Arduino UNO

    Arduino Uno o compatible y con el firmware para S4A cargado.


    conexiones
     Una Protoboard mas  cables.
    componente Un Joystick.
    Img_3_5 Una resistencia de 330 Ohmios.
    Img_3_4 Una Protoboard.

    Material requerido

     

    Un joystick está compuesto por un par de potenciómetros (uno para el eje X y otro para el Y) que transforma el movimiento en X e Y en una señal eléctrica proporcional a su posición, y que si dejamos de hacer fuerza en él vuelve a suposición central. Además suelen incluir un botón al presionarlos.

    Tiene 5 pines: X, Y, 5V, GND y el botón (que se suele llamar SW, que viene de switch).

    El montaje es muy sencillo teniendo en cuenta que ya hemos montado cada parte del joystick por separado en otras sesiones, pero tenéis que tener un poco de cuidado al conectar la salida SW del botón.

    Si conectáis la salida SW directamente a una entrada digital de Arduino para leer su estado no os funcionará correctamente.

    En realidad el pin SW y el de GND se comportan al conectarlos como si fueses los pines de un pulsador, como el que vimos en la sesión 6. Por lo tanto, tendremos que conectarle una resistencia en PULL UP o PULL DOWN, o veremos como el valor que leamos no dejará de fluctuar.

    El diagrama eléctrico con la resistencia en PULL UP sería el siguiente:

    diagrama conexión joystick

    Y este sería el montaje en la protoboard:

    joystick resistencia protoboard 

    JOYSTICK DIGITAL

     

    Primero vamos a programar el joystick de forma que no importe cuánto movamos la palanca en una dirección, es decir, moveremos los objetos en la dirección que queramos pero a una velocidad siempre fija.

    También haremos que al pulsar el joystick dejemos un sello en el escenario con la forma del  disfraz del objeto. Podéis utilizar el disfraz que queráis. Yo he importado un dibujo de un murciélago.

    Empezaremos borrando el escenario y fijando la posición del objeto como ya sabemos de otras sesiones.

    fijar joystick escenario s4a

    Ahora vamos a programar el movimiento en el eje X. Nos fijaremos en la tabla de valores de los sensores para ver el valor que lee la entrada analógica A1 (a la que hemos conectado el eje X del joystick) cuando el joystick está en el centro. En mi caso lee 500.

    Si movemos el joystick a la izquierda, el valor que leerá A1 será menor que el valor en reposo, y mayor si lo movemos hacia la derecha. Por lo tanto, lo que haremos es que si el valor que leemos está por debajo del valor en reposo se mueva el objeto hacia la izquierda del escenario; y si está por encima lo mueva hacia la derecha.

    jostick scratck eje x

    • Le hemos dado un poco de margen al límite para que no detecte cambios demasiado pequeños.
    • Podéis elegir la velocidad que queráis para moverse cambiándola en el bloque “sumar … a x”.

    Haremos lo mismo con el eje Y, pero teniendo en cuenta que al mover el joystick hacia abajo aumenta el valor que leemos en A2, y desciende al moverlo hacia arriba.

    movimiento digital joystick scratch

    Nos queda de incluir en el programa que si pulsamos el joystick, conectado a la entrada digital D2, haga un sello con la imagen del disfraz que tiene el objeto. Le añadiremos un bloque de espera para que no detecte varias pulsaciones como ya sabemos.

     

    joystick digital boóon scratch

    • Como hemos conectado la resistencia al pulsador en PULL UP, la entrada D2 leerá true cuando no esté presionado y false cuando presionemos el pulsador.

    Podéis descargar el programa completo aquí: Joystick.

     

    Si probáis un poco tendréis algo como esto:

    sellar disfraz joystick scratch 

    JOYSTICK ANALÓGICO

     

    Una de las características del joystick es que podemos controlar la intensidad con que lo movemos hacia cualquiera de las direcciones. Para conseguir aprovecharnos de ello vamos a tener que modificar un poco la programación.

    Vamos a empezar ajustando la velocidad del movimiento en el eje X. Para que la velocidad a la que se mueva vaya de 0 a 10, tanto a la derecha como a la izquierda, haremos lo siguiente:

  • Restamos a la lectura actual el valor de la lectura con el joystick en reposo; en mi caso 500. De esa forma la velocidad será 0 cuando esté en reposo.
  • Para que la velocidad máxima sea más o menos 10, dividiremos el resultado de la operación anterior entre 50. De esta forma cuando en el eje X el valor sea máximo, o sea, 102-500=523; la velocidad será 523/50= 10,46.
  • Cuando el valor sea mínimo, 0-500=-500. Al dividirlo entre 50 -500/50=-10.
  • Si queréis que la velocidad máxima sea mayor sólo tenéis que cambiar 50 por un número más pequeño, y más grande para que sea menor.
  •  
    movimiento analógico x scratch

    Hacemos lo mismo con el eje Y, teniendo en cuenta que en reposo tenemos el valor 513, y que queremos invertir el movimiento como en el apartado anterior. Le podéis añadir también la capacidad de hacer un sello del objeto.

    movimiento analógico scratch

    Podéis descargar el programa completo aquí: Joystick analógico. 

    RESUMEN DE LA SESIÓN

     

    En esta sesión hemos aprendido varias cosas importantes:

  • Sabemos cómo conectar correctamente un joystick.
  • Cómo detectar la dirección en la que se mueve.
  • Hacer que la velocidad de movimiento de un objeto sea proporcional al desplazamiento del joystick.
  • Como utilizar el pulsador que incluye el joystick.
  •   

    Deja una respuesta