Wearable Electronics . Siggraph 2010 LED tshirts

Posted in: Showroom
Tags: , , , , ,

As part of our presentation at SIGGRAPH 2010 conference in LA, we have developed this wearable electronics project with LED light assembly and programming with Arduino Lilypads.

A collaborative project among Sandro Alberti (concept, design and programming), Melinda Barnadas (development), Claudia Hill (silkscreen printing), Katie Rast and Bea Alvarez (assembly, tailoring and late night magic), the result: jaw dropping LED illuminated t-shirts for the winners of Siggraph International Resources Annual t-shirt giveaway!!!!

The initial LED light assembly and programming was created using Arduino Lilypads. Check out a test in this
video in Youtube

For this project, the lights were programmed in Arduino to follow a slow, subtle pattern (with slight random variations). The lights at bottom of video are in one group of 5, and then there is a light further up which stays on a bit longer (on the shirt, that light will be separate from the rest). Then, after some time, all the lights come alive as the rhythm speeds up. Then, back to a subtle pattern for a few minutes.

Arduino is a programming language with an interface that is available free (open source), here:
www.arduino.cc

Here’s the code that we’re running; feel free to paste it into your very own Arduino ‘sketch’ (‘program’) as a head-start for some cool programming:

s2010 international blinking t-shirt LEDs

Created 2 July 2010
By Sandro Alberti

int led6Neg = 1;
int led6Pos = 0;
int led5Neg = 17;
int led4Neg = 16;
int led3Neg = 15;
int led345Pos = 14;
int led12Pos = 11;
int led2Neg = 10;
int led1Neg = 9;
int x=0;
int y=0;
int looper=0;
int randNumber001=0;
int randNumber002=0;
int randNumber003=0;
int randNumber004=0;
int randomTime=3;
int randomLoop=0;

void setup()
{
pinMode(led5Neg, OUTPUT);
pinMode(led4Neg, OUTPUT);
pinMode(led3Neg, OUTPUT);
pinMode(led345Pos, OUTPUT);
pinMode(led6Pos, OUTPUT);
pinMode(led6Neg, OUTPUT);
pinMode(led12Pos, OUTPUT);
pinMode(led2Neg, OUTPUT);
pinMode(led1Neg, OUTPUT);
}

void loop()
{

led1On(); // led1 to turn on
randNumber001 = random(1, 5000);
delay(randNumber001);

led2On(); // led2 to turn on
delay(1000);

led3On(); // led3 to turn on
randNumber001 = random(0, 1000);
delay(randNumber001);

led4On(); // led4 to turn on
randNumber001 = random(0, 1000);
delay(randNumber001);

led5On(); // led5 to turn on
delay(1000);

while(looper < 3){
led6OnFast(); // led6 to turn on
delay(100);
led6OnFast(); // led6 to turn on
delay(100);
led6OnFast(); // led6 to turn on
delay(100);
led6On(); // led6 to turn on
delay(100);
looper++;
}
looper=0;

y=++x;
if (y==randomTime) {
jumpAround();
}

}

void jumpAround() {
randomLoop = random(10,50);
while(looper < randomLoop){
randNumber002 = random(0, 2);
while(randNumber002 == 0){
led1OnFast(); // led1 to turn on
led2OnFast(); // led2 to turn on
randNumber002 = random(0, 2);
}

randNumber003 = random(0, 2);
while(randNumber003 == 0){
led3OnFast(); // led3 to turn on
led4OnFast(); // led4 to turn on
led5OnFast(); // led5 to turn on
randNumber003 = random(0, 2);
}

randNumber004 = random(0, 2);
while(randNumber004 == 0){
led6OnFast(); // led6 to turn on
randNumber004 = random(0, 2);
}
looper++;
}
looper=0;
x=0;
randomTime = random(12, 60);
}

int led1On()
{
digitalWrite(led1Neg, LOW);   // sets the LED on
digitalWrite(led12Pos, HIGH);
delay(1000);                  // waits for a second
digitalWrite(led1Neg, HIGH);    // sets the LED off
digitalWrite(led12Pos, LOW);
}

int led1OnFast()
{
digitalWrite(led1Neg, LOW);   // sets the LED on
digitalWrite(led12Pos, HIGH);
delay(100);                  // waits for a second
digitalWrite(led1Neg, HIGH);    // sets the LED off
digitalWrite(led12Pos, LOW);
}

int led2On()
{
digitalWrite(led2Neg, LOW);   // sets the LED on
digitalWrite(led12Pos, HIGH);
delay(1000);                  // waits for a second
digitalWrite(led2Neg, HIGH);    // sets the LED off
digitalWrite(led12Pos, LOW);
}

int led2OnFast()
{
digitalWrite(led2Neg, LOW);   // sets the LED on
digitalWrite(led12Pos, HIGH);
delay(100);                  // waits for a second
digitalWrite(led2Neg, HIGH);    // sets the LED off
digitalWrite(led12Pos, LOW);
}

int led3On()
{
digitalWrite(led3Neg, LOW);   // sets the LED on
digitalWrite(led345Pos, HIGH);
delay(500);                  // waits for a second
digitalWrite(led3Neg, HIGH);    // sets the LED off
digitalWrite(led345Pos, LOW);
}

int led3OnFast()
{
digitalWrite(led3Neg, LOW);   // sets the LED on
digitalWrite(led345Pos, HIGH);
delay(100);                  // waits for a second
digitalWrite(led3Neg, HIGH);    // sets the LED off
digitalWrite(led345Pos, LOW);
}

int led4On()
{
digitalWrite(led4Neg, LOW);   // sets the LED on
digitalWrite(led345Pos, HIGH);
delay(500);                  // waits for a second
digitalWrite(led4Neg, HIGH);    // sets the LED off
digitalWrite(led345Pos, LOW);
}

int led4OnFast()
{
digitalWrite(led4Neg, LOW);   // sets the LED on
digitalWrite(led345Pos, HIGH);
delay(100);                  // waits for a second
digitalWrite(led4Neg, HIGH);    // sets the LED off
digitalWrite(led345Pos, LOW);
}

int led5On()
{
digitalWrite(led5Neg, LOW);   // sets the LED on
digitalWrite(led345Pos, HIGH);
delay(500);                  // waits for a second
digitalWrite(led5Neg, HIGH);    // sets the LED off
digitalWrite(led345Pos, LOW);
}

int led5OnFast()
{
digitalWrite(led5Neg, LOW);   // sets the LED on
digitalWrite(led345Pos, HIGH);
delay(100);                  // waits for a second
digitalWrite(led5Neg, HIGH);    // sets the LED off
digitalWrite(led345Pos, LOW);
}

int led6On()
{
digitalWrite(led6Neg, LOW);   // sets the LED on
digitalWrite(led6Pos, HIGH);
delay(1000);                  // waits for a second
digitalWrite(led6Neg, HIGH);    // sets the LED off
digitalWrite(led6Pos, LOW);
}

int led6OnFast()
{
digitalWrite(led6Neg, LOW);   // sets the LED on
digitalWrite(led6Pos, HIGH);
delay(100);                  // waits for a second
digitalWrite(led6Neg, HIGH);    // sets the LED off
digitalWrite(led6Pos, LOW);
}

Siggraph 2010

There are no comments published yet.

Leave a Comment

Change this in Theme Options
Change this in Theme Options