P R O Y E C C I O N E S S I M U L T Á N E A S + B R I N D I S


Diseño Interactivo - Interactive Design
El efecto Hall es un fenómeno descubierto en 1879 por Edwin Herbert Hall y consiste en la aparición de un campo eléctrico en un conductor cuando este es atravesado por un campo magnético. Industrialmente se fabrican sensores que se basan en este principio y pueden ser usados para detectar el movimiento de un engranaje, cambios de dirección y sentido, medir velocidad y posición, entre muchas otras cosas.
Estos dispositivos vienen integrados y básicamente entregan una tensión (voltaje) de salida en función de la densidad campo magnético a la cual están expuestos.
Podemos empezar clasificando estos sensores en dos grandes grupos, lineales y conmutados. Los sensores lineales son aquellos en los que la tensión de salida es proporcional a la intensidad de campo magnético. Por otro lado los conmutados son aquellos que la salida varia entre dos valores que llamaremos “on” y “off” (encendido y apagado) dependiendo de la intensidad y/o polaridad del campo magnético. El punto (o intensidad) de campo magnético necesario para conmutar el sensor esta especificado para cada modelo en particular.
Los sensores conmutados son comúnmente utilizados en pulsadores, botones sin contacto mecánico y medidores de velocidad. Dentro de los sensores conmutados están los llamados bipolares, que diferencian que polo magnético del imán esta expuesto, por ejemplo pasan al estado “on” cuando se lo expone al polo sur del imán y al estado “off” frente al polo norte (por ejemplo, posibilita detectar dos caras de una pieza).
En el caso de los sensores lineales, son utilizados para medir corriente eléctrica, proximidad entre objetos, entre otras cosas.
La siguiente clasificación nos servirá a la hora de elegir un sensor (eso espero):
Conmutados
Lineales
Para muchas de las aplicaciones es necesario construir piezas con imanes adosados o utilizar imanes industriales de formas particulares.
Estos sensores pueden ser obviamente conectados a cualquiera de las plataformas de desarrollo disponibles, como así también a microcontroladores en general.
Les dejo el enlace a uno ejemplo de Arduino que se llama ReadingRPM (no esta muy documentado, pero si saben leer código de Processing lo podrán entender) que hace uso de un sensor de efecto hall para medir la velocidad de rotación de un ventilador de PC.
Este es otro enlace de un proyecto muy interesante (y bastante complicado) que hizo la gente de CUI que se llama Musical Interaction Design with the CREATE USB Interface.
Enlaces de los fabricantes de sensores:
// Indico que paquetes importar.
import processing.video.*;
// Declaro los objetos que voy a usar.
// La forma de declarar un objeto es:
// TipoDeObjeto nombreDelObejto;
// myCapture representara a la cámara.
Capture myCapture;
// capturedPhoto: almacenara la imagen capturada al
// momento de hacer clic en el mouse
PImage capturedPhoto;
// graphicBuffer es un objeto intermedio que permite
// manipular las gráficos
PGraphics graphicBuffer;
// Declaro dos números enteros y les asigno el valor:
// w representa el ancho de una imagen.
// h representa la altura de una imagen.
int w = 320;
int h = 240;
// Declaro e inicializo una variable que me servirá
// como indicador para saber si debo volcar una
// nueva imagen en la visualización.
boolean newPhoto = false;
// Función de inicialización:
void setup() {
// Preparo la zona de visualización, serán dos
// imágenes distribuidas horizontalmente,
// por eso w*2 indica un ancho del doble de una imagen
size( w * 2, h, P2D );
// Negro para el fondo del área de visualización
background( 0 );
// Creo gráfico intermedia para guardar la imagen
// capturada
graphicBuffer = createGraphics( w, h, P2D );
// Creo el objeto que maneja la cámara:
// En este caso usara la ultima cámara utilizada por
// quicktime. Parámetros:
// this: Esta aplicacion
// w, h: son el ancho y el largo de la imagen capturada
// 5: es la cantidad de cuadros por segundo a capturar
myCapture = new Capture( this, w, h, 5 );
}
// Esta función es llamada por procesing cada vez que
// el usuario hace clic con el mouse
void mouseClicked() {
// Guardo la imagen actual, este área de gráficos que
// me permitirá en un futuro dibujar o trabajar sobre la
// imagen capturada
graphicBuffer.set(0, 0, myCapture);
// Convierto el área de gráficos en una imagen común
// para poder mostrarla fácilmente.
capturedPhoto = graphicBuffer.get();
// Inidico que se ha capturado una nueva imagen.
newPhoto = true;
}
// Esta función es llamada por processing por cada imagen
// disponible de la cámara
void captureEvent(Capture myCapture) {
// ¿Existe una nueva imagen desde la cámara?
if(myCapture.available()) {
// Leo de la cámara la nueva imagen
myCapture.read();
}
}
void draw() {
// Actualizo la visualización con la imagen obtenida
// captureEvent()
image(myCapture, 0, 0);
// Pregunto si existe una imagen capturada con el clic
// del mouse
if (newPhoto != false) {
// Si hay imagen, la vuelco en el área de visualización,
// al lado de la imagen antes dibujada, por eso la
// posición de esta nueva imagen, será w,0 que indica
// un desplazamiento horizontal igual al ancho de una
// imagen (w)
image(capturedPhoto, w , 0);
// Vuelvo el aviso de imagen capturada a falso
newPhoto = false;
}
}
Arduino es una plataforma de código y hardware abierto que permite realizar prototipos en electrónica. Esta orientada a artistas, diseñadores, entusiastas y cualquiera que este interesado en crear objetos o ambientes interactivos.
Arduino puede censar el ambiente recibiendo información de diferentes sensores y puede actuar sobre el entorno controlando motores, luces, entre otras cosas.
Arduino esta basado en un microcontrolador que se programa utilizando el lenguaje de programación Arduino (basado en Wiring) y la herramienta de programación Arduino (basada en Processing).
Los proyectos desarrollados utilizando Arduino pueden funcionar de manera autónoma o pueden comunicarse con la PC (por ejemplo, Flash, MaxMSP)
Arduino puede utilizarse desde Windows, Linux y MAC OS X.
La idea es poder generar pequeños circuitos, sencillos de construir que otorguen la capacidad de convertir en interactivos a los objetos o ambientes.
La idea de este entrada es seguirla con una serie de instrucciones generales para entender como usar Arduino y de esa manera decidir si es lo que necesitamos para nuestro proyecto.
Pagina oficial del proyecto Arduino
Me encontré enrollado en un proyecto de control de escena (stage control).
La idea era controlar una cierta cantidad de LEDS RGB (o pixels, conformados por tres LEDS) de forma tal de poder crear efectos visuales sincronizados con la música.
Lo primero que pensé fue una interfase MIDI-USB que controle los LEDS.
El problema que surgió con esa solución es la distancia máxima entre la PC y el dispositivo USB de control, resulto ser chica para un escenario.
Investigando un poco llegue al protocolo DMX-512:
Voy a obviar por ahora algunos detalles técnicos, pero cada canal DMX se codifica en 8 bits (0-255).
Cada dispositivo tiene un/os canal/es asignado/s, entonces al momento de recibir el cuadro DMX el receptor iniciliza un contador en cero a la espera que llegue el numero de canal asignado y asi tomar el valor de esos 8 bits en particular.
En principio con un universo DMX-512 se pueden controlar hasta 512 canales, que en términos de LEDS RGB son 512/3=170 (cada LED RGB tiene un control independiente por color) que por cierto no es mucho (no es como para pensar en una pantalla).
La idea entonces es usar un microntrolador como receptor/controlador DMX-512 y una interfase comercial USB a DMX-512 para mandar los datos desde la PC. Hay muchos controladores comerciales pero suelen tener precios altos y no son fáciles de conseguir. Habrá que fabricar uno propio.