Log-in | Site Admin

VERSATILE by AudreyBriot



Audrey Briot

Year of invention:

2015 – 2017


9cm x 12 cm


Versatile comes to me as an interior of a transition space, maybe a concept-car inspired by beds “à la polonaise”. In this space you take the time to wake you up, the time to reach the surface… this surface is scattered by light, a light that crosses corals. Versatile is a module which evaluate with the surrounding. Imagine you in a cocooning space with this starry sky of these intelligent eyes above: at night, optic fibers plunge you into a luminous wave world . When the sun rises, optic fibers move and let you get the natural light through holes. This light will feed during the all day the white wavy pattern which is in fact phosphorescent: when the sun will decline, this pattern will be your night light. Then, when you would like to be in the dark, with a caress you will fold these benevolent eyelids.


Woven optic fibers:

Alice Heit & Maurin Donneaud

Light patterns, Swatch Book Exchange 2016

Connect optic fibers:

Lulu, Swatch Book Exchange 2016

Movement in textile with memory wire:

Twich Knit, Swatch Book Exchange 2014

Movement in a piece of knit, Swatch Book Exchange 2015 

Weaving and movement, 2015

Emotional Dialogue, 2012

Electronic Origami Flapping Crane (not textile but a clear tutorial)


Woven Textile Design, JAN Shenton.  A contemporary book to discover weaving.
Weaving that shapes themselves, Ann Richards  A book focus on shapes created by the use of natural yarns. This book let you imagine a lot of thing with nitinol and movement, because the natural yarns are not sensitive to nitinol.


  • cotton thread, photoluminescent thread, Flexinol 200 µm, optic fibers 0,3mm



-soldering (to hack the loom)

-sculpt the flexinol/nitinol

-sandblasting (optic fibers)





Step by step:

You can weave nitinol, optic fibers and phosphorescent thread on any kind of loom. The wavy pattern is due to the threading cf. schematic.   In the case of a sampling loom:


There is different ways to set up your wrap, if I’ve read in books that forming a cross between the second and the first post are an « old » method, I share with you the method I’ve learn during my studies in textile design at ENSAAMA, Paris. You can find quiet the same directions in Woven textile design by Jan Shenton. 


Threads per cm/inch: 

If you want to include electronic and components which can be warn, I encourage you to use a natural yarn. 

This one have to be enough resistant to undergo a consistent tight tension and the repetitive moves of the reed. It had to be hard to break with your hand.

To obtain a correct density I have to calculate the number of yarn by inch or cm you will need. Wrap your yarn around a ruler, each one have to be side to side, don’t piled up them, they need to « breathe », keep a space between each one which is same size than the yarn.



// In my case, 22yarns by cm and a 12cm width= 264 yarns in total. 

Choose the width and the length of your warp. You have to count extras:

  • the start and the distance from the shafts to the end. 
  • experimentations
  • when you weave the warp threads are going up and down the weft, you will need to cover more distance. 

If you decide to have different yarns, you have to make a warping plan to organize yourself. Its not necessary to reproduce this swatch, I used only one yarn.

The warping mill:

There is different way to make your warp. 

You can use a upright warping mill or a horizontal wrapping mill.

The first spin on it axis: you define the posts up to the length you want, with one hand you make it move, with your other hand you manipulate your yarn. The second one is the wooden structure hang to a wall, you define a circuit up of the length you want: it’s the wrapping mill used in the following examples.

After the choice of your wrapping mill, you have different methods to manipulate your yarn. 

Personally I dislike this first method and I did not experiment it by myself a lot but maybe in certain case it will be more useful for you, so I give you a quick view of this one. 

  • upright warping mill: 

You divide the yarns you need by cm/inch in the same number of small bobbins. You set up these ones in a « cantre » and them you pass each of these through the orifices of a wood brush. Then you manipulate this brush with one of your hand and with the other hand you wound the yarn to form a cross between the second and the third post. *

DSCF8090 DSCF8093 DSCF8094

  • horizontal warping mill

I prefer to keep my bobbin entire, on the floor or in the « cantre » , and make all the repetitive movement with my arm. 

*With any methods, you begin with a loop and you reproduce the following example and mark any cm/inch with another yarn.




To carry your warp from the mill to your loom, make a chain with your arm. 

Fix on the back of your loom the raddle or spreader; it is a large-scale comb with gaps of legal size. This one will help you to maintain to warp in order. 

Place the warp centrally on the back the loom and spread it as it should be. Take off the metal bar and put each bunch of yarnd in each gaps, then, put back the metal bar. The most important is to keep the cross you have made on the mill : put the cross bars on each side of this cross, when you are extremely sure that you did it perfectly, you can take off the thread which was used as a mark. 


Now you will roll the wrap on the back of the loom.  You have to make sure to keep an eagle and strong tension, with one hand you roll and with your other hand, you strongly shake the bunch of yarn. You have to make it « clap »: these strong shocks will take of the knots, don’t try to take them off with your finger it will be worst and worst. 

When you arrive at the end of the wrap, cut it. 


  • The threading plan: 

This choice is definitive for your warp. You will choose which thread will go in which shaft and in what order. Each shaft is composed of heddles, in wire in this loom. A eye is in the middle of each heddles and each individual threads are passed inside from the back to the front using a threading hook (it is clearly better to do it with some else ! When you weave, the shaft in front of you is the first. 

In the swatch, I decide to divide my warp in blocks : I use three consecutive threading plan of distorted twill. 


  • The reed plan


Put the yarns on the reed using a reed hook and attach your wrap in the following way.



It’s ready to weave.




  • The lifting plan:


////////Arduino code: ///////

#include “FastLED.h”

// How many leds in your strip?
#define NUM_LEDS 24
#define BRIGHTNESS 20

// For led chips like Neopixels, which have a data line, ground, and power, you just
// need to define DATA_PIN. For led chipsets that are SPI based (four wires – data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
#define DATA_PIN 6
#define CLOCK_PIN 13

// Define the array of leds

// buttons AV/ RECUL
#define BUTT_AV 12
#define BUTT_AR 13

// Defini le nombre de rangs du motif et le nombre de cadre utilisé
//erreur à plus de 33 rangs
#define NUM_RANGS 20
#define NUM_CADRES 24

// Pattern array // zone du motif
{ 1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0 },
{ 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0 },
{ 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0 },
{ 1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0 },
{ 1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0 },
{ 1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0 },
{ 1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0 },
{ 1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1 }

int moves = 0;

void setup() {
// Uncomment/edit one of the following lines for your leds arrangement.
// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);

// OK pour ruban etanche 48 leds barzi
// FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);

// FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);

// FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);

// FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

pinMode( BUTT_AV, INPUT);
pinMode( BUTT_AR, INPUT);

FastLED.setBrightness( BRIGHTNESS );



unsigned long last_BUTT_Press_Ms = 0;
boolean bAV, bAR;
boolean last_bAV, last_bAR;

////////////////////// LOOP ////////////////////////////
void loop() {

bAV = (digitalRead( BUTT_AV ) == HIGH );
bAR = (digitalRead( BUTT_AR ) == HIGH );

if ( bAV ) Serial.println(“AV”);
if ( bAR ) Serial.println(“AR”);
// si on appuie sur un des 2 boutons …
if ( (millis() – last_BUTT_Press_Ms) > 400 ) {
last_BUTT_Press_Ms = millis();
Serial.println(“moves = ” + moves);

if ( bAV && (bAV != last_bAV) ) {
if ( moves >= NUM_RANGS ) moves = 0;
if (bAR && (bAR != last_bAR) ) {
if ( moves < 0 ) moves = 0;

last_bAV = bAV;
last_bAR = bAR;

// affiche les LEDs en fontion d’ou on en est dans le motif
for (int i = 0; i < NUM_CADRES; i++) {
if ( PAT[moves][i] == 1 )
leds[i] = CRGB::Blue;
leds[i] = CRGB::Black;



////////////////////// **** ////////////////////////////

void all_ON() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB::Red;

void all_OFF() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB::Black;
void fadeall(int p) {
for (int i = 0; i < NUM_LEDS; i++) {



You always follow the same lifting plan but you will alternate the component.

Make a space in the weft: between two lift, add a paper. You will take it off at the end.

Then, weave the phosphorescent thread: the following effect is made by changing the thickness of this one during the weaving.

Then, weave normal thread and optic fibers. Finish weave the yarn of your choice.


  • Sculpt the memory wire:

The movement is induce by the nitinol, you can add this one during or after the weaving.

To form it, you can found paper which are extremely precise about the way, the temperature and the time to form it. I have perfect result using a blowtorch during few minutes. To have a maximum difference, I form it as a coil on a cooper tube and I catch it with a tool.


The nitinol as to be attach after the phosphorescent in the way to close this flap. Catch it with crimps.




To feed in light my weaving I use Lulus from Maurin Donneaud.

Its up to you to sandblast them before weaving or after. If your material allows it, I invite you to do it after to do not spend light.


Find more documentation here: http://wiki.datapaulette.org/doku.php/atelier/documentation/materiautheque/materiaux/electronique_textile/actionneurs_textiles/fibres_optiques




Extra warp + Weaving that shapes themselves, Ann Richards 


Leave a Reply