Final Project – Interactive LED Tent – Alexa Zyllo, Josiah Song

21 Dec

Image

Image

Image

Image

Our project was to build an interactive LED tent that explored the way we can change the experience of a space using the things we learned over the course of the class. The interactive tent is made up of two things, PVC 1/2″ piping and a Spandex/Rayon blend of fabric. Each pipe is 53″ long and was cut with a saw and sanded to get rid of any sharp edges left behind. The pipes were then put together with a 3 way pipe connector to form a cube (53″ x 53″ x 53″). After the cube was formed, the cloth was cut in a rectangle shape (60″ x 212″), and sewed to make a closed loop. After this loop was made, a square piece of cloth (53″ x 53″) was cut and sewed onto the loop to form an almost completely closed box. To insure the cloth would stretch right, little pockets were sewed into the bottom four sides (this is where the tubing went through). When the cube was completely constructed, a zipper was added to one side to allow people to enter and exit the cube.

After the construction of the tent, we strung up a string of 45 LEDs that went around the top, down one corner, and continued all the way around the bottom and connected to a power box. This in turn was connected to an Arduino and DMX shield, as well as four flex sensors that were hooked up to the tent (one on each side of the tent, attached at the top and center). The way that the tent worked was based on mapped analog value readings from the flex sensors. They were attached in such a way that when one pushed on the sides of the tent from the inside, the bottom tip of the sensor would bend outward up to about 45° and readings would depend on the degree of bending. The change in readings would correlate to changes in the color of the LEDs.

Each LED’s color is determined by a combination of a red, green, and blue value (RGB). We randomly assigned each sensor to be associated with alternating R, G, or B values along the string of LEDs. 45 LEDs meant 135 RGB values, and with up to 3 different sensors effecting one LED, the change in colors was quite drastic throughout the entire tent. The DMX shield was used to control the LEDs within the Arduino code. Originally we were coding for the brightness of the LEDs to change as well, but due to time constraints did not have a chance to try alternate coding.

With more time and finances, next steps would include recreating the tent with more size, sensors, and LED’s. The coding would be refined to allow for smoother changes in the LEDs, and we would determine better ways to organize the RGB value changes so human interaction with the tent can be more intriguing. We also had an early goal of incorporating ambient music tones to create a more ethereal effect when inside the tent that we would definitely explore given more time.

Here is the initial code that we first came up with. Each flex sensor has to be on its own channel and control an LED through its readings. In the final code, this was simply extrapolated to include multiple RGB values and incorporated the DMX shield.

int flex0 = A0;
int flex1 = A1;
int flex2 = A2;
int flex3 = A3;
int led1 = 9;
int led2 = 6;
int led3 = 5;
int led4 = 3;

void setup(){
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
}

void loop(){
  int flexSensorReading0 = analogRead(flex0);
  //Serial.println(flexSensorReading0);
  int flexvalue0 = map(flexSensorReading0, 149, 312, 0, 255);
  //Serial.println(flexvalue0);
  delay(250);
 
  int flexSensorReading1 = analogRead(flex1);
  //Serial.println(flexSensorReading1);
  int flexvalue1 = map(flexSensorReading1, 149, 312, 0, 255);
  //Serial.println(flexvalue1);
  delay(250);
 
  int flexSensorReading2 = analogRead(flex2);
  //Serial.println(flexSensorReading2);
  int flexvalue2 = map(flexSensorReading2, 149, 312, 0, 255);
  //Serial.println(flexvalue2);
  delay(250);
 
  int flexSensorReading3 = analogRead(flex3);
  //Serial.println(flexSensorReading3);
  int flexvalue3 = map(flexSensorReading3, 149, 312, 0, 255);
  //Serial.println(flexvalue3);
  delay(250);
 
  analogWrite(led1, flexvalue0);
  analogWrite(led2, flexvalue1);
  analogWrite(led3, flexvalue2);
  analogWrite(led4, flexvalue3);
 
  delay(30);
}

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s