instintovisual
martes, 17 de noviembre de 2009
reunidos from Cristobal Bayer on Vimeo.
aqui esta un videillo de la realizacion de reunidos.
la instalacion consiste en un disco metalico en el centro de la habitacion la cual al tocarla y calentarla
comienza el desarrollo de unas secuencias de imagenes, en conjunto se aceleran las palpitaciones del corazon y comienzan a cambier de azul a rojo de las luces que acompañan estas palpitaciones.
aparte de esto hay un sensor de movimiento que segun los movimiento de los perzonajes va variando las frecuencias del sonido y mucho mas. bueno hay que verlo.
Invitacion 29 nov..
http://www.flickr.com/photos/instintovisual/4089241875/
Hola , aqui presento la descripcion de reunidos. obra a mostrar en la semana
de la fotografia mirados casa Lukas ¡¡¡ mi primera obra!!!, Valparaiso. el 29 de nov. todos invitados
durante el desarrollo ire subiendo mas info
Por: Cristobal Bayer InstintoVisual
Formato:
Instalación interactiva
Objetivos: Generales: El principal objetivo es que el participante disfrute. Y logre abstraerse por un instante de la realidad a la que esta sujeto. También se busca reunir personas, para que estas compartan una experiencia en común, e interactúen entre ellas para descubrir su entorno.
Particulares: La experiencia busca generar un viaje, que nos mostrará como, sin darnos cuenta, desequilibramos un sistema al interactuar con él. Todas nuestras acciones tienen una repercusión al entorno. El visitante al entrar en la instalación, tocando, respirando, moviéndose,etc, producirá reacciones en el sistema que lo desequilibrarán de su estado originario. Mientras más gente entre, el desequilibrio será mayor.
Esta instalación busca que el visitante se dé cuenta de que su existencia es parte de un todo, es parte del desequilibrio de la naturaleza.
Premisa: El equilibrio es solo un concepto. Todo sistema en particular tiende a un equilibrio. Pero al presentarse al entorno la interacción produce un desequilibro. Por eso decimos que tiende al equilibrio pero nunca es capaz de llegar.
Base Teórica: El proyecto esta basado en Arduino y Pure Data, dos proyectos de código abierto. Lo que nos da la libertad para que podamos hacer lo que queramos con ellos.
El proyecto Arduino, esta compuesto de 2 partes. La placa. Basada en el microcontrolador Atmega, y su lenguaje de programación ”Ide” basado en c++.
con Arduino ingresamos y procesamos los datos de los sensores para enviarlos al computador a través del protocolo serial. Y paralelamente manejamos la iluminación led.
Luego hay que hacer algo con la información entrante de los sensores.
Es convertida en señales MIDI, las cuales son procesadas por Pure Data.
Es aquí donde entra Pure Data, este proyecto es un entorno de programación visual, que nos permite la síntesis y el procesamiento de sonido e imágenes en tiempo real.
Re12s34...reunidos como concepto básico, es un juego, cuya única regla es experimentar, disfrutar
Fotos de prototipos para Re12s34......Reunidos
Aqui les dejo el scktch de arduino para el geek que quiera entender que chucha estoy haciendo /* Scketch instalacion RE12S3.... instalacion audiovisual interactiva Desarrollada por InstintoVisual Cristobal Bayer vercion:1.01 toma valores de 2 termistores y de un detector de movimiento y lo convierte en señales MIDI y hace parpadiar 2 led 11 de nov 2009+ */ //........................valor PMW que toman los led int rojo=0; int azul=0; //......................... referencia tiempo retrazo int tiempo=0; // .......................estavilisacion de señal int medida=0; int medidanterior=0; int medida1=0; int medidanterior1=0; //..................... pines leds int ledrojo=5; int ledazul=6; //......................valor promedio de los 2 termistores int valPromedio=0; unsigned long frecuencia=0; //.......................toma de valores de referencia int refL=0; int refR=0; int valormap=0; int valormap1=0; int difReferencia=80; //.........................variables para detector de movimiento //.......................pin detector de movimiento int bot=12; //.......................valor promedio detector de movimiento int boton=0; int muestras=49; // n° de muestras a promediar int regVal[49]; //inisialisa variable que almasena el estado del detector de mov. float promVal=0; //valor promedio de los 60 estados almasenados en el array regVal int cMovimiento=0; float sumVal=0; unsigned long tAnterior=0; int contador=0; int envioPromVal=0; //....... variable aux para enviar promedio de mov mapeado de 0 a 100 //.......... ventilador int ventiPin=4; //.........led retroiluminadosco segun movimiento int retroLed=11; int acontador=0; //................................Setup>>>>>>>>>>>>>>{ Serial.begin (31250); pinMode (retroLed,OUTPUT); pinMode (ventiPin,OUTPUT); pinMode (bot,INPUT); //define pin 12 como detector de movimiento pinMode (ledazul,OUTPUT); //define pin 6 com salida pinMode (ledrojo,OUTPUT); //define pin 5 com salida for (int a=0;a<=muestras;a++) //inicialisa array que registra los estados del detector de Mov { regVal [a]=0; } //...................... tomamos referencia antes de entrar al la funcion Loop medida= analogRead (0); medida1= analogRead (1); normalizar(); // lee y estaviliza la entrada analoga 0 normalizar1(); // lee y estaviliza la entrada analoga 1 promedio(); // calcula el promedio de los termistores refL=valPromedio; refR=valPromedio+difReferencia; } //...............Loop principal>>>>>>>>>>>{ detectorMovimiento(); // FUNCION DE DETECCION DE MOV actualiza los valores if (promVal>0.20 || valPromedio>=(refL+(difReferencia/2))){digitalWrite (ventiPin, HIGH);} // prendido y apagado del ventilador pin 3 else {digitalWrite (ventiPin, LOW);} //si el promedio es 0 el ventilador se apaga //o si la temperatura supera un umbral //.............................................................. medida= analogRead (0); normalizar(); // lee y estaviliza la entrada analoga 0 medida1= analogRead (1) ;normalizar1(); // lee y estaviliza la entrada analoga 1 medidanterior=constrain(medidanterior,refL,refR); valormap=map(medidanterior,refL,refR,0,127); valormap=constrain(valormap,0,127); medidanterior1=constrain(medidanterior1,refL,refR); valormap1=map(medidanterior1,refL,refR,0,127); valormap1=constrain(valormap1,0,127); promedio(); // calcula el promedio de los termistores mapeo(); // se mapea a los valores de referencia palpito (); // palpita segun las lecturas de la funcion narmalizar() //.................................Toma refetencia de los valores de temperatura //....cuando el detector de movimiento esta mas de 60 if (promVal==0) //....ciclos en estado 0 { cMovimiento++; if( cMovimiento>=60) { tomarReferencia(); cMovimiento=0;} } if (promVal!=0){cMovimiento=0;} //............................esta seccion ensiende un led que retroilumina el disco if (promVal>=0.01||valPromedio>=(refL+5)) { if (acontador!=255) { for (acontador;acontador<=255;acontador+=1) { analogWrite (retroLed,acontador); delay (3); } acontador=255; } else {analogWrite (retroLed,255);} } else { if (acontador!=0) { for (acontador;acontador>=0;acontador-=1) { analogWrite (retroLed,acontador); delay (3); } acontador=0; } else {analogWrite (retroLed,0);} } } //----------------------------fin loop----------------------------------------- //...................... funcion de filtro de ruido para la lectura analoga int normalizar () { if (abs(medida-medidanterior)>=3) { medidanterior=medida; } } int normalizar1 () { if (abs(medida1-medidanterior1)>=3) { medidanterior1=medida1; } } //..........................funcion que calcula el promedio de los 2 termistores int promedio() { valPromedio=(medidanterior+medidanterior1)/2; } //............................... funcion de mapeo de valores para asignarlos //.....al valor pmw de cada led int mapeo() { valPromedio=constrain(valPromedio,refL,refR); rojo= map (valPromedio,(refL+15),refR,0,255); rojo=constrain(rojo,0,255); azul= map (valPromedio,refL,(refR-35),255,0); azul=constrain(azul,0,255); } //.....................................................................funcion toma referencia de temperatura int tomarReferencia() { if (valPromedio<=(refL+5)) //impide que tome referencia si uno esta variando la t° y no se mueve. { refL=valPromedio; refR=valPromedio+difReferencia; } } //................funcion que hace palpitar los led su ritmo lo determina la temperatura registrada void palpito () { valPromedio= constrain(valPromedio,refL,refR); tiempo= map(valPromedio,refL,refR,3000,300); tiempo= constrain (tiempo,300,3000); NotaMIDI(0x91,0x3f,valormap); NotaMIDI(0x91,0x40,valormap1); NotaMIDI(0x91,0x41,envioPromVal); //Primer palpito analogWrite (ledazul,azul); analogWrite (ledrojo,rojo); delay (50); for (int aux=250;aux>=0;aux--) { analogWrite (ledazul, (aux*azul) /250); analogWrite (ledrojo, (aux*rojo) /250); delayMicroseconds (800); } detectorMovimiento(); normalizar (); delay (tiempo/10); normalizar (); detectorMovimiento(); //segundo palpito if (azul>40){azul-=40;} if (rojo>30){rojo-=30;} for (int aux=100;aux>=0;aux--) { analogWrite (ledazul, (aux*azul) /100); analogWrite (ledrojo, (aux*rojo) /100); delayMicroseconds (2000); } delay (tiempo*0.5); } //..............envia nota midi 62 activa sonido corazon y envia valor referencial de temp tomado por pure data void NotaMIDI(byte a,byte b,byte c) { Serial.print(a,BYTE); Serial.print(b,BYTE); Serial.print(c,BYTE); } //--------------------- funcion detector de movimiento u promedio de este toma 20 muestras // 2 por segundo. int detectorMovimiento() { sumVal-=regVal[contador]; regVal[contador]=digitalRead(bot); sumVal+=regVal[contador]; promVal=sumVal/(muestras+1); contador++; if (digitalRead(bot)==0) { sumVal--; } sumVal=constrain(sumVal,0,muestras); promVal=constrain(promVal,0,1); envioPromVal = promVal*100; if (contador>=muestras) { contador=0; }}
Suscribirse a:
Entradas (Atom)



