Technology

Idea Factory

Posted by | ITP, Physical Computing | No Comments

So. Some silly little ideas for physcomp projects.

  • Standing Pot: A coffee pot that cooks your coffee while vibrating the liquid with a standing wave
  • Super Strong Alarm: A super strong alarm system. Have it set up to also drop say… textbooks or rocks or knives or naked womenz on you when your alarm goes off in the morning.
  • Pebble Rock Security System: Have a system, where if you open a door while pressing a secret button, the next person to follow you in gets smashed on the head with a large club while a speaker says “BAM BAM!” Useful for situations where you’re followed into your house by unwanted guests. Also useful for situations where you want to placate angry partners, quiet noisy children, or relax uncomfortable dates.
  • Stalker Domo-Kun: For a haunted house thing. Make a domo-kun. Mount in on say a wall or something. Give it creepy dangly arms. When someone walks buy, have it decide to follow or not follow that person, but only while that person is moving. OR, have domo-kun be a robot on the floor. Hopefully he won’t get stepped on. He will randomly follow people that are moving, but stop when they stop. If they catch onto his game, they can say… press a button on his head or something and he’ll idle for a bit before going for someone else.

Firewhat?

Posted by | General, Technology | No Comments

So my firewire ports have been giving me tons of trouble recently. External HD’s not being recognized, the whole nine yards. So I come in tonight and absolutely nothing fire-wire related works. I probably should mention now that I’m using an external card for firewire. I try all my tricks: unplugging, power cycling, restarting. Finally, I look in the device manager to see if maybe the latest windows update changed something while i wasn’t looking (cause sometimes I just don’t pay attention to whatever the automatic update runs past me).

Lo and behold, I see an error message! IEEE 1394 Bus host controllers… VIA… This device cannot start. (Code 10). ZOMG, not CODE 10?!?!?! Nooooooooo! But hey, now I know that the device cannot start… meaning that the problem is probably with the device itself. So I pull it out of the PCMCIA slot and give it a thorough(sp?) looking over. Turns out there’s a little bit of dust and hair jammed into one of the pinholes. I get a needle and pull it out. It’s really packed in there. I give the slot a blast of compressed air to clear out any more dirt/hair and viola, my HD’s are all back up and running.

Soft Touch.

Posted by | ITP, Physical Computing | No Comments

Alright, so it’s time for Lab 3. Was gonna do it tomorrow but it was a Sunday night and I was bored. So~ here it is. Let’s skip the boring stuff and go straight to the Luv-O-Meter.

I took the basic concept of a squeeze handle love meter and changed it a bit. Anyone can go up to a meter and squeeze it. But, what if you had to squeeze it a different amount depending on another variable. So basically you have to match up the potentiometer w/ the pressure sensor. Like making love, and unlike your regular luv-o-meter… this requires some skill.

Here’s the video:

Harder than it looks. I had *plenty* of time to practice. And don’t even talk to me about trying to keep the light steady… ugh.

I wanted to call my meter “GUTS!!!”, but after playing around with it a bit, I realized “Soft Touch” fits it better. I also wanted to use 2 force sensors, but only had 1 on hand. That would have made this game really fun.


Also, here’s the Arduino code:

int potPin1 = 0;    // Pressure Sensor
int potPin2 = 1;    // Potentiometer

int potValue1 = 0;   // value read from the pot
int potValue2 = 0;
       
int led2 = 2;        // LEDs
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;

void setup() {
  //set up led's as outputs
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
}

void loop() {
  potValue1 = analogRead(potPin1); // read the pressure/pot values
  potValue2 = analogRead(potPin2);
  
  if(potValue1 < 25 || potValue2 < 25) {lightDown(2);}
  else {
    //if(potDiff(potValue1, potValue2) >= 300 ){lightDown(2);}
    if(potDiff(potValue1, potValue2) < 5)
      {lightUp(8);}
    else if(potDiff(potValue1, potValue2) < 26 ){lightDown(8); lightUp(7);}
    else if(potDiff(potValue1, potValue2) < 50 ){lightDown(7); lightUp(6);}
    else if(potDiff(potValue1, potValue2) < 100 ){lightDown(6); lightUp(5);}
    else if(potDiff(potValue1, potValue2) < 150 ){lightDown(5); lightUp(4);}
    else if(potDiff(potValue1, potValue2) < 200 ){lightDown(4); lightUp(3);}
    else if(potDiff(potValue1, potValue2) < 250 ){lightDown(3); lightUp(2);}
    else if(potDiff(potValue1, potValue2) < 300 ){lightDown(2);}
  }

  
  //Serial.println(potDiff(potValue1, potValue2));  //debugging
  delay(10);                     // wait 10 milliseconds before the next loop
}

/* Difference in numbers between pot and pressure sensors */
int potDiff(int x, int y)
{
  return abs(x-y);
}

/* Turn all the led on up to num */
void lightUp(int num)
{
  for(int i=2; i<=num; i++)
  {
    digitalWrite(i, HIGH);
  }
}

/* Turn all the led's off down to num */
void lightDown(int num)
{
  for( int i=8; i >= num; i--)
  {
    digitalWrite(i, LOW);
  }
}

Through new eyes…

Posted by | ITP, Physical Computing | No Comments

So there i am, on an observation assignment with my trusty sidekick Jayoung. We marched out into the cruel city, the enemy mercilessly beating down on our big blue shield. Actually, it wasn’t really an enemy. It was rain. And it wasn’t really much of a shield either. It was a slightly battered, smallish blue umbrella with a cute bear handle.


Anyhoo… we arrived at the omnipresent coffee monger, Starbucks and donning our crafty disguise of university students, we observed the locals in action. The coffee crazed mob in starbucks were engaged in all manner of technological play. Credit cards – tons of them were in play. Almost everyone who was in there made with the handing and the swiping and the replacement of the cards in the wallets. It was madness. Then you had the cell phone guys. Five… no, six! of them were there, texting and doing light web browsing from 1-5 minutes. Fascinating.


There were about 7 people on laptops. Clearly, these select few represented the higher order of deizens and were striving to keep the Starbucks from collapsing under its own morbid weight by rapidly firing off emails and browsing the web. This must have been strenuous work as they barely even looked up except to drink coffee the whole time we were there.


To be fair, Starbucks itself was trying hard to keep its deizens calm by playing music carefully crafted to sedate and becalm.


Our review of the javaheads complete, we turned our eyes upon the actions of the populace endemic to New York City. A veritable SEA of umbrellas met our eyes as we gazed on with Shock and Awe. Held one handed, these shields fought off wave after wave of enemy. A lonely tear crept to my eye as I watched the domestics fight the good fight.


Vehicles of all kinds required much dexterity and control. Use of the hands, legs, eyes and sometimes ears to drive cars, bikes and even a stroller. (True strollers are usually pushed, but this young mother was coming down the street like a rhino in heat. Driven is really the only way to really describe it.)


About a dozen or so earphones and a similiar amount of cellphones captured our eyes. There were also about 5 people using the atm across the street – doing 5 minute transactions. This neccessitated the use of hands and eyes as well.


My partner in crime, Jayoung had an astonishing idea sometime during this. (I knew there was a reason I kept her around… besides the free cake :D Mmm.. free cake. ) So, yes, her idea. There are people doing the amusing circus balancing act of coffee in one hand, umbrella in the other, phone on the shoulder and please don’t bump into anyone while you walk. So what if you take away the cellphone on the air and add a switch or something to an open umbrella that activates a screen built in on the handle. This screen can be a video/mp3/cell phone player or whatever it is you want. I thought that was a pretty cool idea.


I had a thought as well… um… GPS on a bicycle? I dunno. My creative juices were stiffled by Starbucks’ airconditioning’s attempt to turn me into a frozen mocha something-or-other.


One final note. I saw some people pushing the cube around on Astor place. I never knew you could do that before. I think that the cube most likely is like the wind up key on a watch. Except the cube winds up … all of NYC. If the cube isnt wound often enough, NYC will become more like… Bumblerock, Tenessee.

Making bread…

Posted by | ITP, Physical Computing | No Comments

…boards do stuff.
So I’ve finished the first physcomp set of labs. I was going to come into ITP to do it but somehow I ended up waking up and doing it all at home. It went quicker/easier than I thought it would. Here’s a snapshot of Lab 1. I happened to have some spare wire in a toolbox as well as an old soldering iron I pillaged from my father a few days ago. Used white wires instead of black for the ground but *Oh well*.



Next was Lab 2. The wiring was a piece of cake but the program gave me a good 1/2 hour of trouble. I downloaded it, unzipped it, installed the drivers and… the bloody program wouldn’t run. I read the help file, ran the .bat file, cried, begged, pleaded, googled… and finally found out why. It seems that there’s a bug related to your set background color in Windows. Read about it here at the Arduino forums. Anyhoo, that resolved it, all worked out. Here’s more pics.


Tuesday night update:

In a lovely case of “let’s-not-and-say-we-did”, here’s the ‘get creative’ part of Lab 2. My MasterPlan(tm) was to make a sort of combination lock. Say you have 3 buttons, you could only turn on the yellow light if you pressed the switches in a certain combination. But… I couldn’t figure out how to do that in Arduino, the problem being that Arduino reads from the i/o ports in a loop instead of recieving trigger signals. So you can see if something is pressed or not but not in what order it was done so (assuming that the switches are set up in parallel like I want). *Ah well.*


New MasterPlan(tm). Set up a domino-like series of books having each book land on a switch. When all 3 switches are pressed, BOOM, it all lights up.

LATE Tuesday Night

Had a flash of insight while on the thinking seat (where the best ideas occur). Thought I’d put this problem aside but guess not. I figured out a way to make the Original MasterPlan(tm) work. So if you have a couple ints set up as flags, you can see what’s currently pressed and what isnt and use that to see that the buttons are pressed in order. The arduino code would look as follows. (The circuit would be similiar to the one in lab two but with one less LED and 2 more switchies.)

int switchPin1 = 2;	//  digital input pin for a switch
int switchPin2 = 3;	
int switchPin3 = 4;

int ledPin = 3;		//  digital output pin for an LED

int switchState1 = 0;   // the state of a switch
int switchState2 = 0;  
int switchState3 = 0;  

int goTime = 0;		// when this hits 3, the led will shine

void setup() {
  pinMode(switchPin1, INPUT);       // set switch pin to be an input
  pinMode(switchPin2, INPUT);
  pinMode(switchPin3, INPUT);

  pinMode(ledPin, OUTPUT);	   // set the LED pin to be an output
}

void loop() {
  
  switchState1 = digitalRead(switchPin1);	// read switch input
  switchState2 = digitalRead(switchPin2);
  switchState3 = digitalRead(switchPin3);

  /* basically, make sure only one button is pressed at any time */
  if (  ((switchState1 == 1) && (switchState2 == 1)) || 
	((switchState1 == 1) && (switchState3 == 1)) ||
	((switchState2 == 1) && (switchState3 == 1))     ) {

	goTime = 0;
  } 
  else {
  /*
     Now we see which order the buttons are pressed in. 
     A failure in the combination will reset the whole thing.
     Oh yea, the combination will be... 2, 3, 1.
     Longer combinations are possible though. e.g. 2,3,2,1,3
     just, the math would be different.
  */
    if (switchState1 == 1) { if(goTime != 2) { goTime=0; } else {goTime++;} }
    if (switchState2 == 1) { if(goTime != 0) { goTime=0; } else {goTime++;} }
    if (switchState3 == 1) { if(goTime != 1) { goTime=0; } else {goTime++;} }
    
  }

  /* This little light of mine... I'm gonna let it shine... */
  if(goTime == 3) { digitalWrite(ledPin, High); } 
}


Ninja update

Hm… didn’t think about putting a delay in the code to account for the constant-read. Just saw Zoe’s in class and her combo lock works beatifully.