Monday, May 5, 2008

midterm board

Labels:


final prototype

Labels:


final.videos.002





Labels: ,


setup.photos.002










Labels: ,


set.up.photos











Labels: ,


final.videos.001






Labels: ,


Sunday, May 4, 2008

[final boards]



Labels:


[prototype13_final]






































above: prototype in site and details of movement.
below: the overall apparatus.



detail of movement.


movement in site.


tactile interaction.

Labels: , , , ,


Friday, May 2, 2008

movment variations

showing different variations of movements.
[thanks chie for compiling the video]



Labels: ,


Thursday, May 1, 2008

[prototype12_relays]













hooked up three relays, each to its own 9v and flexinol...



but there was very little movement. We tried tightening the flexinol, using lighter gauge piano wire, connecting to bigger scarier batteries, but without much success. Experimented with paper (instead of piano wire) and got a much greater range of movement.



PBASIC CODE:

' {$STAMP BS2}
' {$PBASIC 2.5}

check VAR Byte
proIn VAR Byte

Main:
DO
check = IN3
proIn = IN10

SERIN 16, 16780, [proIn]

IF proIn > 0 THEN
IF proIn <>

HIGH 9
LOW 2
HIGH 15
PAUSE 5000
LOW 9
HIGH 2
LOW 15

ENDIF
ENDIF

IF proIn > 13 THEN
IF proIn <>

LOW 9
HIGH 2
LOW 15
PAUSE 2000
HIGH 9
LOW 2
HIGH 15
PAUSE 2000
LOW 9
HIGH 2
LOW 15
PAUSE 2000
HIGH 9
LOW 2
HIGH 15

ENDIF
ENDIF

IF proIn > 20 THEN
IF proIn <>

HIGH 15
LOW 2
HIGH 9
PAUSE 1500
LOW 15
HIGH 2
LOW 9
PAUSE 1500
HIGH 15
LOW 2
HIGH 9
PAUSE 1500
LOW 15
HIGH 2
LOW 9

ENDIF
ENDIF

LOOP
END

Labels: , , ,


Sunday, April 27, 2008

flexinol [more movement]

more movement by extending the length of flexinol wire. 

Labels: ,


Wednesday, April 16, 2008

motion sensor to recording module

we can get the motion sensor to activate the recording button, however we can't playback the recording while the circuit to the recording switch is closed. to be continued...

-----[ Program Description ]---------------------------------------------
' This PIR demo allows you to see how to go about allowing a warm-up time' for the sensor to settle, as well as displayed number of times tripped' and possibly activating an alarm or relay, in this case the LED. The LED' should have a 220 ohm or 330 ohm resistor in series with it.
' -----[ I/O Definitions ]-------------------------------------------------
PIR PIN 15 ' I/O Pin For PIR SensorLED PIN 3 ' I/O Pin For LED
' -----[ Variables ]-------------------------------------------------------
counter VAR Byte ' Trip Counter
' -----[ Initialization ]--------------------------------------------------
DEBUG CLS ' Clear DEBUG ScreenFOR counter = 40 TO 0 ' Wait 40 Seconds For PIR Warm-Up DEBUG HOME, "WARMING UP:", DEC2 counter PAUSE 1000 ' Display Counter Every SecondNEXT
counter = 0 ' Clear Counter Variable
DEBUG HOME, "WAITING... " ' Display Waiting Message
' -----[ Program Code ]----------------------------------------------------
MAIN: DO IF PIR = 1 THEN ' Motion Detected? counter = counter + 1 ' Update Trip Counter HIGH LED ' Light LED DEBUG HOME, "TRIPPED...", DEC3 counter PAUSE 20000 DO : LOOP UNTIL PIR = 0 ' Wait For PIR To Clear DEBUG HOME, "CLEARED...", DEC3 counter LOW LED ' Turn Off LED ENDIF LOOP

Labels:


Tuesday, April 15, 2008

[prototype11_air quality data to flexinol]



PBASIC CODE:

'{$STAMP BS2}
'{$PBASIC 2.5}

check VAR Byte
proIn VAR Byte

Main:
DO
check = IN3
proIn = IN10

SERIN 16, 16780, [proIn]

HIGH 2
PAUSE 2000
LOW 2
PAUSE 2000

IF proIn > 13 THEN
IF proIn <>
' DO WHILE proIn > 13
HIGH 2
PAUSE 9000
LOW 2

'LOOP
'END
ENDIF
ENDIF

LOOP
END


Linked the air quality data to the output, but the Flexinol shipment hasn't come in, so below is a movie of what we think the end product might look like.

Labels: , ,


Wednesday, April 9, 2008

code for motion sensor

' ========================================================================='' File...... PIR_Advanced_Demo.bs2' Purpose... Demonstrate PIR Sensor With Warm-Up Code' Author.... Parallax, Inc.' E-mail.... support@parallax.com' Started... 12-14-2005'' {$STAMP BS2}' {$PBASIC 2.5}'' =========================================================================
' -----[ Program Description ]---------------------------------------------
' This PIR demo allows you to see how to go about allowing a warm-up time' for the sensor to settle, as well as displayed number of times tripped' and possibly activating an alarm or relay, in this case the LED. The LED' should have a 220 ohm or 330 ohm resistor in series with it.
' -----[ I/O Definitions ]-------------------------------------------------
PIR PIN 15 ' I/O Pin For PIR SensorLED PIN 2 ' I/O Pin For LED
' -----[ Variables ]-------------------------------------------------------
counter VAR Byte ' Trip Counter
' -----[ Initialization ]--------------------------------------------------
DEBUG CLS ' Clear DEBUG ScreenFOR counter = 40 TO 0 ' Wait 40 Seconds For PIR Warm-Up DEBUG HOME, "WARMING UP:", DEC2 counter PAUSE 1000 ' Display Counter Every SecondNEXT
counter = 0 ' Clear Counter Variable
DEBUG HOME, "WAITING... " ' Display Waiting Message
' -----[ Program Code ]----------------------------------------------------
Main: DO IF PIR = 1 THEN ' Motion Detected? counter = counter + 1 ' Update Trip Counter HIGH LED ' Light LED DEBUG HOME, "TRIPPED...", DEC3 counter DO : LOOP UNTIL PIR = 0 ' Wait For PIR To Clear DEBUG HOME, "CLEARED...", DEC3 counter LOW LED ' Turn Off LED ENDIF LOOP

Labels:


wall behavior scenerios


[prototype10_output experiments.3]




Labels: ,


[prototype10_output experiments.2]





Labels: ,


[prototype10_output experiments.1]




Labels: ,


[prototype09_shock test]

Carrie got her hands on one of those gag toys that looks like a lighter, but when you go to use it, the little bugger gives you a shock. We took it apart, but no matter what we plugged it into we couldn't hurt ourselves. We took it as a sign and decided to revisit our earlier ideas about ambient information / movement.


Labels:


Saturday, April 5, 2008

arduino.prototype_008_001 = led + sound input controlling behaviour

using sound input to control periodic and aperiodic behaviour

code:

long t;

int ledPin13 = 13;
int ledPin12 = 12;
int ledPin11 = 11;
int ledPin10 = 10;

//int inPin = 7;
//int val = 0;
int inSound = 2;
int val = 0;
int analogVal = 0;

boolean flex13 = false;
boolean flex12 = false;
boolean flex11 = false;
boolean flex10 = false;

int t13 = 6000;
int t12 = 3000;
int t11 = 6000;
int t10 = 3000;

int rndMin = 4000;
int rndMax = 8000;

int base13 = 6000;
int base12 = 3000;
int base11 = 6000;
int base10 = 3000;

int flexTime = 500;

void setup(){ 
  pinMode(ledPin13, OUTPUT);
  pinMode(ledPin12, OUTPUT);
  pinMode(ledPin11, OUTPUT);
  pinMode(ledPin10, OUTPUT);
  //Serial.begin(4800);
}

void loop(){
  
  //val = digitalRead(inPin);
  analogVal = analogRead(inSound);
  if (analogVal <=2){
    val = HIGH;
  }
  else
  {
    val = LOW;
  }
  
  t = millis(); 
  //Serial.println(analogVal);
  //delay(1000);
  
  if (t % t13 == 0){
    flex13 = true;
  }
  if ((t - flexTime) % t13 == 0){
    flex13 = false;
    if (val == LOW){
      t13 = int( random(rndMin,rndMax));
    }
    if (val == HIGH){
      t13 = base13;
    }
  }  
  if (t % t12 == 0 && t % (t12*2) != 0){
    flex12 = true;
  }
  if ((t - flexTime) % t12 == 0 && (t - flexTime) % (t12*2) != 0){
    flex12 = false;
    if (val == LOW){
      t12 = int( random((rndMin/2),(rndMax/2)));
    }
    if (val == HIGH){
      t12 = base12;
    }
  }
  if (t % t11 == 0){
    flex11 = true;
  }
  if ((t - flexTime) % t11 == 0){
    flex11 = false;
    if (val == LOW){
      t11 = int( random(rndMin,rndMax));
    }
    if (val == HIGH){
      t11 = base11;
    }
  }
  if (t % t10 == 0 && t % (t10*2) != 0){
    flex10 = true;
  }
  if ((t - flexTime) % t10 == 0 && (t - flexTime) % (t10*2) != 0){
    flex10 = false;
    if (val == LOW){
      t10 = int( random((rndMin/2),(rndMax/2)));
    }
    if (val == HIGH){
      t10 = base10;
    }
  }
  
  if (flex13 == true){
    digitalWrite(ledPin13, HIGH);
  }else{
    digitalWrite(ledPin13, LOW);
  }
  if (flex12 == true){
    digitalWrite(ledPin12, HIGH);
  }else{
    digitalWrite(ledPin12, LOW);
  }
  if (flex11 == true){
    digitalWrite(ledPin11, HIGH);
  }else{
    digitalWrite(ledPin11, LOW);
  }
  if (flex10 == true){
    digitalWrite(ledPin10, HIGH);
  }else{
    digitalWrite(ledPin10, LOW);
  }

}

Labels: , , ,


Wednesday, April 2, 2008

[prototype08_remote data] + output speculations

downloading invisible and illegible air quality measurements from the internet and translating the data into light, the environment is rendered visible.

PBASIC CODE:

'{$STAMP BS2}
'{$PBASIC 2.5}

x VAR Byte
y VAR Byte
proIn VAR Byte

Main:
DO

SERIN 16, 16780, [proIn]

IF proIn>10 THEN
LOW 2
ENDIF

IF proIn<10>20 THEN
LOW 3
ENDIF
IF proIn<30>50 THEN
HIGH 4
ENDIF

IF proIn<50>70 THEN
HIGH 4
ENDIF

LOOP
END


[output1_shock plates]
with a small electrical charge passed through one's feet the daily air quality forecast can serve as a pointed reminder.


[output2_tickler]
tactile. informative. funny.


[output3_sound]
outside of the already cluttered visual experience, perhaps pitch (which can be quickly and accurately perceived) can occupy an underutilized sensory space.


[output4_pressurized air]
a gentle burst of air directed to the face very literally brings the quality of the environment to a personal and senstive level. information conveyed via the medium that it represents.


[output5_static electricity]
at once a sensory and visual experience, individuals can perceive information being passed through their own bodies as well as through the bodies of others.

Labels: ,


Tuesday, April 1, 2008

1 sound input, 2 sound outputs

bre,pat,dave

Labels:


midterm_boards







































Labels: ,


The Wailing Wall, Jerusalem(Israel)

http://www.ianandwendy.com/Israel/ ;

The Western or Wailing Wall, has been a site for religious pilgrimage for hundreds of years. This static entity has the ability to act as a cathartic center for all who wish to believe in it. Slipping a piece of paper with your prayer or thoughts can make one feel completly purged of negative energy. This has been a place for religious homage since the 16th century for jewish history.

Labels:


Saturday, March 29, 2008

arduino.prototype_007c_002 = flexinol + skin + switch controlling behaviour

video close ups and code
 



long t;

int ledPin13 = 13;
int ledPin12 = 12;
int ledPin11 = 11;
int ledPin10 = 10;

int inPin = 7;
int val = 0;

boolean flex13 = false;
boolean flex12 = false;
boolean flex11 = false;
boolean flex10 = false;

int t13 = 6000;
int t12 = 3000;
int t11 = 6000;
int t10 = 3000;

int rndMin = 4000;
int rndMax = 8000;

int base13 = 6000;
int base12 = 3000;
int base11 = 6000;
int base10 = 3000;

int flexTime = 500;

void setup(){ 
  pinMode(ledPin13, OUTPUT);
  pinMode(ledPin12, OUTPUT);
  pinMode(ledPin11, OUTPUT);
  pinMode(ledPin10, OUTPUT);
}

void loop(){
  
  val = digitalRead(inPin);
  t = millis(); 
  
  if (t % t13 == 0){
    flex13 = true;
  }
  if ((t - flexTime) % t13 == 0){
    flex13 = false;
    if (val == LOW){
      t13 = int( random(rndMin,rndMax));
    }
    if (val == HIGH){
      t13 = base13;
    }
  }  
  if (t % t12 == 0 && t % (t12*2) != 0){
    flex12 = true;
  }
  if ((t - flexTime) % t12 == 0 && (t - flexTime) % (t12*2) != 0){
    flex12 = false;
    if (val == LOW){
      t12 = int( random((rndMin/2),(rndMax/2)));
    }
    if (val == HIGH){
      t12 = base12;
    }
  }
  if (t % t11 == 0){
    flex11 = true;
  }
  if ((t - flexTime) % t11 == 0){
    flex11 = false;
    if (val == LOW){
      t11 = int( random(rndMin,rndMax));
    }
    if (val == HIGH){
      t11 = base11;
    }
  }
  if (t % t10 == 0 && t % (t10*2) != 0){
    flex10 = true;
  }
  if ((t - flexTime) % t10 == 0 && (t - flexTime) % (t10*2) != 0){
    flex10 = false;
    if (val == LOW){
      t10 = int( random((rndMin/2),(rndMax/2)));
    }
    if (val == HIGH){
      t10 = base10;
    }
  }
  
  if (flex13 == true){
    digitalWrite(ledPin13, HIGH);
  }else{
    digitalWrite(ledPin13, LOW);
  }
  if (flex12 == true){
    digitalWrite(ledPin12, HIGH);
  }else{
    digitalWrite(ledPin12, LOW);
  }
  if (flex11 == true){
    digitalWrite(ledPin11, HIGH);
  }else{
    digitalWrite(ledPin11, LOW);
  }
  if (flex10 == true){
    digitalWrite(ledPin10, HIGH);
  }else{
    digitalWrite(ledPin10, LOW);
  }

}

Labels: , , , , , ,


Friday, March 28, 2008

arduino.prototype_007 = skin

arduino.prototype_007a = skin try_001
this is our first try at attaching a skin onto the wires



arduino.prototype_007b = LEDs with a switch controlling periodic and aperiodic behaviour



arduino.prototype_007c = flexinol + skin + switch controlling periodic and aperiodic behaviour 


Labels: , , , ,


[prototype07_multiple outputs]


multiple lights increase the potential resolution of data visualization, a prediction of future complexity.


PBASIC CODE:

'{$STAMP BS2}
'{$PBASIC 2.5}

Main:
DO

HIGH 2
PAUSE 1000
LOW 2
PAUSE 1000

HIGH 3
PAUSE 1000
LOW 3
PAUSE 1000

HIGH 4
PAUSE 1000
LOW 4
PAUSE 1000

HIGH 5
PAUSE 1000
LOW 5
PAUSE 1000

LOOP
END

Labels: ,


Thursday, March 27, 2008

arduino.prototype_006 = multiple flexinol wires

prototype_006a = multiple flexinol wires at periodic movement



prototype_006b = multiple flexinol wires at aperiodic movement
(one of our flexinol wire broke)

Labels: , , ,


wires everywhere....


arduino.prototype_005b = LEDs in aperiodic sequence


long t;

int ledPin13 = 13;
int ledPin12 = 12;
int ledPin11 = 11;
int ledPin10 = 10;

boolean flex13 = false;
boolean flex12 = false;
boolean flex11 = false;
boolean flex10 = false;

int t13;
int t12;
int t11;
int t10;

int flexTime = 1500;

boolean turbulence = true;

void setup(){ 
  pinMode(ledPin13, OUTPUT);
  pinMode(ledPin12, OUTPUT);
  pinMode(ledPin11, OUTPUT);
  pinMode(ledPin10, OUTPUT);
}

void loop(){
  t = millis(); 

  if (turbulence == true){
    t13 = 4000;
    t12 = 2250;
    t11 = 4500;
    t10 = 2750;
  }else{
    t13 = 4000;
    t12 = 2000;
    t11 = 4000;
    t10 = 2000;
  }
  
// set pacing value for each pin 
  
  if (t % t13 == 0){
    flex13 = true;
  }
  if ((t - flexTime) % t13 == 0){
    flex13 = false;
  }  
  if (t % t12 == 0 && t % (t12*2) != 0){
    flex12 = true;
  }
  if ((t - flexTime) % t12 == 0 && (t - flexTime) % (t12*2) != 0){
    flex12 = false;
  }
  if (t % t11 == 0){
    flex11 = true;
  }
  if ((t - flexTime) % t11 == 0){
    flex11 = false;
  }
  if (t % t10 == 0 && t % (t10*2) != 0){
    flex10 = true;
  }
  if ((t - flexTime) % t10 == 0 && (t - flexTime) % (t10*2) != 0){
    flex10 = false;
  }
  
// set value for each pin  
  
  if (flex13 == true){
    digitalWrite(ledPin13, HIGH);
  }else{
    digitalWrite(ledPin13, LOW);
  }
  if (flex12 == true){
    digitalWrite(ledPin12, HIGH);
  }else{
    digitalWrite(ledPin12, LOW);
  }
  if (flex11 == true){
    digitalWrite(ledPin11, HIGH);
  }else{
    digitalWrite(ledPin11, LOW);
  }
  if (flex10 == true){
    digitalWrite(ledPin10, HIGH);
  }else{
    digitalWrite(ledPin10, LOW);
  }

}

Labels: , , ,


Tuesday, March 25, 2008

arduino.prototype_005 = LEDs in separate time

We still have not received the Flexinol yet, so we have focused on the code for this particular prototype with LED lights. 

We were attempting to have the LED lights to go on and off at different rates, allowing for outputs going from synchronized to a more chaotic pattern.

Once the Flexinol is arrived, we will swap the circuit with the one from Prototype 4, where we have connected a series of relays with individual outputs and the LEDs to flexinol wire.




int ledPin13 = 13;
int ledPin12 = 12;
int ledPin11 = 11;

long t;

void setup()
{pinMode(ledPin13, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(ledPin11, OUTPUT);
}

void loop()
{
  t = millis();
  
  if (t % 1000 == 0){
  digitalWrite(ledPin13, HIGH);
  }else{
  digitalWrite(ledPin13, LOW);
  }
  if (t % 2000 == 0){
  digitalWrite(ledPin12, HIGH);
  }else{
  digitalWrite(ledPin12, LOW);
  }
  if (t % 3000 == 0){
  digitalWrite(ledPin11, HIGH);
  }else{
  digitalWrite(ledPin11, LOW);
  }
}


Labels: , ,


ardiuno.prototype_004 = flexinol wire + relay [DIAGRAM + VIDEO]

ardiuno.prototype_004 = flexinol wire + relay [DIAGRAM + VIDEO]
here is the diagram for 1 input + 1 output + 1 relay








here is the diagram for 3 input + 3 output + 3 relay
























here is the video for 1 input + 1 output + 1 relay


Labels: , , ,


[prototype06_mysql to processing to pbasic to output]









Here, we have an LED responding to Air Quality Data being streamed over the internet and filtered through MYSQL. Processing is used to stream the data.
PROCESSING
import de.bezier.sql.*;
import de.bezier.mysql.*;

import processing.serial.*;


MySQL msql;

Serial myPort;

String table = "airTest";
String[] si = new String[636];

void setup()
{
size( 100, 100 );

println(Serial.list());
myPort = new Serial(this, "COM3", 2400);
//String user = "dbo238508103";
// String pass = "Ueb6pwb8";
// name of the database to use
//
//String database = "db238508103";



msql = new MySQL( "db192.perfora.NET", "db238508103", "dbo238508103", "Ueb6pwb8", this );

if ( msql.connect() )
{
// create a table with an id and a word
//
msql.execute( "CREATE TABLE IF NOT EXISTS " + table + " ("+
"id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,"+
"word VARCHAR( 255 )"+
")"
);




msql.query( "SELECT * FROM " + table );

int scount = 0;
while (msql.next())
{
String s = msql.getString("word");
si[scount] = s;
int n = msql.getInt("id");
println(s + " " + n);
float f = float(s);


scount = scount + 1;
}

// need to find out how many rows there are in table?
//
msql.query( "SELECT COUNT(*) FROM " + table );
msql.next();
println( "number of rows: " + msql.getInt(1) );
}
else
{
// connection failed !
}


}

void draw()
{

int gg = 0;
int f;

while(gg < f ="int(si[gg]);">0){

delay(1000);
println("port");
println(myPort.available());

if (myPort.available() == 0) {
delay(1000);
int x = int(si[gg]);
println(x);
myPort.write(x);
println("value");
println(si[gg]);
gg = gg + 1;
// myPort.stop();

PBASIC
'{$STAMP BS2}
'{$PBASIC 2.5}

x VAR Byte
y VAR Byte
proIn VAR Byte

Main:
DO

SERIN 16, 16780, [proIn]

IF proIn>10 THEN
LOW 2
ENDIF

IF proIn<10>
HIGH 2
ENDIF


IF proIn>20 THEN
LOW 3
ENDIF
IF proIn<30>
HIGH 3
ENDIF


IF proIn<30>
LOW 4
ENDIF
IF proIn>50 THEN
HIGH 4
ENDIF

IF proIn<50>
LOW 4
ENDIF
IF proIn>70 THEN
HIGH 4
ENDIF

LOOP
END

}

myPort.clear();
delay(1000);
}

}


Labels: , , ,


Wednesday, March 12, 2008

[prototype05_mysql to processing]





here we have a found code with our MYSQL data plugged in. when it is run it projects a stream of data. the draw portion(or the output) is not quite working.








PROCESSING
import de.bezier.mysql.*;


// created 2005-05-10 by fjenett
// updated 2005-11-16 by fjenett


MySQL msql;
void setup()
{
size( 100, 100 );
// this example assumes that you are running the
// mysql server locally (on "localhost").
//

// replace --username--, --password-- with your mysql-account.
//
//String user = "--username--";
//String pass = "--password--";

// name of the database to use
//
//String database = "--database--";

// name of the table that will be created
//
String table = "test";

// connect to database of server "localhost"
//
//msql = new MySQL( "localhost", database, user, pass, this );
msql = new MySQL( "SQL06.FREEMYSQL.NET", "ecovis", "fbitonti", "housebed202", this );
if ( msql.connect() )
{
// create a table with an id and a word
//
msql.execute( "CREATE TABLE IF NOT EXISTS " + table + " ("+
"id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,"+
"word VARCHAR( 255 )"+
")"
);

// fill the table with some data
//
msql.execute( "INSERT INTO " + table + " (word) VALUES (\"Lorem\")" );
msql.execute( "INSERT INTO " + table + " (word) VALUES (\"ipsum\")" );
msql.execute( "INSERT INTO " + table + " (word) VALUES (\"dolor\")" );

// now read it back out
//
msql.query( "SELECT * FROM " + table );

while (msql.next())
{
String s = msql.getString("word");
int n = msql.getInt("id");
println(s + " " + n);
}

// need to find out how many rows there are in table?
//
msql.query( "SELECT COUNT(*) FROM " + table );
msql.next();
println( "number of rows: " + msql.getInt(1) );
}
else
{
// connection failed !
}
}

void draw()
{
// i know this is not really a visual sketch ...
}

Labels: , ,


This page is powered by Blogger. Isn't yours?