A Light Controller


Exploring how to balance intangible and tangible.


For my lighting controller I decided to experiment with an initial concept I have been kicking around in my notebook. With so many of our interactions moving to a space of intangibility, even in physical interfaces, I wanted to look at how we could design interactions that create more of a balance between the ubiquity of less tangible interactions with the intentional connections we get from tangible interactions. 

To begin exploring this I built a controller that uses a collection of untethered, free moving, objects that control color channels of a light based on the distance from a central hub. 


In the end, this was a great first step into looking at what tangibility looks like in this direction, but one glaring issue was not worked out: affordances. How does the user know the relation of the objects to each other? Which object controls which color channel? Where should the objects actually be placed?

I hope to revisit this questions in my final project.


Diagrams & Code


Much thanks to Joe Mango for support in working out the Arduino code for this prototype.

//————-Cell Pins
int RcellPin = 0; // the cell and 10K pulldown are connected to a0
int GcellPin = 1;
int BcellPin = 2;

// —————value pins
int photocellR, photocellG, photocellB = 0; // the analog reading from the sensor divider
int Rbrightness, Gbrightness, Bbrightness = 0; //

void setup(void) {
// We’ll send debugging information via the Serial monitor
pinMode( Rpin, OUTPUT);
pinMode( Bpin, OUTPUT);
pinMode( Gpin, OUTPUT);

void loop(void) {
photocellR = analogRead(RcellPin);
photocellG = analogRead(GcellPin);
photocellB = analogRead(BcellPin);

Rbrightness = map(photocellR, 0, 600, 0, 255);
Rbrightness = constrain(Rbrightness, 0, 255);

Gbrightness = map(photocellG, 0, 300, 0, 255);
Gbrightness = constrain(Gbrightness, 0, 255);

Bbrightness = map(photocellB, 0, 400, 0, 255);
Bbrightness = constrain(Bbrightness, 0, 255);

// Serial.println(Rbrightness);
analogWrite(Rpin, Rbrightness);
analogWrite(Gpin, Gbrightness);
analogWrite(Bpin, Bbrightness);

// delay(100);

Housing and Interaction


For this prototype it was important that the actual interaction of moving untethered objects was possible, so I chose sculpting foam to rapidly shape the objects I needed. This material is great for fast prototyping, but has the potential to hold a lot of static, which should be considered when housing wiring and circuitry. 

Skylar JessenComment