Skip to content

Deliverables

Planning calendar

In reality, the process was never linear. I was working on many things at once — testing steps together, going back, changing directions, and trying again. The project was constantly evolving as I worked on it.

What you see here is a simplified timeline of these three months — a way to organize a process that, in reality, was much more fluid and experimental.

Moodboard

In these photos, I focus on the communication between art, nature, and human. The artwork moves beyond the 2D surface, creating a sense of an alternative reality where people can feel and experience it.

Sources

All the people who inspired me and all the sources I relied on can be found in my step-by-step documentation. Please explore them and follow the process together with me.

Anyway, I would like to mention again the shibori book, which is truly amazing and inspiring. During both the shibori week and the concept week, I gained a lot of valuable information from it. The book is called Shibori: The Inventive Art of Japanese Shaped Resist Dyeing.

BOM. Bill of materials

Qty Description Price ($) Link Notes
1 Fabric (linen) 40.00 N/A
1 Onion skin (0.5 kg) 14.00 N/A Natural dye
1 Alum, washing soda, etc. 2.00 N/A Chemicals
1 Gelatin, alginate, etc. 7.00 N/A Biomaterial
1 Bowls and other tools 50.00 N/A Tools
1 Arduino Uno 20.00 N/A Electronics
1 Arduino Shield 40.00 N/A Electronics
2 Sharp Distance Sensor 20.00 N/A Sensors
1 Stepper Motor 35.00 N/A Motion
1 Electronic threads 5.00 N/A Conductive
1 Wood 15.00 N/A Structure
1 Wood varnish 2.00 N/A Finish
Total 250.00

A lot of this materials Fab lab Armenia get me for free. big thanks them for this much sport.

Mid Term Presentation

Storytelling Presentation

Files for Project Production

Each step has a separate page with a detailed description. You can find all the information there, but for convenience, I am including all the necessary files here.

  1. Shibori scheme:

  2. Biomaterial combining recipe:

  3. Water — 2080 ml

  4. Gelatin — 200 g
  5. Glycerin — 80 g
  6. Alginate — 5 g

  7. Origami folding:

  8. Electronic scheme:

Code:

#include "Stepper.h"

// Steps per revolution
const int stepsPerRevolution = 200;

// Motor shield pins
#define pwmA 3
#define pwmB 11
#define brakeA 9
#define brakeB 8
#define dirA 12
#define dirB 13


// Sensors
#define rightSensor A2
#define leftSensor  A4

Stepper myStepper(stepsPerRevolution, dirA, dirB);

unsigned long int counter = 0;

void setup() {

  Serial.begin(9600);

  pinMode(pwmA, OUTPUT);
  pinMode(pwmB, OUTPUT);
  pinMode(brakeA, OUTPUT);
  pinMode(brakeB, OUTPUT);

  pinMode(rightSensor, INPUT);
  pinMode(leftSensor, INPUT);

  digitalWrite(pwmA, HIGH);
  digitalWrite(pwmB, HIGH);
  digitalWrite(brakeA, LOW);
  digitalWrite(brakeB, LOW);

  myStepper.setSpeed(60);
}

unsigned long int sum_left = 0;
unsigned long int sum_right = 0;

int filtered_right = 0;
int filtered_left = 0;
bool data_ready = 0;

void loop() {

  /*Serial.print("left: ");
  Serial.print(filtered_left);
  Serial.print("  right: ");  
  Serial.println(filtered_right);
  filtered_right = analogRead(rightSensor);
  filtered_left  = analogRead(leftSensor);
  data_ready = 1; */
  if(data_ready == 0)
  {
    while(counter < 20)
    {
      int rightState = analogRead(rightSensor);
      int leftState  = analogRead(leftSensor);
      sum_left += leftState;
      sum_right += rightState;
      counter++;
    }
  }
  if(counter == 20)
  {
    counter = 0;


    filtered_left = sum_left / 20;
    filtered_right = sum_right / 20;
    Serial.print("left: ");
    Serial.print(filtered_left);
    Serial.print("  right: ");
    Serial.println(filtered_right);
    data_ready = 1;
    sum_left = 0;
    sum_right = 0;
  }


 // Serial.println(rightState);

  // LEFT detector → +360 then back
  if (filtered_left > 200) {
    digitalWrite(pwmA, HIGH);
    digitalWrite(pwmB, HIGH);
    data_ready = 0;
    Serial.println("Left!!!!!!!!!!!!!!");
    myStepper.step(200);   // +360°
    //delay(30);

    myStepper.step(-200);  // return to 0
    //delay(30);
  }
  else if(data_ready == 1)
  {
    digitalWrite(pwmA, LOW);
    digitalWrite(pwmB, LOW);
    data_ready = 0;
  }


  // RIGHT detector → -360 then back
  if (filtered_right > 100) {
    digitalWrite(pwmA, HIGH);
    digitalWrite(pwmB, HIGH);
    data_ready = 0;
    Serial.println("Right!!!!!!!!!!!!!!");
    myStepper.step(-200);  // -360°
    //delay(30);

    myStepper.step(200);   // return to 0
    //delay(30);
  }
  else if(data_ready == 1)
  {
    data_ready = 0;
    digitalWrite(pwmA, LOW);
    digitalWrite(pwmB, LOW);
  }
 // Serial.println(data_ready);

}

  1. Frame 3D file: