You are on page 1of 5

Javier Mayns Martorell

Comunicacin Arduino-Processing

COMUNICACIN ARDUINO-PROCESSING
Javier Mayns Martorell. Mster en Artes Visuales y Multimedia 2010-2011 Resumen: El propsito del ejercicio planteado es crear un interfaz de usuario mediante la cual, con el movimiento de las manos, se pueda transformar una imagen el la pantalla del ordenador. El usuario portar unos guantes que incluirn un acelermetro por cada palma y un sensor de presin por cada pulgar.

a)

b)

Fig. 1. a) Ejes de los acelermetros. b) Posicin de los sensores de presin.

Con estos guantes se podr mover las manos con total libertad sin influir en la imagen vista en el monitor. Ser solamente cuando ambos sensores de presin estn pulsados cuando los movimientos relativos de una mano respecto de la otra influyan en el objeto. Para hacer esto posible se necesita captar los datos tanto de los acelermetros como de los sensores de presin mediante Arduino y transferirlos a la CPU para poder operar con ellos.

Javier Mayns Martorell

Comunicacin Arduino-Processing

Fig. 2. Diagrama de interaccin.

Conexiones: La placa debe estar conectada al ordenador mediante USB. Los acelermetros se comunican con Arduino mediante 5 conexiones: Entrada de voltaje (5V). Toma de tierra (Ground). Eje X. Eje Y. Eje Z.

Estos tres ltimos comunicadores se conectan a los pines analgicos de la placa. Los sensores de presin tienen dos conectores: uno para recibir el voltaje (5V) y otro para conectarlos a un pin digital, no sin antes empalmar este ltimo conector con una resistencia (1K) que conectar con la toma de tierra (Gnd).

Javier Mayns Martorell

Comunicacin Arduino-Processing

Fig. 3. Diagrama de conexiones.

Arduino: El programa para Arduino asigna una serie de variables. A cada dato trasmitido por cada eje de cada acelermetro le asignamos un nombre como entero (int) al igual que a cada dato transmitido por los sensores de presin. Esto se consigue dicindole a la placa que lea los datos que le llegan por cada pin, ya sea analgico o digital. Mediante una condicional le decimos que si los botones estn presionados se lleven a cabo las siguientes tareas: Recoger los datos de los acelermetros y asignarle unas variables. Esperar unos pocos milisegundos. 3

Javier Mayns Martorell

Comunicacin Arduino-Processing

Volver a registrar los datos de los acelermetros. Nombrarlos con otro nombre de variables. Restar los segundos a los primeros para cada acelermetro para saber que posicin relativa han cambiado durante esos milisegundos de espera. Comparar la diferencia de posiciones de los dos acelermetros eje por eje. Si no se han movido asignar un valor 0 a otra variable. Si se han movido en valores positivos segn los ejes, asignar a esta variable un valor positivo. Si se han movido en valores negativos segn los ejes, asignar valores negativos a la variable. Estas ltimas variables se llamarn: estadoxi=para la diferencia de posicin de la mano izquierda en el eje X. estadoxd=para la diferencia de posicin de la mano derecha en el eje X. estadoyi=para la diferencia de posicin de la mano izquierda en el eje Y. estadoyd=para la diferencia de posicin de la mano derecha en el eje Y. estadozi=para la diferencia de posicin de la mano izquierda en el eje Z. estadozd=para la diferencia de posicin de la mano derecha en el eje Z.

La mencin de estas variables es simplemente para clarificar los siguientes pasos. Podran llamarse de cualquier otro modo. Comunicacin Arduino-Processing1: La conexin entre estos dos programas se hace mediante datos numricos en cadenas de caracteres que se registran al ser introducidos en la CPU por medio del puerto COM con el que Arduino se comunica con ella. La cantidad de datos numricos transmitidos de Arduino a la CPU y viceversa se hace a 9600 baudios, cosa que se especifica en el cdigo con la accin Serial.begin(9600); en la parte de void setup(). Para ello, en el programa de Arduino debe indicarse que se impriman en pantalla los valores con los que vamos a trabajar en Processing mediante una accin Serial.print(); en la parte de void loop () cuando ya se han realizado todas las operaciones de comparacin de datos descritas anteriormente. La manera en que deben quedar los datos escritos en la pantalla de Arduino debe ser la siguiente: estadoxi,estadoxd,estadoyi,estadoyd,estadozi,estadozd estadoxi,estadoxd,estadoyi,estadoyd,estadozi,estadozd Ntese que no deben haber espacios entre las comas y el nuevo dato y que cuando finaliza la serie de datos debe continuarse en la siguiente lnea. El orden de las variables puede ser distinto, mientras se sepa cmo operar con ellas en Processing. Una vez completado el cdigo en Arduino se trabajar el resto en Processing.
1 La forma de comunicar estos dos programas se ha implementado a partir del tutorial Virtual Color Mixer disponible en la pgina web de Arduino (http://www.arduino.cc).

Javier Mayns Martorell

Comunicacin Arduino-Processing

En el cdigo de este programa se debe implementar una librera llamada Serial. Mediante una variable, se le indica a Processing que recoja los datos transferidos por el puerto COM con el que se comunica Arduino. Si no se sabe cul es este puerto se le puede decir a Processing que imprima en pantalla una lista con los puertos activos. Si no se tiene ningn otro puerto activado, por defecto el puerto COM deseado aparece el primero y nico de la lista mostrada. Una vez sabido e indicado el puerto, se le dice al programa que reciba los datos en paquetes. El paquete de datos tendr su fin en el cambio de lnea de la lista de caracteres emitida por Arduino. Processing Para interpretar los datos en Processing, una vez finalizada la parte de void draw(), se crea una funcin de evento que depender del registro del puerto COM. Con una accin de indica que lea los datos recibidos por el puerto y que los almacene en una cadena de caracteres que termine cuando termina la lnea de datos. Se le dice a Processing que divida la cadena de datos siempre que encuentre una coma entre datos. Con lo cual quedan una serie de cifras numricas que se almacenan en una lista creada en Procesing, donde cada dato ocupa una posicin. Una vez hecho esto, a cada dato se le puede llamar de la forma que se desee. Cuando se hace esto ya se puede operar en Processing con estas variables segn las funciones necesarias en cada caso.

You might also like