December 20, 2008

The RV10000: Cosmic Hand Dance Actualization Machine

An attempt to rectify the various meandering attempts of contemporary psychedelic/rave culture to unite us spiritually

• Rave and Psychedelic culture is chronically obsessed with the idea that it will unite us despite its failure to create utopia.


• These subcultures have some strong conceptual undercurrents but overall have  not managed to graduate past the party mentality as an effective methodology.


• From an aesthetics aspect it has a variety of practices that are worth exploring in an organized framework.


• These cultures have generated some useful technology and design based solutions to generating a complete mini-culture - replete with indigenous music, ritual practices, a unified social consciousness and an orientation on group experience.


• There is a need for next-generation, interaction based visualization tools that unite “eye-candy” with interesting ways of exploring form in space.


• There are complex of existing, unexplored, aesthetic traditions that have successfully created volumes of material that visually articulates cosmic, non-verbal and spiritual phenomenon.


• These design traditions pull from math, physics, geometry, metaphysics and integrate complex symbolic syntaxes.


• The need to create a interactive object that exists in public space that bridges these gaps and creates a compelling coherent link to mainstream, visually dense culture.

Having spent some years as a VJ I am more than familiar with all the varieties of underground, electronic music culture at creative semi-interactive displays of spatial phenomena in a performance setting.



As we can all see this type of performance and real-time visualization has it’s pros and cons.

Construction:

It all began with this product

I acquired a 12” clear plastic hemisphere from Canal Plastics.  After doing some research into visual and sonic sensors I decided on Sharp GP2D120X IR proximity sensors.  I got all of my materials together and began construction.

12" transparent, plastic hemisphere

Sharp GP2D120X Range Finders

Table o' stuff

I coated the hemisphere in privacy spray.  I then made a basic setup to attach the hemisphere on a rigid frame in preparation for wiring and presentation.  This setup allowed me to situate the object initially so I could begin posing and working with volume at my desk.

Sprayed Hemisphere

Sprayed and Mounted

This is my first wired rigging.  I used 3 sensors at first.  I was interested in using triangulation formulas to mathematically predict the presence of one interaction point.

Initial Wiring

Other side of unit displaying sensor mounts and wiring

After a series of design decisions, an elaborate shopping trip to Calumet Photo, Pearl, Plastic land I implemented a series of design decisions that allowed me to mount and prototype the design including the projector.

Full setup

Breadboard/Arduino setup

Tripod mounting setup

Video and Description of the project:

Multiple people using the Hand Dance Machine at ITP Winter Show 2008:

Future design and construction strategies:

• Delve into the varieties of graphics generation from real-time, procedural, OpenGL based 3D animation to driving animation that is produced specifically for the object.

• Develop a stronger grasp off the mathematics necessary to generate predictive orientation algorithims so I can more fully make use of the volumetric interaction space within the object.

• A more integrated and realistic strategy for pursuing venues that would be interested in such a performative device, galleries, dance parties etc.

• Larger scale design that involves sound and full-body or multiple person interface.

October 21, 2008

Serial Communication 2 - Processing with 2 Potentiometers

Again, I followed the lab an dit proved quite simple.  I want to dig back into this process obviously at some other point as it is clearly an exciting prospect.  The only thing that gave me any trouble was when I started hacking into the lab’s code I ended up losing interactivity from the digital pin.  This is of course a simple matter of code altering but I would like to design the processing sketch in such a way that it reintegrates that input.


PhysComp - Week 6 - Serial Communication

October 7, 2008

Serial Communication 1 and Processing

This lab was deceptively simple.  As a direct result, my posting, for the time being will be deceptively simple.  Merely a digital trace of my successful completion.  I plan on digging in and figuring out why it worked so easily.


Physical Computing - Week 5 - Serial Communication 1

October 6, 2008

Week 4 - Servos and Photocells

So, this simple lab was incredibly useful to me.  Even though we had spent several classes talking about the importance of resistors in the analog pipeline, I conveniently forgot where and how to implement them.  I wired my breadboard just fine and made sure to get my hands on the proper code, it wasn’t until I dropped a resistor on the same bus as the analog in and connected it to ground did I realize exaclt why it was necessary.  My understanding might be limited but I am going to attempt to explain why I think it worked.  If I understand it correctly it’s because the electricity in the circuit needs a bumper of sorts from dissipating through the board.  Or to put it another way the resistor linking it to ground creates a closed system so electricity moving through the photocell has another discreet channel to move through.  I hope someone who understands this can either correct me or tell me why I’m wrong.

Anyway, once the wiring was good and I realized the value range coming off of the photocell was consistent within a certain range I just adjusted the code accordigly so the values were mapped properly.  I think my next step will be to throw a potentiometer on there and see if I can control the motor with more precision.


Servo and a photocell

Here’s my code:

int servoPin = 2;     // Control pin for servo motor
int minPulse = 500;   // Minimum servo position
int maxPulse = 2500;  // Maximum servo position
int pulse = 0;        // Amount to pulse the servo

long lastPulse = 0;    // the time in milliseconds of the last pulse
int refreshTime = 20; // the time needed in between pulses

int analogValue = 0;  // the value returned from the analog sensor
int analogPin = 0;    // the analog pin that the sensor’s on

void setup() {
pinMode(servoPin, OUTPUT);  // Set servo pin as an output pin
pulse = minPulse;           // Set the motor position value to the minimum
Serial.begin(9600);
}

void loop() {
analogValue = analogRead(analogPin);      // read the analog input
pulse = map(analogValue,50,500,minPulse,maxPulse);    // convert the analog value
// to a range between minPulse
// and maxPulse.

// pulse the servo again if rhe refresh time (20 ms) have passed:
if (millis() - lastPulse >= refreshTime) {
digitalWrite(servoPin, HIGH);   // Turn the motor on
delayMicroseconds(pulse);       // Length of the pulse sets the motor position
digitalWrite(servoPin, LOW);    // Turn the motor off
lastPulse = millis();           // save the time of the last pulse
}
}

September 23, 2008

Triple Potentiometer with RGB LED

I wanted to perfect this particular configuration so I went ahead and did a little more research to make sure it worked.  Once I got the right spec setup for the RGB LED (I assumed it’s setup was a logical interpretation but once I got my eyes on the right setup I realized I was wrong).  I also had to reinstall the whole setup on the Arduino board for the PWM inputs and then everything was perfect.  Check it out.

PhyComp Week 2 extra Lab, Triple Potentiometer RGB LED

Code:

int potPin0 = 0;    // Analog input pin that the potentiometer is attached to
int potPin1 = 1;
int potPin2 = 2;

int potValue0 = 0;   // value read from the pot
int potValue1 = 0;
int potValue2 = 0;

int led9 = 9;    // PWM pin that the LED is on.  n.b. PWM 0 is on digital pin 9
int led10 = 10;
int led11 = 11;

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {
potValue0 = analogRead(potPin0); // read the pot value
potValue1 = analogRead(potPin1);
potValue2 = analogRead(potPin2);

analogWrite(led9, potValue0/4); // PWM the LED with the pot value (divided by 4 to fit in a byte)
analogWrite(led10, potValue1/4);
analogWrite(led11, potValue2/4);

Serial.println(potValue2);      // print the pot value back to the debugger pane
delay(10);                     // wait 10 milliseconds before the next loop
}

September 16, 2008

Observation Assignment Commentary

Nathan and I met at about 11 am on the 4th floor.  We decided to proceed directly from the Tisch building and head west through Washington Square Park and see what kind of phenomenon jumped out at us.  We took turns spotting and recording things that we saw.  There were a whole array of repeat circumstances that at first seemed mundane and of not that much interest but it in turn generated some insights into our current technological design era.

Our general strategy was to post-up at a static location and just start taking a tally of number of people present, number of people interacting with digital devices and type and manner of interaction.

As can be expected, mobile devices were by far the most ubiquitous and as a result we concentrated our attention on the type, variance and quality of those moments.  It became fairly evident that anywhere from a quarter to almost half of the people we saw had their high-tech objects happily brandished at any given time.  In fact it became apparent that there was a self-conciousness to how people carried there objects about.  It became a srt of tragic joke the number of people just carrying their devices around without doing anything.  Some had headphones, but as great number of people would walk for blocks happily clutching their phones/ipods at their sides.  Almost as if unwilling to detach it from their side.

It became almost laughable the extent to which people insisted on having their device always at the ready.  To me it made the inherent akwardness of mobile devices seem even more apparent.  I almost would describe it as at once poor overall formal design as well as failure to perfect portable communications as an interaction.  Bluetooth headsets, wired microphones, big over-ear headphones, cell phones clipped to belts, all seemed suddenly dated and a symbol of our current stage of design.  not in one case did I see a way of using the device that actually emphasized transparency or modesty.  Every technological device was obvious and in some cases totally distracting to the user.  Obviously when one is texting, or web browsing it is impossible to focus on anything but the little screen in front of you.  When talking or listening to music one can allow the device to drop into your pocket or purse and forget about it, but often people were content to carry it around and poke around it’s contents whenever necessary.

So, in conclusion for whatever reason this observation experiment elicited in me a sense of annoyance at the current stage of overall interaction design and a sense of impatience for the next stage.

Week 2 - Lab 2 and more

So, I completed the first lab from our homework, it went off without a hitch.  I understood the code, could comprehend the various in and out points between the breadboard and the Arduino.  Took me about 20 minutes or so.

Here it is…

So, I decided to move on to the next stage.

I had several potentiometers lying around.  In addition I had a whole bag of RGB LED’s that I was excited to use.  I was hoping to get it so each potentiometer would control the intensity of each color.  I hooked up everything as a logical evolution from the preceding lab and then modified the original code taking everything into account.  I even soldered my leads onto the potentiometer to make sure te contacts were solid.  When I loaded my code onto the board and fired it up it did nothing like I thought it would.  I m sure there is a perfectly logical explanation but it totally escapes me.  What ended up happening was the first knob acted as a dimmer like it did in the first lab.  The second knob would switch between blue/green, which I suppose is what I intended.  The lst knob merely caused the light to flicker between dark blue and a more white blue.

I altered my code several times to serial monitor each ADC pin and strangely all activity being controlled by the potentiometers was happening in the opposite rotation from the first lab.  Meaning, when I turned the knob clockwise, which should decrease resistance and generates a “1024” serial read it ended up turning off the light gradually.  This was only one strange symptom generated by my setup.  I am going to bring it in to try to decipher it further.

Anyway here is my code, setup and video.

int potPin0 = 0;    // Analog input pin that the potentiometer is attached to
int potPin1 = 1;
int potPin2 = 2;

int potValue0 = 0;   // value read from the pot
int potValue1 = 0;
int potValue2 = 0;

int led9 = 9;    // PWM pin that the LED is on.  n.b. PWM 0 is on digital pin 9
int led8 = 8;
int led7 = 7;

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {
potValue0 = analogRead(potPin0); // read the pot value
potValue1 = analogRead(potPin1);
potValue2 = analogRead(potPin2);

analogWrite(led9, potValue0/4); // PWM the LED with the pot value (divided by 4 to fit in a byte)
analogWrite(led8, potValue1/4);
analogWrite(led7, potValue2/4);

Serial.println(potValue2);      // print the pot value back to the debugger pane
delay(10);                     // wait 10 milliseconds before the next loop
}

September 9, 2008

PhysComp - Fall 08 - Lab 1

So, I kind of did this assignment in reverse.  I took a crack at the Blinky program we covered in class.  Unfortunately I had missed something in the initial setup on the breadboard and some piece of logic escaped me.  I ended up following a lab from the PhysComp website here:

http://itp.nyu.edu/physcomp/Labs/DigitalInOut

Once I got that project reverse engineered it shed light on what I missed in the original.  So I went back and built it and it worked fine.  I realized I had misunderstood which way the ground was moving in relation to the switch.

Anyway here is my documentation:

Blinky!


Blinky LED on Switch Press

Here is the more complicated project.  The switch causes the LED’s to alternate…

2 LED's

Physical Computing - Lab 1 - Switch w/2 LED’s