Agnese RaimondiIvan Hunga Garcia
Published

(UN)chastity

pressure-sensitive biocompatible underwear that activates vibrations in response to touch and friction, to use with a DIY lube :)

IntermediateWork in progress160
(UN)chastity

Things used in this project

Hardware components

Fab Lab Barcelona Barduino 4
×1
Solar Cockroach Vibrating Disc Motor
Brown Dog Gadgets Solar Cockroach Vibrating Disc Motor
×3
Resistor 1k ohm
Resistor 1k ohm
for further iterations
×3
General Purpose Transistor NPN
General Purpose Transistor NPN
for further iterations
×3

Software apps and online services

Arduino IDE
Arduino IDE
Claude.ai
Tinkercad
Autodesk Tinkercad

Hand tools and fabrication machines

Solder Wire, 0.022" Diameter
Solder Wire, 0.022" Diameter
Plier, Flat Nose
Plier, Flat Nose
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mmΒ² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mmΒ² Capacity Wires
Wire Cutter / Stripper, 5.25 " Overall Length
Wire Cutter / Stripper, 5.25 " Overall Length
Solder Flux, Soldering
Solder Flux, Soldering
10 Pc. Jumper Wire Kit, 5 cm Long
10 Pc. Jumper Wire Kit, 5 cm Long
customised with waist measurements and soldered with individual male and female ends for easy mounting on the Barduino
flax seeds
Main Base for the lube
agar agar
glycerin
Sodium Alginate
Spike screws
Industrial Piercings
eyelets
Soldering Gun Kit, Instant Heat
Soldering Gun Kit, Instant Heat

Story

Read more

Schematics

(Un)chastity electronic schematic

Code

(Unchastity) code for barduino

Arduino
// PINS
const int TOUCH_PIN1 = 4;    // Motor 1
const int TOUCH_PIN2 = 5;    // Motor 2
const int TOUCH_PIN3 = 6;    // Motor 3

const int MOTOR_PIN1 = 13;
const int MOTOR_PIN2 = 12;
const int MOTOR_PIN3 = 14;

// CALIBRATION
const int TOUCH_IDLE = 400000;   // below = no touch
const int TOUCH_MAX  = 2000000;  // value at maximum pressure

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

  pinMode(MOTOR_PIN1, OUTPUT);
  pinMode(MOTOR_PIN2, OUTPUT);
  pinMode(MOTOR_PIN3, OUTPUT);

  analogWrite(MOTOR_PIN1, 0);
  analogWrite(MOTOR_PIN2, 0);
  analogWrite(MOTOR_PIN3, 0);

  Serial.println("Ready β€” 3 independent touch+motor pairs!");
}

// Reads one sensor, drives one motor
void handlePair(int touchPin, int motorPin, String label) {
  int touchValue = touchRead(touchPin);
  Serial.print(label);
  Serial.print(": ");
  Serial.print(touchValue);

  if (touchValue < TOUCH_IDLE) {
    analogWrite(motorPin, 0);
    Serial.println("  β†’ OFF");

  } else {
    int intensity = map(touchValue, TOUCH_IDLE, TOUCH_MAX, 0, 255);
    intensity = constrain(intensity, 0, 255);
    analogWrite(motorPin, intensity);

    Serial.print("  β†’ Intensity: ");
    Serial.println(intensity);
  }
}

void loop() {
  handlePair(TOUCH_PIN1, MOTOR_PIN1, "Sensor 1");
  handlePair(TOUCH_PIN2, MOTOR_PIN2, "Sensor 2");
  handlePair(TOUCH_PIN3, MOTOR_PIN3, "Sensor 3");

  delay(20);
}

Credits

Agnese Raimondi
2 projects β€’ 1 follower
Ivan Hunga Garcia
2 projects β€’ 2 followers

Comments