5. E-textiles¶
Research¶
E-textiles are textiles integrated with electronic components like sensors, conductive threads, and microcontrollers. They combine traditional fabrics with digital interactivity, allowing the textiles to respond to stimuli like movement, temperature, or pressure. These smart textiles are used in wearables, health monitoring, and interactive fashion, enabling functionalities such as lighting, data collection, and communication. E-textiles use soft, flexible materials like conductive fabrics, avoiding rigid electronics. They provide a platform for innovation across fashion, healthcare, and engineering.
For more details, visit: Electronic Textiles Overview.
get inspired!
Check out and research alumni pages to betetr understand how to document and get inspired
-
Design- Zhahia Albakri - Techwork
-
Trajectory - Ieva Maria Dautartaite
References & Inspiration¶
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
- Image reference
Tools¶
Process and workflow¶
My sketches are ...
This schematic 1 was obtained by..
This tutorial 2 was created using..
footnote fabrication files
Fabrication files are a necessary element for evaluation. You can add the fabrication files at the bottom of the page and simply link them as a footnote. This was your work stays organised and files will be all together at the bottom of the page. Footnotes are created using [ ^ 1 ] (without spaces, and referenced as you see at the last chapter of this page) You can reference the fabrication files to multiple places on your page as you see for footnote nr. 2 also present in the Gallery.
Code Example¶
Use the three backticks to separate code.
// int blue = D1, white = D2, red = D3, button = D10;
volatile int buttonCount = 0;
unsigned long lastMillis = 0;
unsigned long lastDebounceTime = 0; // Last time the button input was toggled
unsigned long debounceDelay = 200; // Debounce delay in milliseconds
int currentPattern = 0;
bool changePattern = true;
void setup() {
Serial.begin(115200);
pinMode(blue, OUTPUT);
pinMode(white, OUTPUT);
pinMode(red, OUTPUT);
pinMode(button, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(button), buttonPressed, RISING);
}
void loop() {
// Check to change the pattern every second or on button press
if (millis() - lastMillis >= 1000 ) {
if (changePattern) {
currentPattern = buttonCount; // Update current pattern only on change
Serial.println(buttonCount);
choosePattern(currentPattern);
buttonCount = 0; // Reset button count after updating the pattern
changePattern = false; // Block pattern change until next button press
}
lastMillis = millis();
}
delay(50); // Control loop speed
}
void buttonPressed() {
unsigned long currentTime = millis();
// Check if the current time is at least debounceDelay milliseconds
// past the last debounce time
if ((currentTime - lastDebounceTime) > debounceDelay) {
buttonCount++;
changePattern = true;
Serial.println(buttonCount);
lastDebounceTime = currentTime;
lastMillis = millis();
}
}
void choosePattern(int pattern) {
// Reset all LEDs before setting new pattern
digitalWrite(blue, LOW);
digitalWrite(white, LOW);
digitalWrite(red, LOW);
switch (pattern) {
case 1:
// Light Show 1: Blue - Blinking
for (int i = 0; i < 3; i++) {
digitalWrite(blue, HIGH);
delay(200);
digitalWrite(blue, LOW);
delay(200);
}
break;
case 2:
// Light Show 2: White - Fade In and Out
for (int brightness = 0; brightness < 255; brightness += 5) {
analogWrite(white, brightness);
delay(20);
}
for (int brightness = 255; brightness >= 0; brightness -= 5) {
analogWrite(white, brightness);
delay(20);
}
break;
case 3:
// Light Show 3: Red - Quick Flash
digitalWrite(red, HIGH);
delay(100);
digitalWrite(red, LOW);
delay(100);
digitalWrite(red, HIGH);
delay(100);
digitalWrite(red, LOW);
break;
case 4:
// Light Show 4: Blue and White - Alternating
for (int i = 0; i < 4; i++) {
digitalWrite(blue, HIGH);
delay(500);
digitalWrite(blue, LOW);
digitalWrite(white, HIGH);
delay(500);
digitalWrite(white, LOW);
}
break;
case 5:
// Light Show 5: White and Red - Simultaneous Blink
for (int i = 0; i < 3; i++) {
digitalWrite(white, HIGH);
digitalWrite(red, HIGH);
delay(300);
digitalWrite(white, LOW);
digitalWrite(red, LOW);
delay(300);
}
break;
case 6:
// Light Show 6: Blue - Pulse Fade In and Out
for (int brightness = 0; brightness < 255; brightness += 10) {
analogWrite(blue, brightness);
delay(30);
}
for (int brightness = 255; brightness >= 0; brightness -= 10) {
analogWrite(blue, brightness);
delay(30);
}
break;
case 7:
// Light Show 7: Red and White - Running Lights
for (int i = 0; i < 6; i++) {
digitalWrite(red, HIGH);
delay(150);
digitalWrite(red, LOW);
digitalWrite(white, HIGH);
delay(150);
digitalWrite(white, LOW);
}
break;
case 8:
// Light Show 8: All LEDs - Flash Together
for (int i = 0; i < 3; i++) {
digitalWrite(blue, HIGH);
digitalWrite(white, HIGH);
digitalWrite(red, HIGH);
delay(500);
digitalWrite(blue, LOW);
digitalWrite(white, LOW);
digitalWrite(red, LOW);
delay(500);
}
break;
case 9:
// Light Show 9: All LEDs - Strobe Effect
for (int i = 0; i < 10; i++) {
digitalWrite(blue, HIGH);
digitalWrite(white, HIGH);
digitalWrite(red, HIGH);
delay(100);
digitalWrite(blue, LOW);
digitalWrite(white, LOW);
digitalWrite(red, LOW);
delay(100);
}
break;
case 10:
// Light Show 10: Red - Slow Glow
for (int brightness = 0; brightness < 255; brightness += 3) {
analogWrite(red, brightness);
delay(50);
}
for (int brightness = 255; brightness >= 0; brightness -= 3) {
analogWrite(red, brightness);
delay(50);
}
break;
default:
// Default Light Show: All LEDs Sequential Blink
int leds[] = {blue, white, red};
for (int led = 0; led < sizeof(leds)/sizeof(leds[0]); led++) {
digitalWrite(leds[led], HIGH);
delay(250);
digitalWrite(leds[led], LOW);
}
break;
}
}
void setup() { Serial.begin(115200); pinMode(blue, OUTPUT); pinMode(white, OUTPUT); pinMode(red, OUTPUT); }
void loop() { int sensorValue = analogRead(A0); // Read the value from the analog sensor int brightness = map(sensorValue, 600, 4095, 0, 255); // Map the sensor value to brightness int flashDelay = map(sensorValue, 600, 4095, 1000, 100); // Map the sensor value to flash delay (slower to faster)
// Update LED with new brightness and flashing rate updateLED(blue, brightness, flashDelay); updateLED(white, brightness, flashDelay); updateLED(red, brightness, flashDelay);
delay(50); // Short delay to stabilize loop and reduce sensor reading frequency }
void updateLED(int ledPin, int brightness, int flashDelay) { analogWrite(ledPin, brightness); // Set the brightness delay(flashDelay); // Wait for the flash delay duration analogWrite(ledPin, 0); // Turn off the LED delay(flashDelay); // Wait for the flash delay duration again }
```
Results¶
Video¶
From Vimeo¶
Sound Waves from George Gally (Radarboy) on Vimeo.