Objetivos
Material requerido
Arduino Uno o compatible y con el firmware para S4A cargado. | |
Una Protoboard mas cables. | |
Un Joystick. | |
Una resistencia de 330 Ohmios. | |
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:
Y este sería el montaje en la 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.
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.
- 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.
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.
- 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:
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:
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.
Podéis descargar el programa completo aquí: Joystick analógico.
RESUMEN DE LA SESIÓN
En esta sesión hemos aprendido varias cosas importantes: