Friday, December 5, 2014

VIDEO ENTREGA FINAL

La relación constante entre el hombre y sus acciones se queda en lo instantáneo. No son muchas las reflexiones conscientes sobre lo que sucede en la inmediatez de nuestra realidad y las consecuencias que genera en nuestro alrededor. Somos y seremos esclavos de nuestro tiempo, y acostumbrados a esto, olvidamos como pasa frente a nosotros en cada momento. La memoria a corto plazo nos engaña constantemente; accionamos de ciertas maneras que fácilmente olvidamos. Hacemos y decimos cosas que al instante olvidamos, pero, ¿Qué pasa cuando nos enfrentamos al olvido inmediato?.


La entrega constó en 4 pantallas que encerraban al espectador, en cada una había un delay temporal diferente que llegaba de camaras ubicadas en el salón. La intención fue encerrar al espectador para que se preguntara ¿En qué momento mi pasado es mi presente?... la distorsión temporal nos bloquea en nuestro presente y nos hace pensar en el pasado que vemos en tiempo real.


Proyecto realizado por


SANTIAGO RODRÍGUEZ

VANESSA MIRANDA


https://www.youtube.com/watch?v=L2jdi7QD1Tw&feature=youtu.be

Thursday, December 4, 2014

Re: El respondedor


El 4 de diciembre de 2014, 4:11 p. m., Nicole Rodriguez<madnicky23@gmail.com> escribió:
Reenvio el video arreglado. Ayer no me había dado cuenta, pero no se subió completo a youtube. 

2014-12-03 21:21 GMT-05:00 Nicole Rodriguez <madnicky23@gmail.com>:


--
Nicole Rodríguez Sánchez
Cel: 311 211 3161



--
Nicole Rodríguez Sánchez
Cel: 311 211 3161



--
Nicole Rodríguez Sánchez
Cel: 311 211 3161

Wednesday, December 3, 2014

Corrección de video Paradigma


Hola Hamilton, te paso un nuevo link del video. Esta corregido. El otro no me parecio bueno. Este esta mejor.





Muchas gracias,

Saludos

Esteban Millán Pinzón

RV: Entrega Circuitos Dibujados



De: Karen Juliette Angulo Tobar
Enviado: miércoles, 03 de diciembre de 2014 2:45 p. m.
Para: thingco1.artetech@blogger.com
Asunto: Entrega Circuitos Dibujados
 

http://youtu.be/FxYrrd1QwJQ

Circuitos Dibujados - YouTube
Exploraciones. Integrando dibujos y circuitos básicos sobre distintos soportes.


Karen Angulo Tobar 

Re: Video Proyecto



2014-12-03 15:24 GMT-05:00 Esteban Millan Pinzon <estebanmillanpinzon@gmail.com>:

generador de notas "final"

int notamin =  30;
int notamax = 50;

void setup(){
  size(500,200);
 textSize(32);
text("generador de notas", 150, 100);  
}

void mousePressed(){
 
for(int i=0;i<3;i++){
  float notafinal= random(notamin, notamax);
println(notafinal);
background(random(255),random(255),random(255));
 textSize(32);
  text("generador de notas", 150, 100);
   text(notafinal, 150, 130);
  }
}

void draw(){

  
}

void keyPressed(){
  if (key == 'a'){
  for(int i=0;i<3;i++){
  float notafinal= random(notamin, notamax);
println(notafinal);
  }
  } 
  }

Proyecto final Alejandra López

El proyecto consiste en una instalación que posibilita una "interacción física" con una serie de imágenes que se ven animadas por la cantidad de luz que recibe una fotocelda.

Para lograr lo anterior se integraron las plataformas de Arduino y Processing. 
La primera controla los parámetros por lo cuales se regirá la fotocelda y la segunda estará encargada de la animación.

Los códigos son los siguientes:

ARDUINO

int photoRPin = 0; 
int minLight;
int maxLight;
int lightLevel;
int adjustedLightLevel;
int oldLightLevel;

void setup() {
  Serial.begin(9600);
  
  //Setup the starting light level limits
  lightLevel=analogRead(photoRPin);
  minLight=lightLevel-20;
  maxLight=lightLevel;
  oldLightLevel=lightLevel;
}

void loop(){
   lightLevel=analogRead(photoRPin);
   delay(10);
  
  //auto-adjust the minimum and maximum limits in real time   
   if(minLight>lightLevel){
     minLight=lightLevel;
   }
   if(maxLight<lightLevel){
     maxLight=lightLevel;
   }
   
   //Map the light level to produce a result between 1 and 28.
   adjustedLightLevel = map(lightLevel, (minLight+20), (maxLight-20), 1, 124); 
   adjustedLightLevel = constrain (adjustedLightLevel, 1, 124);
   
   /*Only send a new value to the Serial Port if the 
     adjustedLightLevel value changes.*/
   if(oldLightLevel==adjustedLightLevel){
     //do nothing if the old value and the new value are the same.
   }else{
     //Update the oldLightLevel value for the next round
     oldLightLevel=adjustedLightLevel;
     
     /*Send the adjusted Light level result 
       to Serial port (processing)*/
     Serial.println(adjustedLightLevel);
   } 
}     


PROCESSING

import processing.serial.*;
Serial myPort;
String sensorReading="";

PImage[] movieImage = new PImage[124];

/* The frame variable is  used to control which 
 image is displayed */
int frame = 1;



/* Setup the size of the window. Initialise serial communication with Arduino
 and pre-load the images to be displayed later on. This is done only once.
 I am using COM6 on my computer, you may need replace this value with your
 active COM port being used by the Arduino.*/

void setup() 
{
  size(700, 600);
  background(0);

  myPort = new Serial(this, "COM4", 9600);
  myPort.bufferUntil('\n');

  for (int i=0; i<122; i++) 
  {
    movieImage[i] = loadImage((i+3) + ".jpg");
  }
}




// The draw function controls the animation sequence.

void draw() 
{

  image(movieImage[frame-1],0,0,width,height);  

}

void serialEvent (Serial myPort) {
  sensorReading = myPort.readStringUntil('\n');
  if (sensorReading != null) {
    sensorReading=trim(sensorReading);
    if (sensorReading.length()<2) {
      frame = integerFromChar(sensorReading.charAt(0));
    } else {
      frame = integerFromChar(sensorReading.charAt(0))*10;
      frame += integerFromChar(sensorReading.charAt(1));
    }
  }
}



/* This function used to convert the character received from the
 serial port (Arduino), and converts it to a number */

int integerFromChar(char myChar) {
  if (myChar < '0' || myChar > '9') {
    return -1;
  } else {
    return myChar - '0';
  }
}


Entrega Circuitos Dibujados

http://youtu.be/FxYrrd1QwJQ

Circuitos Dibujados - YouTube
Exploraciones. Integrando dibujos y circuitos básicos sobre distintos soportes.


Karen Angulo Tobar 

Instalación Interactiva



Juan Felipe Martinez
Fabio Beltrán 
Sara Toro

Galeria de proyectos

El siguiente link es la galería virtual de los proyectos del taller:

http://librepensante.org/hotglue/?taller-arteytech/

Tuesday, December 2, 2014

TRABAJO FINAL ILANIT LITMAN

VIDEO DEL PROYECTO Y RESUMEN:



CODIGO DE PROGRAMACION DE ARDUINO ILANIT LITMAN
/*
Proyecto sensor ultrasonido para Arduino
 */


#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // Onboard LED

int maximumRange = 200; // Rango máximo 
int minimumRange = 0; // Rango mínimo 
long duration, distance; // Duración utilizada para calcular distancia

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LEDPin, OUTPUT); // 
}

void loop() {
/* Este ciclo determina la distancia del objeto más cercano rebotando ondas contra él 
*/ 
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 
 //Calcular distancia (en cm) basada en velocidad del sonido.
 distance = duration/58.2;
 
 if (distance >= maximumRange || distance <= minimumRange){
 Serial.println("-1");
 digitalWrite(LEDPin, HIGH); 
 }
 else {
 /* Enviar distancia al computador utilizando protocolo serial, y apagar LED para indicar lectura apropiada. */
 Serial.println(distance);
 digitalWrite(LEDPin, LOW); 
 }
 
 //Delay 20ms before next reading.
 delay(20);
}

_________________________________

CODIGO DE PROCESSING ILANIT LITMAN

/*  processing sensor ultrasonido-representación gráfica 
 
*/
import processing.serial.*;


int numOfShapes = 60; // Número de cuadrados a representar en pantalla
int shapeSpeed = 2; // Velocidad en que los cuadrados se mueven a su nueva posición
 // 2 = Más rápido, Números mayores mas lentos

//Variables Globales
Square[] mySquares = new Square[numOfShapes];
int shapeSize, distance;
String comPortString;
Serial myPort;

/* -----------------------Setup ---------------------------*/
void setup(){
 size(displayWidth,displayHeight); //Utilizar toda la pantalla.
 smooth(); // Dibuja todas la figuras con bordes suavizados.
 
 /* Calcular el tamaño de los cuadrados e iniciar variedad de cuadrados */
 shapeSize = (width/numOfShapes); 
 for(int i = 0; i<numOfShapes; i++){
 mySquares[i]=new Square(int(shapeSize*i),height-40);
 }
 
 /*Abrir puerto para comunicación con Arduino*/
 myPort = new Serial(this, "/dev/tty.usbmodem411", 9600);
 myPort.bufferUntil('\n'); // Disparar nuevo evento serial en una nueva linea
}

/* ------------------------Draw -----------------------------*/
void draw(){
 background(0); //Fondo negro
 delay(50); //Delay de pantala
 drawSquares(); //Dibujar patrón de cuadros
}


/* ---------------------serialEvent ---------------------------*/
void serialEvent(Serial cPort){
 comPortString = cPort.readStringUntil('\n');
 if(comPortString != null) {
 comPortString=trim(comPortString);
 
 /* Utilizar la distancia recibida por Arduino para modificar la posición Y
 del primer cuadro (Los demás le siguen). 200 es la máxima distancia esperada. 
 Las distancia es luego asignada a un valor entre 1 y la altura de la pantalla.*/
 distance = int(map(Integer.parseInt(comPortString),1,200,1,height));
 if(distance<0){

 distance = 0;
 }
 }
}


/* ---------------------drawSquares ---------------------------*/
void drawSquares(){
 int oldY, newY, targetY, redVal, blueVal;
 
 /* Posición Y del primer cuadro basada en el valor recibido por el sensor */
 mySquares[0].setY((height-shapeSize)-distance);
 
 /* Refrescar la posición y el color de cada cuadrado */
 for(int i = numOfShapes-1; i>0; i--){
 /* Usar posición de cuadro anterior como objetivo */
 targetY=mySquares[i-1].getY();
 oldY=mySquares[i].getY();
 
 if(abs(oldY-targetY)<2){
 newY=targetY; //alineación
 }else{
 //caluclar nueva posición de cuadro
 newY=oldY-((oldY-targetY)/shapeSpeed);
 }
 //Ajustar nueva posición de cuadro
 mySquares[i].setY(newY);
 
 /*Calcular color de cuadro basado en posición en pantalla*/
 blueVal = int(map(newY,0,height,0,255));
 redVal = 255-blueVal;
 fill(redVal,0,blueVal);
 
 /* Dibujar cuadro en pantalla*/
 rect(mySquares[i].getX(), mySquares[i].getY(),shapeSize,shapeSize);
 }
}

/* ---------------------sketchFullScreen---------------------------*/
// Entrar en pantalla completa
boolean sketchFullScreen() {
 return true;
}

/* ---------------------CLASS: Square ---------------------------*/
class Square{
 int xPosition, yPosition;
 
 Square(int xPos, int yPos){
 xPosition = xPos;
 yPosition = yPos;
 }
 
 int getX(){
 return xPosition;
 }
 
 int getY(){
 return yPosition;
 }
 
 void setY(int yPos){
 yPosition = yPos;
 }
}

Monday, December 1, 2014

Codigo utilizado para el triciclo sonoro

#include <VirtualWire.h>

void setup()
{
Serial.begin(4800);
Serial.println("setup");
vw_setup(2000);
vw_set_tx_pin(1);
pinMode(8,INPUT);
}

void loop()
{
if (digitalRead(8)==HIGH)
{
char *msg = "2";
digitalWrite(13, true);
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
digitalWrite(13, false);
}
else
{
char *msg = "1";
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
}
}
ese es el código del emisor
manda un pulso vía radio frecuencia cuando se está espichando el botón
es decir, un 1 cuando se espicha y un 0 cuando se suelta
bueno...para cosas prácticas en este caso manda un 2 cuando se espicha y un 1 cuando se suelta...el segundo código es el del receptor:
#include <VirtualWire.h>
int acc=0;
int cont=2;
int val=1;
void setup()
{
Serial.begin(4800);
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_set_rx_pin(2);
vw_rx_start();
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
int i;
digitalWrite(13, true);
for (i = 0; i < buflen; i++)
{
if(buf[i] == '2')
{
if (acc== 0)
{
acc = 1;
Serial.write(val);
}
digitalWrite(13, true);
delay(5);
}
else
{
if (acc==1)
{
Serial.write(cont);
}
acc = 0;
digitalWrite(13, false);
}
}
digitalWrite(13, false);
}
}
este código agarra el dato recibido y dependiendo de lo que reciba envía un 1 o un 2 por puerto serial...
luego, en pD (puredata) se agarra ese valor del puerto serial y se convierte a una nota midi, si es 1 la manda por el canal midi 1 y respectivamente si recibe un 2 la manda por el canal 2...
por último, en algun programa de manejo de clips en vivo (como lo es Ableton Live, AudioMulch o el que usamos en este caso que fue Resolume) se le da trigger a un clip con el bombo (boom) cuando se presiona el botón, y un hihat cuando se suelta (tsszt)

Artes Electronicas - DANIELA GALLO

https://vimeo.com/113251009

Tras un análisis sobre los sistemas y las posibles forma de afectarlos se nos ocurrió utilizar el sonido y la acción como método para activar cuestionamientos sobre prácticas ordinarias como caminar o el uso de la bicicletas.

El proyecto consiste en una bicicleta anclada a una carretilla construida por el grupo.
La acción se activa siempre y cuando haya pedaleo, la caretilla es la encargada de sostener todos los equipos necesarios y además proporcionar una plataforma para diversificar los resultados de la acción sonora, según quien esté sobre ella y la segunda acción que éste decida realizar.  

Es un proyecto que sólo funciona si hay un usuario que lo active, parte de sonidos básicos de percusión que van marcando a través del audio el ritmo de la persona, el ritmo de vida.