Arduino Controlled Play

Selfbondage software and other kinky developments

Moderators: Riddle, Shannon SteelSlave

Post Reply
User avatar
redone
**
Posts: 150
Joined: 01 Jul 2008, 19:25
Location: US

Arduino Controlled Play

Post by redone »

I cross dress often and use a vibe to simulate sex or someone using a vibe on me, etc.

So in order to make it more realistic, I wrote an Arduino program to make the vibrations simulate what a typical male may do during sex to achieve orgasm. Once he's done, he's done and I'll either cum or not. Really, I love orgasm denial so another goal was to not cum and be as turned on as possible and awaiting the next “male” to come along.

One cycle:
vibe buzzes for 3 quick bursts to test it works
5-15 minutes randomly selected (down time, go clean something)
quick bursts as notification of sex in 2 minutes
Sex:
Stage 1: 3-7 minutes (med pulses ramping up and down)
Stage 2: 0-3 minutes (higher pulses)
Stage 3: 15-20 seconds (throb like pulses simulating orgasm)
Stage 4: 0-1 minute (post orgasm throbbing)
2 minutes to get dressed
Repeat


The program works pretty well. I've tried it several times and discovered that the most exciting part to me is there is no option but to endure the vibrations whenever they start. There is no telling when they will begin, and when they stop… it's over until the next one.

One change I will be experimenting with is having the break time (currently 5-15 minutes) based on my pulse after “sex” via a pulse sensor. A high pulse will make the “down time” longer to encourage more playtime before cumming myself.

There are so many sensors available to play with. A force sensor would work to squeeze for higher pulses. Or possibly attached to a dildo to require a blow job to initiate sex.

I also have a tilt sensor to use to require actually laying down to “have sex”. The Arduino controller cost around $25 and sensors around $2-$25ish. Some more expensive depending on what they do.

I just wanted to share some experiments and see if anyone has any ideas for automating bondage fun with controllers like the Arduino. I know I'm not the first on this forum to utilize one. :)
spoons_man
*
Posts: 2
Joined: 02 Dec 2014, 05:59

Re: Arduino Controlled Play

Post by spoons_man »

You should post your code and some pics of your setup. Are you using a FET or transistor to drive your vibe? Battery powered so it's all portable I'm assuming?

Inquiring minds want to know... for science.
MKu
**
Posts: 127
Joined: 23 Apr 2009, 21:47
Location: Germany

Re: Arduino Controlled Play

Post by MKu »

spoons_man wrote:Are you using a FET or transistor to drive your vibe?
:?
Indeed over time people got knowledge but no wisdom.

Accidents do not happen, they are caused.
User avatar
redone
**
Posts: 150
Joined: 01 Jul 2008, 19:25
Location: US

Re: Arduino Controlled Play

Post by redone »

I used a TIP122 transistor. Also, it is battery powered so the whole assembly can be attached to me when I walk around, etc.

The schematic is basically this one here... https://magnusglad.wordpress.com/2013/0 ... g-arduino/

Here is the code, it's pretty close but can use some tweaks... better usage of the fade in/out to maximize the full power of the vibe. Careful testing with vibe you use should give you the best results. (The testing is the fun part)

Code: Select all

// These variables will hold a random number generated by the random() function
unsigned long breakTime, previousMillis;
unsigned long currentMillis = 0;
unsigned long var;
unsigned long sequenceOne, sequenceTwo, sequenceThree, sequenceFour, interval;

// IO
int devicePin = 9;

// the setup function runs once when you press reset or power the board
void setup() {

  // initialize digital pin 9 as an output.
  pinMode(devicePin, OUTPUT);
  pinMode(13, OUTPUT);

	//setup serial communications through the USB
  Serial.begin(9600);
  Serial.println("Starting new session.");

}

// the loop function runs over and over again forever
void loop() {
  unsigned long currentMillis = millis();

	Serial.println("- Device Test -");
  var = 0; // Test to make sure it's working
  while(var < 1){
  	currentMillis = millis();
	  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 2) {
	    analogWrite(devicePin, fadeValue);
	    digitalWrite(13, LOW);
	    delay(20);
	  }

	  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 2) {
	    analogWrite(devicePin, fadeValue);
	    digitalWrite(13, HIGH);
	    delay(20);
	  }
	  // Serial.print("Repetition: ");
  	// Serial.println(currentMillis);
	  var++;
  }
  digitalWrite(13, LOW);
  analogWrite(devicePin, 0);

	// Serial.print("Time: ");
  // Serial.println(currentMillis);

	Serial.print("Break time: ");
 	breakTime = random(5, 15) * 1000 * 60;		// 5 - 15 minutes
 	// breakTime = 1000;		// 5 - 15 minutes
  Serial.print(breakTime / 60 / 1000);
  Serial.println(" minutes.");
  Serial.println("");

 	delay(breakTime);

 	// Indication
	var = 0;
  while(var < 3){
  	currentMillis = millis();
	  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 2) {
	    analogWrite(devicePin, fadeValue);
	    delay(20);
	  }

	  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 2) {
	    analogWrite(devicePin, fadeValue);
	    delay(20);
	  }
	  // Serial.print("Repetition: ");
  	// Serial.println(currentMillis);
	  var++;
  }
	Serial.println("Begin in 2 minutes.");
	delay(10000);

	sequenceOne = random(3, 7) * 30;
	sequenceTwo = random(0, 3) * 30;
	sequenceThree = random(15, 20);
	sequenceFour = random(0, 2) * 30;

	Serial.println("");

	// Sequence One
	Serial.print("Sequence One: ");
	Serial.print(sequenceOne * 2.2 / 60);
	Serial.println(" minutes");
	var = 0;
  while(var < sequenceOne){
  	currentMillis = millis();
	  for (int fadeValue = 0 ; fadeValue <= 127; fadeValue += 2) {
	    analogWrite(devicePin, fadeValue);
	    digitalWrite(13, HIGH);
	    delay(20);
	  }

	  for (int fadeValue = 127 ; fadeValue >= 0; fadeValue -= 2) {
	    analogWrite(devicePin, fadeValue);
	    digitalWrite(13, LOW);
	    delay(15);
	  }
	  // Serial.print("Repetition: ");
  	// Serial.println(currentMillis);
	  var++;
  }

	// Sequence Two
	Serial.print("Sequence Two: ");
	Serial.print(sequenceTwo * 1.4 / 60);
	Serial.println(" minutes");
	var = 0;
  while(var < sequenceTwo){
  	currentMillis = millis();
	  for (int fadeValue = 0 ; fadeValue <= 180; fadeValue += 2) {
	    analogWrite(devicePin, fadeValue);
	    delay(10);
	  }

	  for (int fadeValue = 180 ; fadeValue >= 0; fadeValue -= 2) {
	    analogWrite(devicePin, fadeValue);
	    delay(5);
	  }
	  // Serial.print("Repetition: ");
  	// Serial.println(currentMillis);
	  var++;
  }
	// Sequence Three
	Serial.print("Sequence Three: ");
	Serial.print(sequenceTwo * .3);
	Serial.println(" seconds");
	var = 0;
  while(var < sequenceThree){
  	currentMillis = millis();
	  for (int fadeValue = 50 ; fadeValue <= 255; fadeValue += 2) {
	    analogWrite(devicePin, fadeValue);
	    delay(2);
	  }

	  for (int fadeValue = 255 ; fadeValue >= 50; fadeValue -= 2) {
	    analogWrite(devicePin, fadeValue);
	    delay(1);
	  }
	  // Serial.print("Repetition: ");
  	// Serial.println(currentMillis);
	  var++;
  }
	// Sequence Four
	Serial.print("Sequence Four: ");
	Serial.print(sequenceFour * .4 / 60);
	Serial.println(" minutes");
	var = 0;
  while(var < sequenceFour){
  	currentMillis = millis();
	  for (int fadeValue = 0 ; fadeValue <= 127; fadeValue += 5) {
	    analogWrite(devicePin, fadeValue);
	    delay(15);
	  }
	  for (int fadeValue = 150 ; fadeValue >= 0; fadeValue -= 5) {
	    analogWrite(devicePin, fadeValue);
	    delay(10);
	  }
   	// Serial.print("Repetition: ");
  	// Serial.println(currentMillis);
	  var++;
  }
  Serial.println("");
}
User avatar
Sir Cumference
Moderator
Posts: 1606
Joined: 29 Jan 2012, 22:00
Location: Scandinavia

Re: Arduino Controlled Play

Post by Sir Cumference »

redone wrote: One change I will be experimenting with is having the break time (currently 5-15 minutes) based on my pulse after “sex” via a pulse sensor. A high pulse will make the “down time” longer to encourage more playtime before cumming myself.
Thanks for sharing.

A pulse measurement is surprisingly boring with regards to sex.

The effect of physical activity totally masks "getting close".

There is a very interesting and entertaining description of some experiments here:
"Tacit: Sex for science"

Unfortunately the results were: "Even with DIY EEG equipment, it is bloody hard to see anything substantial".


But he is doing some interesting kinky engineering:
http://tacit.livejournal.com/tag/sex
~ Leatherworking, blacksmithing , woodworking and programming are the most pervertable skills you can learn! ~
User avatar
redone
**
Posts: 150
Joined: 01 Jul 2008, 19:25
Location: US

Re: Arduino Controlled Play

Post by redone »

I agree, however, the heart sensor is fantastic for my use. It is used as a gate, so any pulse above a certain amount triggers the vibe to shut off. I've done some testing and it works pretty well that way. Maybe it's more of a crude way to use it. I'll be sure to post my results.
Post Reply