Programmable t-shirt




This is a programmable t-shirt that reproduces a light sequence in a form of a heart. User can program what sequence he/she wants and after a short amount of time the t-shirt will reproduce the saved sequence. This means that there are two different moments of interaction that combine together to produce an effect. Also, there is no limit of possible sequences, which means that there is no pre-programmed sequences. User has to “teach” the t-shirt how the light sequence will be displayed using a small button on the bottom of the t-shirt. If there is no interaction the t-shirt won’t reproduce anything in order to save power.


Working on clothes with this kind of technology is really hard. First of all I had to come with an idea to friendly embed wires, arduino, external power source, battery, etc. Then I started thinking about the circuit and tried to figure out what materials I would need. After the tests using the breadboard, it comes the hardest part for me – soldering everything in a reasonable manner. The last thing I did was “the consolidation”, which means trying to embed a lot of stuff in the t-shirt, using a reformulation of the first idea.


The materials I used were: 2v external power source, battery, regular wire, luminescent wire, a button, resistors, a relay, the arduino and a t-shirt.

The circuit

The external power and the arduino are connected to the relay, in order to control when to power on the luminescent wire. Also, there is a button connected to a digital pin that works as an input in the system. 




Nuno Laginha

Making things interactive

Fall 2008



int ledPin = 8;                // LED connected to digital pin 8

int button = 0;                // Button connected to analog pin 0

int val = 0;                   

int counter = 0;               // Variable to count the number of button clicks

boolean buttonDown = false;    // Button state

boolean isLightOn = false;     // Light state

int time = 1000;               // Time for programming

int myArray[20];               // List of delays

int crono = 0;                 // Variable for recent delay

int i = 0;                     // Control variable used in the Array


void setup()                    // run once, when the sketch starts


  pinMode(ledPin, OUTPUT);      // sets the digital pin as output

  pinMode(button, INPUT);       // sets the digital pin as input




void loop(){                     // run over and over again


 while(time>0){                  // While time bigger than 0 keep reading inputs


    val = analogRead(button);

    val = val/4;


    if(val == 0){



      while(val == 0){


      val = analogRead(button);

      val = val/4;






    myArray[i] = crono;          // Add recent delay to one of the items in the array list





    counter++;                   // Increment one more click in the button



    delay(10);                   // Regulates time





//When programming time is over and if there the button was clicked at least once, start reproducing sequence



      for(i=0;i<20;i++){          // For each item in the Array

         if(myArray[i]>0){        // If the delay stored is higher than 0


         digitalWrite(ledPin, HIGH);

         delay(myArray[i]/10);    // Use the delay previously stored in one item of the Array list

         digitalWrite(ledPin, LOW);







int f=0;                           


for(f=0;f<20;f++){                 // Clean up the Array

   myArray[f]= 0;  



i=0;                               // Start over the Array

counter=0;                         // Set button clicks to 0

time=1000;                         // Restart timer




Leave a Reply

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

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

Google+ photo

You are commenting using your Google+ 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 )


Connecting to %s