Interaction Project by Zack J-W

by zack @ 1:13 am 27 March 2012

 

Either my wife or myself have been in grad school the entire time we’ve been married.  One of her instructors told her out right, kiss your sex life goodbye.  Without getting into too much detail, let’s just say we wish we had the time and energy to spend a little more happy-time together.

Me and Juls

She does, after all, have needs…

Wow!

In exploring interaction projects I came upon various devices for tele-presence and I was inspired by Kyle Machulis’ tele-dildonics projects, featured here last Oct at Art&&Code.  So I uh…dove right in.

What I came up with was a robo-dildo that only becomes errect while I’m working at my computer, which I almost always am.  It uses a stepper motor to operate the mechanism as my keyPress count increases.  Conversely, if I don’t type, it slowly becomes flaccid again.  While it is tethered right now, it will soon run on WiFi so it works at home while I’m at school.

[youtube http://www.youtube.com/watch?v=QJqyrl9L35w]

———————————————-

PROCESS

———————————————-

I took the opp to cash in on some established skills and think about how to put them to work for my better half.  Rhino horn is believed to increase male potency.

CAD in Rhino

I’ve had experience with a Processing / Arduino conjugal visits before and pulled that out just in time.

Processing / Arduino Serial

I had to throw in some laser cut acrylic to hold everything in place.  If you can think of some innuendo for that one let me know.

Laser Cut Acrylic Case

What went terribly wrong was the need for this device to be untethered.  I dumb assedly ordered a blue tooth modem instead of an ethernet shield for Arduino, and continued to suck with it, anyway.  Can’t recommend this product, at least for a Mac.

Sparkfun Blue Tooth Mate

———————————————-

GOALS:

———————————————-

  • Explore the emotional/psychological space of tele”presence” and it’s inherent lack of presence
  • Lose the wires!
  • Refine the form
  • Throw in some more bells and buzzers, maybe a camera in the box.
  • Look at interchangeable covers for the ding dong
  • Make the box out of warmer materials

———————————————-

 CODE:

———————————————-

 ARDUINO:

 

/*Arduino boner control.  Copywrite 2012 Zack Jacobson-Weaver
Adapted from Tom Igoe "Motor Sweep" example code.*/
 
#include 
 
const int stepsPerRevolution = 400;  // change this to fit the number of steps per revolution
                                     // for your motor
 
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);            
 
int stepCount = 0;         // number of steps the motor has taken
 
int oldTarget;
boolean firstTurnYet;
 
byte target;  //Target is updated from the value "target" in Processing using Serial.read / Serial.write.
int keysPressed;
 
void setup() {
  oldTarget = 0;
  firstTurnYet = false;
  // initialize the serial port:
  Serial.begin(9600);
}
 
void loop() {
 
  //Serial.println(target);
     if (Serial.available())     //If there is a number waiting to come in from Processing,
  {
   target = Serial.read();     // take that number and make it equal to target.
 
  }
  keysPressed = map(target, 0, 255, 0,1000);
 
  if (keysPressed = 100 && firstTurnYet == true){
    myStepper.step(0);
    oldTarget = oldTarget + 100;
    stepCount = 0;
  }
  else if(keysPressed > oldTarget +100){
  myStepper.step(1);
  //Serial.print("steps:" );
  //Serial.println(stepCount);
  stepCount++;
  firstTurnYet = true;
  delay(25);
  }
 
    if(stepCount >= 100 && firstTurnYet == false){
    myStepper.step(0);
    oldTarget = oldTarget - 100;
    stepCount = 0;
  }
    else if(keysPressed < oldTarget -10){
  myStepper.step(-1);
  //Serial.print("steps:" );
  //Serial.println(stepCount);
  stepCount++;
  firstTurnYet = false;
  delay(25);
  }
 
  //Serial.println(target);
 
  }

———————————————-

 PROCESSING:———————————————-

/*Processing boner control.  Copywrite 2012 Zack Jacobson-Weaver
Adapted from Tom Igoe "Processing Arduino Serial"*/
 
 //Open the Serial library
import processing.serial.*;
 
//give the Serial port a name
Serial myPort;
 
//The variable that is sent to Arduino.  Byte converts an ASCII value to a corresponding
//integer that Arduino equilibrates with the variable 'Position'.
byte target;
int keyCount;
int timePassed;
boolean noActionYet;
 
void setup()
{
  size(100,100);
 
  keyCount = 0;
  timePassed = 0;
  noActionYet = true;
 
////Begin adapted example by Tom Igoe from Processing API reference of write()
// List all the available serial ports in the terminal window at startup.
println(Serial.list());
//The following is used to select the proper Serial port from the list generated above
myPort = new Serial(this, Serial.list()[0], 9600);  //Array index [0] corresponds with the Serial port I need to use.
myPort.bufferUntil('\n');
////End adapted example by Tom Igoe from Processing API reference of write()
}
 
void draw()
{
  activity();
}
 
void activity()
{
  timePassed ++;
  target = byte(keyCount);
  if (keyPressed){
    noActionYet = false;
    keyCount = keyCount +1;
    timePassed = 0;
  }
  if(timePassed > 300 && noActionYet == false){
    keyCount = keyCount -10;
    timePassed = 0;
  }
 
    myPort.write(keyCount);
    //println(target);
}

1 Comment


  1. Did you build
    See BJFogg, HandJive: A Device for Interpersonal Haptic Entertainment, for a device that solves some of these problems. It has bi-directional interaction.
    Great presentation, very amusing. I feel like the thing I’m missing is your wife’s reaction to the project—the outcome from the work. You discussed how people have been trying to replace human interaction with technology, which is interesting, but it seemed a very impresonal discussion for something that is such a personal project. I don’t think anyone needs the gory details, so to speak, but I’m curious how she felt about the idea, and how she felt about you spending time away from her to build something that would allow you to spend more time away from her. All that said, it took a lot of guts to get up in front of a room full of people to talk about something like this. Well done.
    Funny project. Very impressive technically. I agree with Golan that the problem is that it is just a display. Since the dildo clearly can’t be used, it makes it into a one liner. I think that’s okay but it would still be funny if it was functional. That of course is a bigger project. Great work.
    ^ A “one liner” is a good way to put it, even if the project is really intertaining.
    I like the humor and design of your project. Good call on the stepper motor, and great call on the music selection!
    tYour project introduces certain ideas about mutual working relationships that often go ignored and this is why I think your project is very informational.

    The greatest presentation in the history of interactive art
    Would have liked to see even MORE work done on the form factor, TBH
    Decent point – Much more like a finger than a member. Not sure if that’s the point…?
    You’re probably going to need some kind of silicon covering. For comfort.
    Awesome use of the redwood trees image.
    Awesome use of penis puns.
    o_o
    For this first presentation it seems odd that the penis lays flat and straight and then curves upwards. It seems more appropriate if it had been hanging first and then was pulled upward straight.
    Uh………
    The stepper-motor/string/spring actuator is cool (and simple), thanks for explaining it.

    Comment by admin — 28 March 2012 @ 12:21 pm

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2024 Interactive Art and Computational Design, Spring 2012 | powered by WordPress with Barecity