Skip to content

5. E-textiles

References & Inspiration

Wearables

LEDs + Optic Fiber JellyFish dress

Dress that becomes more or less transparent based on interactions https://www.studioroosegaarde.net/project/intimacy

https://behnazfarahi.com/bodyscape/ https://behnazfarahi.com/Iridescence/ https://behnazfarahi.com/opale/ https://behnazfarahi.com/ruff/

Sense-Roid: hug yourself https://www.novriki.com/sense-roid-en/

Hug shirt: https://cutecircuit.com/hugshirt/

Imogen Heap gloves https://mimugloves.com/

Traces

get types of traces from slides

Conductive thread: Handmade stitches, Machine embroidery

Conductive inks made by Lauriane and Amandine and Laora: https://zoeey.notion.site/Conductible-Inks-4d0df4c01e364a5e9a72b6c89b5fc38c

Knitting with conductive yarn

Conductive fabric

Continuity Tester

Machine embroidery

Used LED sequins

Switches

Binary Get screenshots from class video

http://thesoftcircuiteer.net/projects/soft-switches/

Soft Switch

Switch I made:

Circuit with LED on/off

Using a switch with Arduino

To use switches with Arduino, we need additional resistors.

Digital sensor : use a pull-up resistor around 10 kΩ

Code
/*Emma Pareschi - Fabricademy 2022/2023
 * we read the value of a digital sensor connected to pin digital_sensor_pin and
 * we print it on the Serial Monitor
 */

int digital_sensor_pin = 8;     //change the pin, where the sensor is connected
int digital_sensor_value = 0;   //variable in which we save the sensor voltage

void setup() {
  // put your setup code here, to run once:

  //pinMode(digital_sensor_pin, INPUT);
  pinMode(digital_sensor_pin, INPUT); //define the pin as INPUT PULLUP
  Serial.begin(9600); //open communication

}

void loop() {
  // put your main code here, to run repeatedly:
  // digitalRead(pin);
  digital_sensor_value = digitalRead(digital_sensor_pin); // read the sensor 

  Serial.print("the status of the sensor is: ");
  Serial.println(digital_sensor_value); //print the value
  delay(100);

}

Sensors

Analog

Lisa's soft sensors: http://thesoftcircuiteer.net/projects/soft-sensors/

Soft sensors are particularly interesting to me, because they go beyound simply sewing an electrical circuit on top of fabric. They use the properties of the fabric itself as part of the design and offer new modes of interaction: bending, squeezing, stretching...

Soft sensor

Sensor I made:

Using a pressure sensor with Arduino

For analog sensor you also need an additional resistor, here as a voltage divider

I didn't have a multimeter so I made a Arduino ohmmeter https://electropeak.com/learn/make-a-digital-multimeter-with-arduino/

Code
/*
  Ohmmeter with Arduino - Automatic range 
  modified on 21 Jul 2019 
  by Saeed Hosseini @ Electropeak 
  Home 
*/ 
const int OhmMeter = 0; 
const int R3 = 6; 
const int R2 = 5; 
const int R1 = 4; 
float R = 0.00; 
void calculate_resistor() { 
  float v_ref = 4.94; 
  float r1 = 0.00; 
  float r_ref1 = 1000.00; 
  float adc_value1 = 0.00;
  float voltage1 = 0.00; 
  float r2 = 0.00; 
  float r_ref2 = 10000.00;
  float adc_value2 = 0.00;
  float voltage2 = 0.00; 
  float r3 = 0.00; 
  float r_ref3 = 100000.00; 
  float adc_value3 = 0.00;
  float voltage3 = 0.00; 
  pinMode(R1, OUTPUT); 
  pinMode(R2, INPUT); 
  pinMode(R3, INPUT); 
  digitalWrite(R1, HIGH); 
  for (int i = 0; i < 20 ; i++) 
  { 
    adc_value1 = adc_value1 + analogRead(OhmMeter); 
    delay(3); 
  } 

  adc_value1 = adc_value1 / 20; 

  if (adc_value1 < 1022.90) 
  { 
    voltage1 = ((adc_value1 * v_ref) / 1024); 
    r1 = (voltage1 * r_ref1) / (v_ref - voltage1); 
  } 
  pinMode(R1, INPUT); 
  pinMode(R2, OUTPUT); 
  pinMode(R3, INPUT); 
  digitalWrite(R2, HIGH); 
  for (int i = 0; i < 20 ; i++) 
  { 
    adc_value2 = adc_value2 + analogRead(OhmMeter); 
    delay(3); 
  } 
  adc_value2 = adc_value2 / 20; 
  if (adc_value2 < 1022.90) 
  { 
    voltage2 = ((adc_value2 * v_ref) / 1024); 

    r2 = (voltage2 * r_ref2) / (v_ref - voltage2); 
  } 
  pinMode(R1, INPUT); 
  pinMode(R2, INPUT); 
  pinMode(R3, OUTPUT); 
  digitalWrite(R3, HIGH); 
  for (int i = 0; i < 20 ; i++) 
  { 
    adc_value3 = adc_value3 + analogRead(OhmMeter); 
    delay(3); 
  } 
  adc_value3 = adc_value3 / 20; 
  if (adc_value3 < 1022.90) 
  { 
    voltage3 = ((adc_value3 * v_ref) / 1024); 
    r3 = (voltage3 * r_ref3) / (v_ref - voltage2); 
  } 
  r1 = r1 / 1000; 

  r2 = r2 / 1000; 

  r3 = r3 / 1000; 
  if (r1 < 2 && r2 < 101 && r3 < 1001) R = r1*1000; 
  else if (r1 > 2 && r2 < 101 && r3 < 1001) R = r2; 
  else if (r1 > 2 && r2 > 101 && r3 < 2000) R = r3; 
  else R = 0.00; 
  Serial.print("R = "); 

  Serial.println(R, 2); 
} 
void setup() { 

  Serial.begin(9600); 
} 
void loop() { 
  calculate_resistor(); 
  Serial.println("_________________________________________"); 

  delay(2500); 
} 

I tried it on a 10 kΩ resistor and got readings around 9.89 / 9.90.

I then tried it on the analog sensor: - min resistance value: 18 kΩ - max resistance value: 75 kΩ

The average resistance value is 46.5 kΩ. The closest resistor I had on hand was 56 kΩ.

Code
/* Emma Pareschi - Fabricademy 2022/2023
 * with this sketch we read the analog sensor connected to pin analog_sensor_pin
 */

int analog_sensor_pin = A0;   //change the pin, where the sensor is connected?
int analog_sensor_value = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(analog_sensor_pin, INPUT);
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
  analog_sensor_value = analogRead(analog_sensor_pin); //read the Voltage of the pin sensor

  Serial.println(analog_sensor_value); // print the value on the Serial monitor
  delay(100);

}

Tried Analog reading

Analog values read on the Serial Monitor: between 200 (when pressed) and 1000 (when not pressed).

I also tried with a 10kOHM and a 100kOHM and got a similar range.

Max number is 1024 (5V) and 0 (0V) so 200/1000 is a good range!

Code
const int ANALOG_SENSOR_PIN = A0;
const int ANALOG_SENSOR_MIN = 200;
const int ANALOG_SENSOR_THRESHOLD = 750;
const int SPEAKER_PIN = 8;

int analog_sensor_value = 0;


void setup() {
  pinMode(ANALOG_SENSOR_PIN, INPUT);
  Serial.begin(9600);

}

void loop() {

  analog_sensor_value = analogRead(ANALOG_SENSOR_PIN);
  Serial.println(analog_sensor_value);

  if (analog_sensor_value<ANALOG_SENSOR_THRESHOLD)
  {
    analog_sensor_value = map(analog_sensor_value, ANALOG_SENSOR_MIN, ANALOG_SENSOR_THRESHOLD, 5000, 200);
    tone(SPEAKER_PIN, analog_sensor_value, 200);
  }

  delay(50);

}

Sound sensitive headband

Flora

Used Neopixels


Last update: 2022-12-12