Swarna ManjariHeba ElidrisiBeste Cebeci
Published

Seeding Memories

A secret memory encrypting system merging real-time human audio with the living pulses of a tree to build a private archive of memories.

IntermediateWork in progress31
Seeding Memories

Things used in this project

Hardware components

Breadboard (generic)
Breadboard (generic)
×1
Barduino
×1
Jumper wires (generic)
Jumper wires (generic)
×1
9V battery (generic)
9V battery (generic)
×2
Analog Devices EMG Muscle Sensor AD8226
×1
5 mm LED: Green
5 mm LED: Green
×3
Fiber Optic Cable, Duplex
Fiber Optic Cable, Duplex
×1
Circular Connector Cable Seal, Heat Shrinkable Sealing Boot
Circular Connector Cable Seal, Heat Shrinkable Sealing Boot
×3
Headset with Microphone
×1

Software apps and online services

Touch Designer
Arduino IDE
Arduino IDE
Python

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Wire Stripper & Cutter, 32-20 AWG / 0.05-0.5mm² Solid & Stranded Wires
Wire Stripper & Cutter, 32-20 AWG / 0.05-0.5mm² Solid & Stranded Wires

Story

Read more

Schematics

emg_sensor

Code

emg_sensor sketch

C/C++
int EMGPin = 8;
int EMGVal = 0;

void setup() {
Serial.begin(115200);
}

void loop() {
EMGVal = analogRead(EMGPin);
Serial.println(EMGVal);
delay(50);
}

led_emg

C/C++
const int emgPin = 7;
const int ledPin = 9;


unsigned long previousMillis = 0;
unsigned long interval = 50;

unsigned long startTime;

int brightness = 0;
int fadeAmount = 2;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
  
  startTime = millis(); // record when program starts
}

void loop() {

  int emgValue = analogRead(emgPin);
  Serial.println(emgValue);

  // wait 20 seconds before using EMG to control LED
  if (millis() - startTime < 20000) {
    analogWrite(ledPin, 0);   // LED off during calibration
    return;
  }

  // after 20 seconds, EMG controls the LED timing
  interval = map(emgValue, 0, 200, 80, 15);
  interval = constrain(interval, 20, 120);

  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    brightness += fadeAmount;

    if (brightness <= 0 || brightness >= 200) {
      fadeAmount = -fadeAmount;
    }

    analogWrite(ledPin, brightness);
  }
  delay(50);   
}

Credits

Swarna Manjari
2 projects • 1 follower
Heba Elidrisi
2 projects • 1 follower
Beste Cebeci
2 projects • 1 follower

Comments