Qué es Processing
Processing es un lenguaje de programación y también es un IDE. Fue desarrollado para creadores gráficos sin conocimientos de programación. El hecho de estar asociado a un IDE no es algo menor ya que, a diferencia de otros marcos de trabajo con una finalidad equiparable a Processing, como openFrameworks, resulta más sencillo para los usuarios ajenos al desarrollo informático iniciarse en su uso sin verse intimidados por un producto complejo y sin necesidad de otros componentes para empezar a trabajar.
Este modelo de funcionalidad y simplicidad del IDE de Processing, PDE en la terminología que usa Processing, ha servido como base para otros sistemas de desarrollo, de los que, seguramente, Arduino es el más difundido, y también como inspiración para otros, ya sea directamente o desde sus derivados.
Además de servir a artistas multimedia para realizar producciones interactivas, Processing es una excelente herramienta con la que iniciarse en la programación y por tanto, puede ser también el primer paso del itinerario de aprendizaje de la programación para un profesional con perfil de creador audiovisual, desde el que podrá saltar luego a otros lenguajes y frameworks con un esfuerzo menor.
Entre las operaciones básicas del lenguaje se encuentran las que sirven para realizar gráficos vectoriales, incluir imágenes y programar interactividad pero, gracias a las librerías que extienden sus funcionalidades (desarrolladas por el propio equipo de Processing o por terceros), se puede trabajar con audio y vídeo (incluyendo síntesis de voz con FreeTTS o visión artificial con OpenCV), controlar dispositivos electrónicos (tanto soluciones comerciales como Leap Motion o Kinect, estándares como MIDI, o equipos electrónicos genéricos usando I2C, SPI, UART…), implementar comunicaciones red con protocolos alto nivel, como HTTP o a bajo nivel, como UDP…
El lenguaje de programación Processing está basado en Java y originalmente servía para generar una aplicación Java a partir de la «traducción» del sketch (programa) en Processing. Actualmente es capaz de generar, básicamente utilizando el mismo código, programas en otros lenguajes como Python o JavaScript. Una de las ventajas de utilizar Java es que puede utilizarse fácilmente en las principales plataformas (GNU/Linux, Windows o MacOS). Además es capaz de generar aplicaciones para dispositivos móviles con Android añadiendo el correspondiente modo de programación.
Processing fue desarrollado originalmente en 2001 por Ben Fry y por Casey Reas en el Aesthetics and Computation Group del laboratorio de medios del MIT MIT media lab dirigido por John Maeda, el autor de The laws of simplicity, lo que aporta algunas pistas sobre la filosofía sobre la que se construye.
Por su vocación de código abierto y libre (licenciado bajo GNU LGPL), Processing recibe aportaciones de muchas fuentes pero principalmente se desarrolla por un pequeño grupo de voluntarios del Fathom Information Design en Boston, del UCLA Arts Software Studio en Los Angeles y del NYU Tisch School of the Arts en Nueva York.
En 2012, Ben Fry y Casey Reas, los desarrolladores de la primera versión de Processing, junto con Dan Shiffman establecen la Processing Foundation que es desde entonces la encargada de desarrollar, distribuir y promocionar el uso de Processing.
Usar Processing en proyectos de electrónica
Aunque en polaridad.es se han tratado otros temas diferentes, y es algo que se seguirá haciendo, el foco principal del blog está puesto en la programación de dispositivos microcontrolados. Puede parecer raro abrir una línea de artículos que tratan de un sistema de desarrollo como Processing, que está diseñado para creadores gráficos. Hay, al menos, tres buenas razones para hacerlo.
1 Processing sirve para desarrollar la interacción gráfica
Para un usuario, la forma que resulta más sencilla de interactuar con un dispositivo, conocer su estado y establecer su comportamiento, es por medio de una interfaz gráfica y para esas tareas, tanto para presentar los datos recabados por un dispositivo electrónico (por medio de sensores) como para elegir su funcionamiento (por medio de actuadores), Processing es una herramienta eficaz y sencilla de explotar, productiva desde estadios muy tempranos de uso (curva de aprendizaje suave) y escalable por medio de librerías propias o de terceros con la que programar la presentación gráfica y la interactividad.
2 Processing funciona en dispositivos móviles
Dada la ubicuidad actual de los dispositivos móviles, principalmente de los denominados teléfonos inteligentes (smartphones), son un interesante recurso que no se debe desdeñar ni como (súper) periférico personal de un sistema mayor (entendido también el sistema como una red de sistemas), ni como CPU principal que controle dispositivos electrónicos, ya sea directamente, por ejemplo, usando Bluetooth, ya sea integrado en un sistema de control, por ejemplo, de una red de equipos de la IoT.
Gracias al modo de programación Processing for Android es posible realizar una aplicación para Android desde Processing con unas mínimas adaptaciones respecto de una aplicación convencional y con la posibilidad de explotar, principalmente con la librería ke:tai, los recursos de un smartphone (cámara, ubicación geográfica, temperatura, orientación, iluminación…) además de comunicar con otros dispositivos para controlarlos y/o para obtener datos sobre su funcionamiento.
3 Processing es capaz de controlar directamente el hardware
Además de poder utilizar comunicaciones UART por medio de la librería Serial, que le permite a Processing conectar con multitud de dispositivos periféricos directamente o, a través de ellos, con diferentes sistemas electrónicos, también puede controlar directamente hardware utilizando la librería Hardware I/O en una placa de desarrollo como la Raspberry Pi o alguno de sus clones. La herramienta Upload to Pi, además, simplifica el proceso de compilación, grabación y ejecución en una Raspberry Pi.
Sin ser exhaustivos, las siguiente son algunas de las operaciones de control de hardware que pueden realizarse desde Processing:
-
Por medio de la clase GPIO de la librería Hardware I/O se puede acceder directamente a las patillas expuestas por el sistema para realizar entradas y salidas digitales y opcionalmente gestionarlas por medio de interrupciones.
-
La librería Hardware I/O también incluye las típicas comunicaciones serie entre circuitos como I2C o SPI; estándares que posibilitan la conexión con una buena parte de sensores y actuadores convencionales.
-
También es posible controlar dispositivos por medio de la modulación por ancho de pulso (PWM), especialmente servomotores, utilizando las clases
PWM
ySoftwareServo
de la librería Hardware I/O. -
Processing puede interactuar con Arduino utilizando la librería del protocolo Firmata en ambos extremos y una conexión UART entre ellos para controlar entradas y salidas analógicas y digitales (incluyendo PWM) accediendo a los GPIO de la placa Arduino.
-
Ya se han citado antes algunas librerías para interactuar directamente con diferentes dispositivos, desde Processing, como el interfaz humano (HID) sin contacto Leap Motion o el de imagen, sonido y gestos Kinect; pero existen también otras, como las que reciben información del sensor muscular Myo o del sensor de seguimiento de la mirada Eye Tribe.
Carla
Hola, Me llama la atención que en tu página web logres tener el texto justificado (Ordenado y recto en ambos costados) , me podrías enseñar cómo es que logras hacer esa magia ? Está demasiado interesante todo, felicitaciones ! Saludos.
Víctor Ventura
Hola, Carla.
El mérito es de CSS:
text-align:justify;
Me alegra que lo demás también te guste.
¡¡Vuelve pronto!!
Carla
Muuuchas Gracias ! Por acá ando de nuevo , un abrazo.
Víctor Ventura
🙂
Gustavo Fabian Paredes
Felicitaciones por el sitio. Realmente das muchos detalles y eso me parece loable y felicitable.
No abundan los sitios detallistas en temas de electrónica, IoT, etc…
Saludos desde Argentina
Gustavo
Víctor Ventura
¡¡ Gracias, Gustavo. Otro saludo para ti !!
Carlos Julio Rincon Murillo
Ha sido interesantísimo el paso por diferentes temas de tu sitio, he aplicado varias cosa q de principio funcionan y aclaran constantemente dudas y procedimientos. Muchas gracias por compartir…