Conectar Processing y Arduino mediante Comunicación Serial.

Processing es una plataforma que nos permite la creación de arte digital interactivo lanzada al público de manera gratuita en 2001. El lenguaje que utiliza es Java y es Open Source.
Es un software muy sencillo de utilizar además de tener fácil acceso a sus referencias, tutoriales, ejemplos, foros, etc.

Arduino al igual que processing es una plataforma relativamente sencilla de utilizar basada en la electrónica que también tiene una gran cantidad de documentación. Sin embargo para disfrutar completamente de esta plataforma es necesario contar con una tarjeta de Arduino, para nuestra suerte no son demasiado costosas y hay para todas las necesidades.
Para este tutorial utilize el software de Processing versión 3.2.4, el software de Arduino 1.8.1 y una tarjeta Arduino Uno.
Aquí puedes descargar Processing: https://processing.org/
Y aquí adquirir una Tarjeta de Arduino y el Software para programarla: https://www.arduino.cc/


¡Poniendo a volar la imaginación!
En primer lugar se debe tener una idea de que tipo de videojuego queremos crear. Este tutorial no tiene como objetivo el de enseñarte a programar o lógica de videojuegos, pero puede servir como punto de referencia para realizar tus creaciones. Para este ejemplo cree un juego simple en 2D que consiste en lanzar una bomba para destruir unos edificios. El código completo lo dejaré al final del tutorial.

PlayingGod
Preparando Processing para Arduino.
Dentro de processing nos vamos a la opción “Sketch” de la barra de herramientas, después seleccionamos “Import Library…”(Importar Biblioteca) y seleccionamos “Serial”.
Esto también se puede hacer de manera manual escribiendo la siguiente linea de código:

  • import processing.serial.*;

Debemos crear un objeto Serial para nuestro puerto, eso se hace de la siguiente manera:

  • Serial puerto;

Podemos ponerle cualquier nombre que queramos a este objeto, yo elegi “puerto” para identificarlo facilmente.
Conociendo mi Puerto Serial.
En Linux abriremos Arduino y conectaremos nuestra tarjeta de Arduino a nuestra computadora, en el software seleccionamos en la barra de herramientas la opción de “Tools” y nos aseguraremos que donde dice “Board:” tengamos el nombre de nuestra tarjeta, si no es así damos click y seleccionamos nuestra tarjeta de la lista. Si el nombre de nuestra tarjeta es correcto en la parte que dice “Port:” tendremos el nombre de nuestro Puerto Serial que debemos colocar en Processing (no debemos incluir el nombre de nuestra tarjeta).
En Windows debemos ir a Propiedades de nuestro equipo, en la ventana que se abrirá seleccionamos Administrador de Dispositivos, desplegamos Puertos (COM y LPT) y nos aparecerá el número de puerto de nuestra tarjeta de Arduino. Ahora en Arduino abrimos la opción “Tools” y en donde dice “Port:” seleccionamos dicho número de puerto. Este mismo es el que utilizaremos en Processing.
Ahora dentro de nuestro método Setup() agregamos lo siguiente:

  • puerto = new Serial(this, “/dev/ttyACM0”, 9600);

“/dev/tty/ACM0” es el nombre de mi puerto donde conecte mi tarjeta de Arduino.
Utilizando la Comunicación Serial.
¡Ya tenemos todo listo para comenzar con la parte divertida! Para este ejemplo utilize botones para el lanzamiento de las bombas, uno por cada edificio. El código de Arduino para transmitir por el puerto Serial es de la siguiente manera:
En nuestro Setup() agregamos la siguiente línea:

  • Serial.begin(9600);

El número dentro del parentesís debe ser el mismo que el que pusimos en Processing.
Para envíar información al puerto Serial, dentro de nuestro loop() colocamos:

  • Serial.print(“lo que quiero imprimir”);

Colocando entre los parentesís lo que se quiere imprimir dependiendo de lo que queramos lograr.
Por ejemplo si queremos saber si un botón conectado al pin 2 ha sido presionado podemos hacer lo siguiente:
int pin =  2;
int estado = 0;
void setup(){
       pinMode(pin, INPUT);
       Serial.begin(9600);
}

void loop(){
        estado = digitalRead(pin);
        if(estado == HIGH){
              Serial.print(“1”);
        }
}
Con esto cada vez que presionemos el botón aparecerá un 1 en el monitor serial.
serial
* El código completo utilizado en Arduino para este ejemplo está al final del tutorial.
Comprobamos que nuestro código es correcto dando click en el botón:
compilar
Si lo está, cargamos el programa en nuestra tarjeta con el botón:

cargar

Ahora para leer el puerto serial desde Processing debemos agregar esto a nuestro código:
if(puerto.available() > 0){
      int dato = puerto.read
      //hacer lo que queramos hacer con el dato leído
}
Así solo leeremos cuando el puerto contenga información.
Siguiendo el ejemplo anterior, podemos hacer algo como lo siguiente:
if(puerto.available() > 0){
      int dato = puerto.read();
      if(dato > 0){
            lanzarBomba();
      }
}

Para probar nuestras creaciones debemos tener conectada la tarjeta de Arduino a nuestra computadora y tener el programa de la comunicación Serial cargado en la tarjeta. Por último solamente damos al botón de “Play” en Processing y ¡A jugar!
Lo demás ya es cuestión de imaginación.
Ejemplo de Videojuego Interactivo (Incluye prototipado en la tarjeta de Arduino):
https://drive.google.com/file/d/0B9RJ31wgJwMZQTVDQ3JLVDh1RFk/view?usp=sharing

Deja un comentario