All posts by Jessie Waisze Wan

Heartrate LED tutu skirt



UPDATED ON 12/12/2014: Click here for my process


My concept for the final project is inspired by the costumes from the VS fashion show, I think it would be interesting to incorporate the user’s heart rate and LED light into the costume. I designed and made the bustier top, tutu skirt and a long tulle train as the costume. By attaching the heart rate sensor onto the user’s fingers, the sensor will detect the user’s heartbeat, and using the LED light as the output, they should blink frequently as the user’s heart rate become faster. So the audience can tell how nervous or excited is the performer by reading the LED light on the tutu.

I used mostly lace and tulle for the costume, because I found those fabric are commonly used for most of the lingerie from the  VS fashion show (lace and tulle are elegant and sexy!) The theme of my costume would be called “The Bloom of Dark Nature” because of the roses and vines on the skirt and my arm, the heart rate sensor is connected to my finger, which looks like my blood is making the roses bloom. I also decided to add artificial black roses and ribbon to the costume so they can hide some parts of the circuit and to make it looks more visually pleasing.


This Arduino program reads data from the pulse sensor and outputs flashes to the open heart LED display.

#include <avr/pgmspace.h>

//Defines the pins used for Heart
int pin1 =6;
int pin2 =10;
int pin3 =11;
//Sets how long in Microseconds each LED is on for.
int blinkdelay = 100;

//Sets how many times each frame repeats. The larger
//the number, the longer each frame is displayed
//before moving onto the next one.
int runspeed = 5;

const int pins[] = {

const int heartpins[27][2] ={
{pin3, pin1},
{pin1, pin3},
{pin2, pin1},
{pin1, pin2}


byte heart[][27] PROGMEM ={

// Pins
//const int ledPin = 13;
const int sensePin = 5;

// LED blink variables
int ledState = LOW;
long ledOnMillis = 0;
long ledOnInterval = 50;

// Hearbeat detect variables
int newHeartReading = 0;
int lastHeartReading = 0;
int Delta = 0;
int recentReadings[8] = {0,0,0,0,0,0,0,0};
int historySize = 8;
int recentTotal = 0;
int readingsIndex = 0;
boolean highChange = false;
int totalThreshold = 2;

// Heartbeat Timing
long lastHeartbeatTime = 0;
long debounceDelay = 150;
int currentHeartrate = 0;

void setup() {
// initialize the serial communication:
// initialize the digital pin as an output:
//pinMode(ledPin, OUTPUT);

void loop() {
// Turn off LED
//digitalWrite(ledPin, LOW);

// Read analogue pin.
newHeartReading = analogRead(sensePin);
//Calculate Delta
Delta = newHeartReading – lastHeartReading;
lastHeartReading = newHeartReading;

// Find new recent total
recentTotal = recentTotal – recentReadings[readingsIndex] + Delta;
// replace indexed recent value
recentReadings[readingsIndex] = Delta;
// increment index
readingsIndex = (readingsIndex + 1) % historySize;


// Decide whether to start an LED Blink.
if (recentTotal >= totalThreshold) {
// Possible heartbeart, check time
if (millis() – lastHeartbeatTime >= debounceDelay) {
// Heartbeat
//digitalWrite(ledPin, HIGH);
currentHeartrate = 60000 / (millis() – lastHeartbeatTime);
lastHeartbeatTime = millis();
// Print Results
if (currentHeartrate <= 200) {
delay(10); }

void turnon(int led) {
int pospin = heartpins[led][0];
int negpin = heartpins[led][1];
pinMode (pospin, OUTPUT);
pinMode (negpin, OUTPUT);
digitalWrite (pospin, HIGH);
digitalWrite (negpin, LOW);
void alloff() {
for(int i = 0; i < 6; i++) {
pinMode (pins[i], INPUT);
void play() {
boolean run = true;
byte k;
int t = 0;
while(run == true) {
for(int i = 0; i < runspeed; i++) {
for(int j = 0; j < 27; j++) {
k = pgm_read_byte(&(heart[t][j]));
if (k == 2) {
t = 0;
run = false;
else if(k == 1) {
else if(k == 0) {
} t++;
void blinkall(int numblink) {
for(int n = 0;n < numblink;n++) {
for(int i = 0; i < runspeed; i++) {
for(int j = 0; j < 27; j++) {
void sequenceon() {
for(int i = 0; i < 27; i++) {

Cloud Scarf by by Kenix, Alexandr, Jessie and Joyce

Screen Shot 2014-11-17 at 11.38.08 PM



Before we decided to make the Cloud Scarf, originally we wanted to create a mobile tank that controlled by a glove with muscle sensor, but then we encountered some troubles on how to make the prototype express the communication and social context. Then we had an idea of making a cloud installation filled with confetti inside, which is meant for surprises and celebrations, so when the button is pressed, the confetti will fall onto people. At the end, we decided to develop that idea further, so that our prototype would be wearable with a stronger social context. A fluffy scarf that can send notifications to the user when they received emails, the LED will become brighter and the speaker will make sound as the amount of emails increase.

Continue reading Cloud Scarf by by Kenix, Alexandr, Jessie and Joyce

Spiky Kitty

Screen Shot 2014-10-28 at 3.52.07 PM

The story begins with when I used to live with my cousin, she was worried that I might get attacked or harassed from walking alone at night in the campus or downtown area in general. She was even more worried that If someone trying to grab onto me,  I won’t have enough strength to struggle or scream. (Apparently she said I punch like a girl!!)

Then I got an idea for assignment 2, I created a pair of self defense gloves.The glove has a buzzer as the actuator, and it would set off by switching on a button. I want them to look cute but fierce at the same time. (Just like my cat Roxy, she will stick out her claws at me when she is pissed, but when she is relaxed and contented, her claws will go back into her paws, like a marshmallow) So I decided to drew a cat’s face onto the gloves and stitched the studs onto the knuckle area. Let say if I walked down the street and someone is trying to attack me, first I would reach into my gloves and switched on the button to set off the alarm because I feel scared, then the buzzer will start making “beep beep” alarm noise, if the harrasser still decided to make a move on me, then I will punch him will the knuckle studs.

click here for my process


int speakerPin = 9;
int switchPin = 5;
int switchValue;
void setup()
         pinMode(speakerPin, OUTPUT);
         pinMode(switchPin, INPUT);
         digitalWrite(switchPin, HIGH); // sets the default (unpressed) state of switchPin to HIGH
void loop()
          switchValue = digitalRead(switchPin); // check to see if the switch is pressed
          if (switchValue == HIGH) { // if the switch is pressed then,
                    digitalWrite(speakerPin, HIGH);
          else { // otherwise,
                    digitalWrite(speakerPin, LOW);
          scale(); // call the scale() function
   scale(); // call the scale() function
          delay(1000); // delay for 1 second
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)     // the sound producing function
          int x;
          long delayAmount = (long)(1000000/frequencyInHertz);
          long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
          for (x=0;x<loopTime;x++)
void scale ()
          beep(speakerPin,2093,500); //C: play the note C (C7 from the chart linked to above) for 500ms
          beep(speakerPin,4186,500); //C
          beep(speakerPin,2093,500); //C: play the note C (C7 from the chart linked to above) for 500ms
          beep(speakerPin,4186,500); //
          beep(speakerPin,2093,500); //C: play the note C (C7 from the chart linked to above) for 500ms
          beep(speakerPin,4186,500); //
          beep(speakerPin,2093,500); //C: play the note C (C7 from the chart linked to above) for 500ms
          beep(speakerPin,4186,500); //

Scrunchie Collar


*Updated on October 7th, 2014*


I added the flower brooch onto the Lilypad.

I forgot to tell you guys that when I was working on the circuit, my cat was biting on the alligator clips and I grabbed them immediately, then I swept a sewing needle onto the chair, and guess what!?

It stabbed my back thigh, ouchhhh!







I wanted to make a piece of jewelry that can express the feeling of happiness, and recently some of my cousins are getting engaged/married and I was inspired by that. Originally, I was planning to make a srunchie-like headpiece, but while I was sewing the lilypad, light sensor and the LEDs onto the fabric, I realized it would look much better as a neckpiece.

What the necklace will do is, after the lilypad switch is on, when the user is outdoor with strong natural sunlight, the LEDs will shine brightly, and when the user is indoor with regular room lighting or in a dark environment, the LEDs will start blinking.

I used polyester chiffon as the fabric for scrunchie because chiffon is an elegant material, it is soft and flowly, and also has a certain transparency which will work well with the lights. I also used plastic pearl beads to cover the conductive thread, because not only it is visually pleasing but also they prevent the conductive thread from touching each other, which can stop the circuit working properly.

Scrunchie collar is designed for users to wear it on special occasions, for example, the user is having a great time at a party (assuming it has indoor dim lighting), then the scrunchie collar will start to blink and flash as an representation of the user’s joyfulness.

Click here for my process of making the scrunchie collar.


I used the Lilypad Arduino website and UNSW’s light sensor tutorial as a guide. I modified the codes according to my need.

int ledPin = 5;    //LED is connected to digital pin 5
int ledPin1 = 6;   //LED is connected to digital pin 6
int ledPin2 = 9;  //LED is connected to digital pin 9
int ledPin3 = 10; // LED is connected to digital pin 10
int sensorPin = A2; // light sensor is connected to analog pin A2
void setup()
         pinMode(ledPin, OUTPUT);     // sets the ledPin to be an output
         pinMode(ledPin1, OUTPUT);    // sets the ledPin1 to be an output
         pinMode(ledPin2, OUTPUT);  // sets the ledPin2 to be an output
         pinMode(ledPin3, OUTPUT);  // sets the ledPin3 to be an output
         Serial.begin(9600); //initialize the serial port
void loop() // run over and over again
          int sensorReading = analogRead(sensorPin);
          int brightness = map(sensorReading, A2, 10, A2, 50);
          analogWrite(ledPin, brightness);
          analogWrite(ledPin1, brightness);
          analogWrite(ledPin2, brightness);
          analogWrite(ledPin3, brightness);   //set the led to the brightness value



click image for larger size

Last week, one of my topics for “The Thing From the Future” card game is Anger, and I also got inspiration from octopus, because someone mentioned about octopus in class.

Octopet is about assisting user for anger management, just when the user about to lose their cool and do something they would regret later, Octopet would wrap its soft tentacles around the user’s body to restrain them from moving. This way, it can protect the user from harming themselves or others. First, Octopet would give the user a timeout, and rubbing their body with tentacles. Then it would comfort the user by saying phrases like, “I know you feel things are getting in your way, but we can figure things out peacefully.” After the user counts from 1 to 10 and takes a few deep breaths, they would probably calm down a bit.

Details of Octopet:

– Wearable device for head, the inside is attached with sensor pads that can detect user’s emotions

– During the alert mode, the tentacles will immediately wrap around  user’s body

– It will also release scent of stress relief’s herb to help user relax

– made out of soft material like fleece fabric, polyester stuffing

– It is also user customizable, so the “skin” of Octopet can change according to the user’s preference

Screen Shot 2014-09-16 at 3.16.09 PM Screen Shot 2014-09-16 at 3.16.20 PM Screen Shot 2014-09-16 at 3.16.32 PM


The process of making Octopet is in this link (my ocadu blog):