Skip to content

Deliverables

Planning

I have prepared a very light sketch and planned my activities. I am not much of a planner, so this was a little bit hard for me but, this activity helped to structure a bit more.

And made a to-do list in Milanote so I can have all my moodboards and storyboards at one place.

BoM bill of materials

The materials, that I have used varied a lot since, I have made quiet a lot of changes during my process. But here is the list of the things I have used.

Materials

Qty Description Price Link Notes
1 Conductive Copper Fabric 18.00 EUR https://amzn.to/42FCtrS
2 Lycra Fabric 2m 17.00 EUR https://www.dumlatek.cz/produkt/polyamidovy-uplet-2/ bought in CZ
2 Lycra Mesh 1.5m 15.00 EUR bought in store
1 BareConductive Touch Board 58.90 EUR https://www.bareconductive.com/products/touch-board
2 STEMMA QT Speaker 11.20 EUR https://www.digikey.com/
1 magicPLA Metallic Emerald 12.99 EUR https://www.3djake.nl/3djake/magicpla-metallic-emerald used in the Lab
1 Flexible Filament 12.99 EUR https://www.3djake.nl/3djake/magicpla-metallic-emerald used in the Lab
1 20 Metal Snap Buttons 12.00 EUR bought in store

Slide show

Pitch Presentation

Midterm Presentation

Final Presentation

Story telling script

The Performance Story

The year is 5089, words have become a lost legacy. There was a time when humans came to the conclusion that words, no matter how well they were spoken or written, were simply not enough to communicate. After many misunderstandings, it was decided that words must be wiped out from the planet altogether. Instead, they turned to technology and data to facilitate empathy and trust between individuals. They greeted each other through touch, danced through conflicts and the social media bickering became a joke no one could understand. They never use names. An evoking thought is all it’s needed to start a dialogue. But even though so much has changed, human curiosity and need for understanding the past remains the same. In this world she is known as the collector, an archeologist of sorts. She had discovered an industrial abandoned space, and the only thing she could explore was data - the pieces of not always perfectly accurate heart data left behind as artefacts. She knew that she could bring history back to life by examining and experiencing this data. And so, piece by piece, heart by heart, she danced through the data. Every time she processed a root of data-stream, she gained knowledge, a fuller picture, and a clearer melody. She kept dancing until there were no unknown pieces left. Her pocket was full. She understood. As she danced, she couldn't help but wonder and she asked herself: “Were you aware? Did you mean to leave us a message? Were you creating a story?” And she kept dancing, lost in the beauty of the past and the present.

Video Story Board

Fabrication Files

These are the final Fabrication Files:

Code

Here is the code that I have used the finals.

#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL343.h>

#define ADXL343_SCK 13
#define ADXL343_MISO 12
#define ADXL343_MOSI 11
#define ADXL343_CS 10

#include "Compiler_Errors.h"

// touch includes
#include <MPR121.h>
#include <MPR121_Datastream.h>
#include <Wire.h>

// MP3 includes
#include <SPI.h>
#include <SdFat.h>
#include <FreeStack.h>
#include <SFEMP3Shield.h>

// touch constants
const uint32_t BAUD_RATE = 115200;
const uint8_t MPR121_ADDR = 0x5C;
const uint8_t MPR121_INT = 4;

// serial monitor behaviour constants
const bool WAIT_FOR_SERIAL = false;

// MPR121 datastream behaviour constants
const bool MPR121_DATASTREAM_ENABLE = false;

// MP3 variables
uint8_t result;
uint8_t lastPlayed = 0;

// MP3 constants
SFEMP3Shield MP3player;

// MP3 behaviour constants
const bool REPLAY_MODE = true; 
SdFat sd;

Adafruit_ADXL343 accel = Adafruit_ADXL343(12345);

void setup() {
  Serial.begin(BAUD_RATE);
  accel.begin();

  /* Set the range to whatever is appropriate for your project */
  accel.setRange(ADXL343_RANGE_16_G);
  pinMode(LED_BUILTIN, OUTPUT);

  sd.begin();
  MPR121.begin();

  MPR121.setInterruptPin(MPR121_INT);

  if (MPR121_DATASTREAM_ENABLE) {
    MPR121.restoreSavedThresholds();
    MPR121_Datastream.begin(&Serial);
  } else {
    MPR121.setTouchThreshold(40);
    MPR121.setReleaseThreshold(20);
  }

  MPR121.setFFI(FFI_10);
  MPR121.setSFI(SFI_10);
  MPR121.setGlobalCDT(CDT_4US);  // reasonable for larger capacitances

  digitalWrite(LED_BUILTIN, HIGH);  // switch on user LED while auto calibrating electrodes
  delay(1000);
  MPR121.autoSetElectrodes();  // autoset all electrode settings
  digitalWrite(LED_BUILTIN, LOW);

  result = MP3player.begin();
  MP3player.setVolume(5, 5);

}

void loop() {
  /* Get a new sensor event */
  sensors_event_t event;
  accel.getEvent(&event);
  MPR121.updateAll();

  // only make an action if we have one or fewer pins touched
  // ignore multiple touches
  if (MPR121.getNumTouches() <= 1) {
    for (int i=0; i < 12; i++) {  // check which electrodes were pressed
      if (MPR121.isNewTouch(i)) {

          digitalWrite(LED_BUILTIN, HIGH);

          if (i <= 11 && i >= 0) {
            if (MP3player.isPlaying()) {
              //MP3player.setBassAmplitude(event.acceleration.x);
              if (lastPlayed == i && !REPLAY_MODE) {
                // if we're already playing the requested track, stop it
                // (but only if we're not in REPLAY_MODE)
                MP3player.stopTrack();
              } else {
                // if we're already playing a different track (or we're in
                // REPLAY_MODE), stop and play the newly requested one
                MP3player.stopTrack();
                MP3player.playTrack(i-0);

                lastPlayed = i;
              }
            } else {
              // if we're playing nothing, play the requested track
              MP3player.playTrack(i-0);

              lastPlayed = i;
            }
          }
      } else {
        if (MPR121.isNewRelease(i)) {


          digitalWrite(LED_BUILTIN, LOW);
        }
      }
    }
  }

  if (MPR121_DATASTREAM_ENABLE) {
    MPR121_Datastream.update();
  }
}

Last update: 2023-05-19