ARDUINO+JOYSTICK+SCRATCH S4A



Hoy vamos a testear un pequeño Joystick e implementarlo a un proyecto de manipulación en SCRATCH S4A, tu podras implementar este Joystick en cualquier otro proyecto bajo el mismo fundamento de código.


MATERIALES

1 Tarjeta Arduino (Uno, Nano o Mega)
1 Joystick KEYES_SJOYS
1 Protoboard
1 Juego de cables M-M



DESCRIPCIÓN

Joystick KEYES.- Es un modulo de control en 2D, compatible con Arduino. Nos permite tener un dato analógico en los ejes X e Y, esto a través de la manipulación de una palanca que se encuentra conectada físicamente a un preset produciendo un divisor de voltaje al realizar los desplazamientos en la palanca.

El Joystick tiene una posición por default que es el centro y existen desplazamientos tanto para el eje X e Y, en cada movimiento el dispositivo envía una variación de voltaje, permitiéndonos con esto poder identificar la posición exacta del joystick a través de la interpretación del voltaje en los puertos analógicos del Arduino.



RECONOCIENDO PATRONES DEL JOYSTICK

Como primer paso, realizaremos un monitoreo del joystick a tráves del Monitor Serial del software de Arduino, para ello realizaremos la conexión del siguiente circuito.

Pines del Joystick



Circuito Joystick + Arduino





Código de Lectura del Joystick

Escribiremos un código que nos permita leer el comportamiento del Joystick, para ello usaremos el puerto serial de la tarjeta arduino e imprimiremos los datos en el Monitor Serial del Software.


/**********************************************/*
int ejeX; //definimos las variables ejex y ejey
int ejeY;
void setup()
{
 Serial.begin(9600);   //iniciamos comunicacion serial a 9600Baudios
}
void loop()
{
  ejeX = analogRead(A0);  //leemos el puerto analogico A0 y lo cargamos a ejex
  ejeY = analogRead(A1);
  Serial.print("Posicion X = ");  //imprimir texto en monitor serial
  Serial.print(ejeX);             //imprimir dato de variable
  Serial.print(" Posicion Y = ");
  Serial.println(ejeY);
  delay(500);                     //Retardo de Lectura e Impresion
}
/**********************************************/*

Una vez compilado y enviado a la tarjeta Arduino, abrimos el monitor serial del programa y veremos que esta imprimiendo información, tenemos que manipular el Joystick para recibir o modificar los datos de la ventana del monitor serial.

Para mi caso, la información presentada fue la siguiente:

Eje x    Centro=516; Izquierda= 0; Derecha=1023;
Eje y    Centro=516; Arriba=0; Abajo=1023;





Pin SW del Joystick

El Joystick cuenta con la opción de un botón selector asignado al pin SW, la salida de este puerto esta controlado por un push-button, por lo que hay que configurarlo en modo PULL-UP. Para esto tendremos que agregar una resistencia de 10K conectado al puerto SW, como se muestra a continuación.





SCRATCH-S4A

Para dar aplicación a esta interfaz usaremos un software que se llama Scratch-S4A desarrollado por el MIT, esto servirá para dar a conocer a los usuarios de este blog que podemos manipular hardware y aplicarlo al software. Por el momento esto sera un paso a paso, ya que posteriormente creare una entrada especial para este novedoso software.

Scratch-S4A es una software que fue creado para crear una interrelación entre Arduino y Scratch, para ello se modifico la plataforma de SCRATCH creando el S4A que permite poder desarrollar software o herramientas interactivas a través de la manipulación de bloques gráficos identificados por acción y color, es un software muy intuitivo y a nivel educativo ofrece grandes ventajas y características.

Por hoy desarrollaremos un pequeño software que nos permitirá mediante el Joystick manipular un objeto en pantalla. Para esto debemos seguir todos los puntos que se describen a continuación.

PASO1.- Instalación de S4A

Necesitamos descargar el Software, aunque es software libre sigue siendo rebuscado, tu solo ubícate en la sección de descargas de la pagina http://s4a.cat, ahí podrás encontrar la versión adecuada para tu sistema operativo. Una vez descargado a instalarlo y espera los siguientes pasos.

PASO2.- Cargar el Firmware

Para que S4A pueda reconocer tu tarjeta Arduino, primero debes cargar un pequeño firmware a tu tarjeta Arduino UNO o NANO, por el momento solo funciona con estas dos versiones.

Descargar Firmware

Abre este archivo con el software de Arduino versión 0022, tiene que ser esta versión para que no te arroje errores, si no la tienes descargala:

Descargar Arduino V.0022

Ahora si abre el firmware y envialo a tu tarjeta Arduino, no debe marcar ningún error.

PASO3.- Abrir S4A

Si todo salio bien en el Paso2, llego el momento de probar que S4A detecte tu tarjeta Arduino. Abre el software S4A // aparecerá una ventanita que dice "Buscando placa" espera hasta que el mensaje desaparezca.




Cuando S4A detecta tu tarjeta Arduino, automáticamente desaparecerá el mensaje y S4A empezara a leer los puertos de tu tarjeta mostrándote en pantalla el contenido de cada lectura.



Empezamos arrastrando objetos a nuestra sección de diseño hasta armar la siguientes estructura:



Si recordamos el código para detectar los movimientos de los ejes x e y, fueron conectados a los puertos analógicos (ejex-A0-Analog0  y ejey-A1-Analog1), por lo que al meterlos dentro de un if-si podemos compararlo con los datos medidos (0-izquierda-arriba  y  1023-derecha-abajo).

Por lo tanto cuando VRx cambie de centro a izquierda o del centro a la derecha el robot se moverá 10 pasos positivos o negativos sobre el eje x.

Cuando VRy cambie de centro a arriba o del centro a abajo, el robot se moverá 10 pasos positivos o negativos sobre el eje y.

En la sección de disfraces cree dos imágenes llamados custome1 y custome2, que son las imágenes que cambiaran cuando presione el botón SW del Joystick que para S4A se llama sensor Digital2, conectado al port2 digital de Arduino.

custome1

custome2


Dejo el programa, para que lo monten y prueben:

Joystick_S4A

VÍDEO: https://www.youtube.com/watch?v=hkFOu2WMv-c








+