I feel the need to repeat what many before have told: Electrostimulation requires respect or it can be dangerous. Selfbondage requires respect or it can be dangerous. Always think of this, when you are getting ready to play. Test everything and if unsure, always choose less than more. I have experimented for years, I still advance carefully and yet few times I have screwed up and it resulted in a less of a pleasant experience to say the least.
This is only a presentation of an idea (which made it to a working prototype with HW, so working idea). I post this into the SW section, as I was asked here http://forum.boundanna.net/board/viewto ... 11&t=11936 to provide a code for random relay operation I used in that scenario and also, I think more work went to the code than to the hardware part. Described code and schematic is provided here https://uploadfiles.io/6vuz8. The hosting is only for 30 days. If you know better options, please do tell so I can upload permanently.
If you do not understand the technicalities behind this, don’t try to replicate this step by step. I will not post any exact values or types of parts in the schematic. It’s a simple circuit. If you don’t have the knowledge to select correct parts to make it work from the schematic, you should not attempt to create this device!
Principle description:
The idea behind this device is to add automatic “random” change of intensity to an estim unit that does not have that ability. The reason is to augment selfbondage experience. Of course, in a safe way so no tampering with the unit itself, no waveform modifications and no signal amplifications. My unit is a basic Fetish Fantasy with a display (so not that small one with only few buttons) powered by two AAA batteries. It has a 15min timer, three modes, 10 speed options and 10 intensity options. The 15min off timer is the only automated part. That and, if the connection is not made, it turns itself off after few seconds.
This created a set of requirements. The no modifications part can be done by relay and resistors. No semiconductors as their non-linear characteristic could create distortions. Using a relay also separates the stimulation signal from the control signals.
I used a 2.5 jack connector to split the cables from the unit and a second connector to allow connection of 2.5 jack toys. One of the cables is only a pass through. The second has two resistors put in series. A lower and higher value (that’s why in the schematics one is R1 and R2 in parallel, to hint it’s a lower value than R3). Each of these resistors can be shorted by a relay controlled by a transistor from the Arduino (UNO in this case). Essentially the idea is to lower the intensity by “burning” part of the power on the resistors, but by shorting them you can increase it. This arrangement allows 4 intensity levels:
1) Both relays turned off – all resistors in series – lowest intensity.
2) Relay 1 switches on, Relay 2 is off - this shorts the lower value resistor (R1 and R2).
3) Relay 2 switches on, Relay 1 switches off – again intensity increases as there is only the smaller resistor value “in the way”.
4) Finally, both relays turn on and now its just a pass through for the signal from the power box to the toy.
This way should be safe, it never disconnects the signal (so the power box does not turn off) and the maximum output is only the one you select on the power unit. Here comes the BIG warning:
It’s easier to go into higher levels of intensity when all is connected, but relays are off. But the “jumps” in intensity is determined only by the resistor R1 to R3 values. I won’t post any values for them, because I selected them through trial and error on my self to my liking when I was in full control. DO NOT even think about just slapping some parts there and going right into selfbondage. You could find that you accidentally selected intensity that is too high and finding this in the middle of a selfbondage session when your waiting for a key to drop or something could ruin your experience. Also test the full 4 levels on a lower setting of the power box.
For example, what would happen if you would choose high resistor values? Well you ramp it up, its fine, you use the second level and its still fine so you go for “the two more jumps will be fine too, time to play”. Level 3 might be fine, but the last level (the pass through without any limitation) will be the power of your box. When I started testing this, I firstly selected these higher values of resistance and went to a full power of the box on my cock just to find it “pleasingly strong”. But I know level 6 is pain so common sense arrived and I turned it off and replace the resistors for smaller, so they have smaller impact. I have made this circuit in a development board (you can create circuits without soldering, so changing a part is quick). That’s also the reason I don’t have any photos of it – I did not have time yet to create a printed circuit board design so far. But it works.
Also, I should note that once you get it going, testing for the intensity level can be tricky. If you go up step by step slowly, you can get to some level you think is “tolerable”, but if you would change quickly to that level, it will be much more noticeable. Keep in mind this device can do very little simulation for several minutes and then jump switch to full power. That’s actually point of one of the modes, but more on that later.
Technicalities:
As I said I will not post any part values as kind of a safety part. A skilled electric engineer wont have any problems finding correct parts and calculating it so it works. And I am not talking just about switching and the resistors for the intensity change, but also let’s say the base resistors so that the transistor operates reliably without burning out.
As for how this device operates with my code. I did not want to make it just pure random. I wanted to make it so that the probability of higher levels increases with time. Also I wanted it to have multiple randomly selected modes so that the probabilities are decreased or increased to create less/more intense play. So here are the modes (yes, those names are used in the code using an enumerator):
1) “Mercy” – As hinted by the name, the probabilities of higher levels are significantly lowered. Its very uncommon for this mode to command full intensity.
2) “Normal” – Nothing to say here.
3) “Torture” – Probabilities increased, you have 99% chance that at least once during the 15minutes of play (limited by my power box) you will get the full power level. Keep in mind the change of level can occur only every 30 seconds.
4) “Torture X” – There is very little chance to select this mode, but when it does your in for a ride. After about 8,5 minutes it goes to the lowest level and after two more minutes it jumps to the highest and stays there. The mere presence of this mode adds great anxiety to the play. After 2mins of resting it turns into real painful torture. However, because it stays at the highest from there on without jumps, the nerves will get a chance to adapt to this. It will still be full power of your powerbox, so if you don’t go crazy on the setting before play, you will be ok. I repeat – don’t go crazy on the settings of your power box before play!
I have an excel spreadsheet where I calculated the settings so that it does the probability as I want it (who said I would not use statistics in my life?). The system waits for 2 minutes overriding any selected level to the lowest to provide time to finish the selfbondage.
Code part one: Function setup()
This is where the coding begins. I will refer to the code sections by comments. The full code is in the link above. Also I will skip the basic initializations because if you want to implement this, you have to know these basics:
Code: Select all
// Prepare serial line
Code: Select all
// Load random seed
Code: Select all
// Select PlayMode
Code: Select all
// Select coefficients depending on playmode
Code: Select all
// Report PlayMode
Code: Select all
// Timer interrupt setup
Code part two: Function MainInterrupt()
Code: Select all
// Toggle LED
Code: Select all
// Reduce switching
Code: Select all
// Create low limit for RNG
Code: Select all
// Keep at least some space for number generation
Code: Select all
// Randomly generate number to select mode
Code: Select all
// Change mode select depending on PlaySelect after starting time
// Select mode depending on random number
Select level (here called mode to make it confusing! I did not change the variable name before writing this text, sorry…).
Code: Select all
// Extreme Torture
Code: Select all
//Select output depending on mode
Code: Select all
// Diagnostic print
Code: Select all
// Increment time
Final words
I tried to provide as much information about my project as possible. I admit may have overdone the text, but I wanted to put everything here. I will be glad for any suggestions or hints on how to improve.