Concept

The concept behind the dress is to challenge the patriarchal stereotypes that have been deeply ingrained in our society, constraining women to fit a certain mold. Women have been associated with the delicate beauty of flowers, often viewed as objects that need protection and care. Such a stereotype, however, does not define women's true identity, and it is crucial to challenge it. The dress serves as a powerful statement that women are not just fragile, but they are brave, true, and have their own feelings and thoughts that deserve to be seen and felt.

The design of the dress highlights the harmful effects of such stereotypes on women's lives. The dress looks beautiful and delicate from the outside, but upon closer inspection, it reveals the hidden harms that stereotypes like this have on women. The different parts of the dress represent different aspects of this stereotype, such as the fragility and fear that women are supposed to embody, the constraint on women's movements, and the idea that women should not care about the outside world.

Electronics

2 x Neopixel Strips

1 x Heart beat sensor

Fabrication

The symbolism and contrast are considered to create a dress that conveys a powerful message. The bottom part of the dress is filled with beautiful flower petals, representing the stereotype of women as delicate flowers. However, the inner face is very uncomfortable, and the dress is tight, representing the hidden harms of this stereotype. The petals are beautiful, but they hide the harsh reality of the constraint that women face.

The middle part of the dress is covered in thin, shiny fabric that barely covers anything, representing the fragility and fear that women are supposed to embody. The fabric is delicate, but it reveals how women are often forced to expose themselves in a way that makes them feel uncomfortable and vulnerable.

The collar of the dress has many layers that block the sight, representing the stereotype that women should not care about the outside world. The iron sticks sticking out of the collar represent how sharp this constraint is, how it can hurt women and prevent them from expressing themselves freely. The mask also blocks the woman's face, representing how stereotypes prevent women from being seen and heard, how they are expected to hide their true selves behind a façade.

Finally, the big pumping shining heart outside the body represents the bravery and true nature of women that should be seen and felt. The heart symbolizes how women are not just objects to be protected, but they have their own emotions, desires, and strengths that deserve to be recognized and celebrated. The dress embodies the spirit of women's liberation, a spirit that challenges the patriarchal stereotypes and promotes a more nuanced and empowering view of women.

In conclusion, the dress is a work of art that challenges stereotypes and promotes women's empowerment. It is a powerful statement that highlights the harms of patriarchal stereotypes and celebrates the true identity of women. Through this dress, the designers aim to inspire women to embrace their true selves, to break free from the constraints of stereotypes, and to express themselves freely.

Problems

When connecting the heart-rate sensor to the LED strips, I encountered an issue where the embedded LED on the Arduino would blink in sync with the heartbeat, but the LED strips remained unresponsive. Later I found out that the number of heartbeats was being calculated based on the average number every 20 beats, using the millis() function. The data_effect value was responsible for controlling the embedded LED's HIGH or LOW mode. Unfortunately, the "if led_state = HIGH" condition resulted in a series of continuous LOW signals with a brief HIGH signal that was too short for the Neopixel to register.

To resolve this problem, we modified the conditionals by using a counter that incremented after each round, with the aid of the millis() function. The counter then controlled the LED strips' conditions. After these adjustments, the LED strips began blinking in sync with the heartbeat.

未命名.mov

Code

// Function: This program can be used to measure heart rate, the lowest pulse in the program be set to 30.
//         Use an external interrupt to measure it.
// Hardware: Grove - Ear-clip Heart Rate Sensor, Grove - Base Shield, Grove - LED
// Arduino IDE: Arduino-1.0
// Author: FrankieChu
// Date: Jan 22, 2013
// Version: v1.0
// by www.seeedstudio.com
//Heart rate
#define LED 13//indicator, Grove - LED is connected with D4 of Arduino
//xboolean led_state = LOW; //state of LED, each time an external interrupt
//will change the state of LED
unsigned char counter;
unsigned long temp[21];
unsigned long sub;
bool data_effect = true;
unsigned int heart_rate;//the measurement result of heart rate

const int max_heartpluse_duty = 2000;//you can change it follow your system's request.
//2000 meams 2 seconds. System return error
//if the duty overtrip 2 second.

//LED pixels1
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to match the rest of the
// Adafruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PINs1        6 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS1 120 // Popular NeoPixel ring size

// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// pixels1s you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels1(NUMPIXELS1, PINs1, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels

long int blinkTime = 200;
long int blinkStartTime = 0;
boolean lightsOn = false;
int prevCounter = 0;

void setup() {

  pixels1.begin(); // INITIALIZE NeoPixel pixels1 object (REQUIRED)
  pixels1.clear(); // Set all pixel colors to 'off'
 
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
  Serial.println("Please ready your chest belt.");
  delay(5000);
  arrayInit();
  Serial.println("Heart rate test begin.");
  attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2

  Serial.begin(9600);   // We'll send debugging information via the Serial monitor
  pinMode(6, OUTPUT);
}

void loop()
{
  if (counter != prevCounter) {
    blinkStartTime = millis();
    lightsOn = true;
    Serial.println("lights on");
    //    prevCounter = counter;
    pixels1.fill(pixels1.Color(198, 0, 211), 0, 120);
    pixels1.show();
    prevCounter = counter;
    delay(50);
  }

  if (millis() - blinkStartTime > blinkTime) {
    lightsOn = false;
    Serial.println("lights off");
    pixels1.fill(pixels1.Color(0, 0, 0), 0, 0);
    pixels1.show();
  }
}

/*Function: calculate the heart rate*/
void sum()
{
  if (data_effect)
  {
    heart_rate = 1200000 / (temp[20] - temp[0]); //60*20*1000/20_total_time
    Serial.print("Heart_rate_is:\\t");
    Serial.println(heart_rate);
  }
  data_effect = 1; //sign bit
}
/*Function: Interrupt service routine.Get the sigal from the external interrupt*/
void interrupt()
{
  temp[counter] = millis();
  Serial.println(counter, DEC);
  Serial.println(temp[counter]);
  switch (counter)
  {
    case 0:
      sub = temp[counter] - temp[20];
      Serial.println(sub);
      break;
    default:
      sub = temp[counter] - temp[counter - 1];
      Serial.println(sub);
      break;
  }
  if (sub > max_heartpluse_duty) //set 2 seconds as max heart pluse duty
  {
    data_effect = 0; //sign bit
    counter = 0;
    Serial.println("Heart rate measure error,test will restart!" );
    arrayInit();
  }
  if (counter == 20 && data_effect)
  {
    counter = 0;
    sum();
  }
  else if (counter != 20 && data_effect)
    counter++;
  else
  {
    counter = 0;
    data_effect = 1;
  }
}
/*Function: Initi/alization for the array(temp)*/
void arrayInit()
{
  for (unsigned char i = 0; i < 20; i ++)
  {
    temp[i] = 0;
  }
  temp[20] = millis();
}

Images & Videos

IMG_7279.HEIC

IMG_7288.JPG

IMG_7290.png