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.
Arduino Controlled Play
Moderators: Riddle, Shannon SteelSlave
-
- *
- Posts: 2
- Joined: 02 Dec 2014, 05:59
Re: Arduino Controlled Play
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.
Inquiring minds want to know... for science.
Re: Arduino Controlled Play
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.
Accidents do not happen, they are caused.
Re: Arduino Controlled Play
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)
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("");
}
- Sir Cumference
- Moderator
- Posts: 1606
- Joined: 29 Jan 2012, 22:00
- Location: Scandinavia
Re: Arduino Controlled Play
Thanks for sharing.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.
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! ~
Re: Arduino Controlled Play
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.