<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Making Furniture Interactive</title>
	<atom:link href="http://makingfurnitureinteractive.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://makingfurnitureinteractive.wordpress.com</link>
	<description>Class blog for Making Furniture Interactive (Fall 07) @ Carnegie Mellon</description>
	<lastBuildDate>Wed, 19 Dec 2007 07:09:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='makingfurnitureinteractive.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Making Furniture Interactive</title>
		<link>http://makingfurnitureinteractive.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://makingfurnitureinteractive.wordpress.com/osd.xml" title="Making Furniture Interactive" />
	<atom:link rel='hub' href='http://makingfurnitureinteractive.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Final Project</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/19/final-project-2/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/19/final-project-2/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 07:09:01 +0000</pubDate>
		<dc:creator>gregsaul</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/19/final-project-2/</guid>
		<description><![CDATA[Here is the presentation for my final project; I intend on updating it again, but this is what I could get done in a back alley of La Paz with one battery to burn . Link<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=540&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here is the presentation for my final project;</p>
<p>I intend on updating it again, but this is what I could get done in a back alley of La Paz with one battery to burn .</p>
<p><a href="http://gregsaul.co.nz/ifPresentation/" title="Link">Link </a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/540/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/540/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/540/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/540/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/540/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/540/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/540/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/540/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/540/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=540&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/19/final-project-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9ea0dce5c6ae31e8b3880844863e7269?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gregsaul</media:title>
		</media:content>
	</item>
		<item>
		<title>Laser Cut Paper Iris</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/laser-cut-paper-iris/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/laser-cut-paper-iris/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 03:58:38 +0000</pubDate>
		<dc:creator>derkbw</dc:creator>
				<category><![CDATA[Derk Wolmuth]]></category>
		<category><![CDATA[Exercise 6: Motorized Mechanical Movement]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/laser-cut-paper-iris/</guid>
		<description><![CDATA[An attempt was made at cutting out a mechanical iris on the laser cutter. It did not work so well and was later abandoned without making it motorized. A separate mechanical device, a power window motor was modified through sheet metal work and welding. This was used to hang a tree upon and thereby spin [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=532&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>An attempt was made at cutting out a mechanical iris on the laser cutter.  It did not work so well and was later abandoned without making it motorized.</p>
<p>A separate mechanical device, a  power window motor was modified through sheet metal work and welding.  This was used to hang a tree upon and thereby spin it.  This is seen in action in a short clip of the Robotic Branch Video below during Rossum&#8217;s recent Uncanny Valley robotic art show at the Brewhouse.</p>
<p><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris.jpg" title="Paper Iris"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris.thumbnail.jpg" alt="Paper Iris" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-hand.jpg" title="Paper Iris and Hand"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-hand.thumbnail.jpg" alt="Paper Iris and Hand" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-open.jpg" title="Paper Iris Open"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-open.thumbnail.jpg" alt="Paper Iris Open" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-failures.jpg" title="Paper Iris Failures"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-failures.thumbnail.jpg" alt="Paper Iris Failures" /></a></p>
<p><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/tree-spinner-mech.jpg" title="tree-spinner-mech.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/tree-spinner-mech.thumbnail.jpg" alt="tree-spinner-mech.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/tree-spinner-mech-closeup.jpg" title="tree-spinner-mech-closeup.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/tree-spinner-mech-closeup.thumbnail.jpg" alt="tree-spinner-mech-closeup.jpg" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/532/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/532/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/532/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=532&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/laser-cut-paper-iris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8dadec0f2b4aef99dc917d9e8c8b4892?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">derkbw</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris.thumbnail.jpg" medium="image">
			<media:title type="html">Paper Iris</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-hand.thumbnail.jpg" medium="image">
			<media:title type="html">Paper Iris and Hand</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-open.thumbnail.jpg" medium="image">
			<media:title type="html">Paper Iris Open</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/paper-iris-failures.thumbnail.jpg" medium="image">
			<media:title type="html">Paper Iris Failures</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/tree-spinner-mech.thumbnail.jpg" medium="image">
			<media:title type="html">tree-spinner-mech.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/tree-spinner-mech-closeup.thumbnail.jpg" medium="image">
			<media:title type="html">tree-spinner-mech-closeup.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Robotic Branch</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/robotic-branch/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/robotic-branch/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 03:15:27 +0000</pubDate>
		<dc:creator>derkbw</dc:creator>
				<category><![CDATA[Derk Wolmuth]]></category>
		<category><![CDATA[Final Project]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/robotic-branch/</guid>
		<description><![CDATA[A kinetic hat rack was conceived in conjunction with research into a mood reading/recording hat. Several servos, a geared motor, and a Querk microprocessor contort a branch in various degrees. Mental strain of everyday existence is suggested by the vagaries of deformation.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=528&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A kinetic hat rack was conceived in conjunction with research into a mood reading/recording hat.  Several servos, a geared motor, and a Querk microprocessor contort a branch in various degrees.  Mental strain of everyday existence is suggested by the vagaries of deformation.</p>
<p><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/branch-hat.jpg" title="Robotic Branch"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/branch-hat.thumbnail.jpg" alt="Robotic Branch" /></a></p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/krEouZG9BH0?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/528/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/528/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/528/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=528&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/robotic-branch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8dadec0f2b4aef99dc917d9e8c8b4892?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">derkbw</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/branch-hat.thumbnail.jpg" medium="image">
			<media:title type="html">Robotic Branch</media:title>
		</media:content>
	</item>
		<item>
		<title>Final Project</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 01:27:54 +0000</pubDate>
		<dc:creator>afirth</dc:creator>
				<category><![CDATA[Alastair Firth]]></category>
		<category><![CDATA[Final Project]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project/</guid>
		<description><![CDATA[Description: The final product is an array of 256 LEDs which could be used to display a multitude of information. It is also able to control, in a limited way, an iPod or other audio device. The design uses a clock module, temperature sensor, LED controllers, and a stereo volume control to provide the time, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=523&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/webfin.jpg" title="Final Project"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/webfin.jpg?w=329&#038;h=247" alt="Final Project" height="247" width="329" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/aafront-copy.jpg" title="aafront-copy.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/aafront-copy.jpg?w=200&#038;h=140" alt="aafront-copy.jpg" height="140" width="200" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/aaback.jpg" title="aaback.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/aaback.jpg?w=198&#038;h=148" alt="aaback.jpg" height="148" width="198" /></a></p>
<p>Description: The final product is an array of 256 LEDs which could be used to display a multitude of information. It is also able to control, in a limited way, an iPod or other audio device. The design uses a clock module, temperature sensor, LED controllers, and a stereo volume control to provide the time, temperature, and audio entertainment which the user desires. Through the iPod, it is also possible to use it as an alarm clock.<br />
<span id="more-523"></span>Unfortunately I was not able to get everything fully functional at the same time, however individually everything worked.</p>
<p>Diagram of the Arduino-connected components</p>
<p><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/fin.jpeg" title="Diagram"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/fin.jpeg?w=423&#038;h=212" alt="Diagram" height="212" width="423" /></a></p>
<p>Materials Used:<br />
Temperature sensor (thermistor)<br />
DS1307 clock module (sparkfun breakout)<br />
4 LED matrices<br />
4 LED controllers (max7219)<br />
1 Arduino<br />
Power source (6A @ 5V)<br />
2 grid style PCBs<br />
1 double audio taper potentiometer (volume control)<br />
2 audio jacks<br />
1 power jack<br />
connectors and wire<br />
5 lbs solder</p>
<p>Case:<br />
Masonite<br />
Plexi<br />
asst hardware</p>
<p>due to my mixed up wiring, i had to modify tomeks ledcontroller lib a little.<br />
here are some code excerpts for showing temperature with two of the matrices connected.<br />
note that this only lets you write 1 led/column, basically to do more than 1 you have to keep a buffer and add to it, then update each row later. this is what the LEDMatrix lib included with the arduino distro does.<br />
anyway, the code below makes a little mountain which is taller the warmer the temperature</p>
<pre class="brush: cpp;">
void loop () {
  int temp = analogRead(tpin);

  //what you write goes here mat(row,col); maxx is literal, mat translates

  if (temp  0){
    kh(1);
  }
  if (temp  294){
    kh(2);
  }
  if (temp  339){
    kh(3);
  }
  if (temp  384){
    kh(4);
  }
  if (temp  429){
    kh(5);
  }
  if (temp  474){
    kh(6);
  }
  if (temp  521){
    kh(7);
  }
  if (temp  564){
    kh(8);
  }
  else{
    kh(9); //light them all
  }
}

void kh(int minn){//build a mountain
  for (e=minn; e= minn
    maxx(d[e],0);
    maxx(d[minn],0); //pushes the last clear through to the second matrix
 }
  for (e=1; e&lt;minn; e++){ //turn on the rows &lt;min
    mat(e,e);
    mat(e, 17-e);
  }
}</pre>
<p>heres my code for writing to two matrices:</p>
<pre class="brush: cpp;">
void mat(int reg, int col){ //can address row 1-8, col 1-16
  digitalWrite(load, LOW);
  if (col &lt;= 8){//this writes the lower rows to the second matrix
    putByte(d[reg]);
    putByte(c[col]);
    putByte(0x00);
    putByte(0x00);
  }
  else{//this subtracts 8 and writes the higher rows to the first matrix
    putByte(d[reg]);
    putByte(c[col-8]);
  }
  digitalWrite(load, HIGH);
}</pre>
<p>I managed to lose the .ai of the poster I made for the final presentation, but it was just name, title, and abstract</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/523/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/523/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/523/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=523&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/65b62b364750b2a8e7f382e5afceba53?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afirth</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/webfin.jpg" medium="image">
			<media:title type="html">Final Project</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/aafront-copy.jpg" medium="image">
			<media:title type="html">aafront-copy.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/aaback.jpg" medium="image">
			<media:title type="html">aaback.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/fin.jpeg" medium="image">
			<media:title type="html">Diagram</media:title>
		</media:content>
	</item>
		<item>
		<title>Kipum Lee Final Project</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/kipum-lee-final-project/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/kipum-lee-final-project/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 23:23:41 +0000</pubDate>
		<dc:creator>Kip</dc:creator>
				<category><![CDATA[Final Project]]></category>
		<category><![CDATA[Kipum Lee]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/kipum-lee-final-project/</guid>
		<description><![CDATA[Abstract:I am interested in how products communicate back to us in subtle ways. An exercise machine is something people invest in but many times, ends up not being used. If it has not been activated within a certain “grace period,” the machine sends the user an email asking for interaction. Materials:Arduino microprocessorMacbook (for power)simple switchbreadboard22 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=521&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Abstract</strong>:I am interested in how products communicate back to us in subtle ways. An exercise machine is something people invest in but many times, ends up not being used. If it has not been activated within a certain “grace period,” the machine sends the user an email asking for interaction.</p>
<p><strong>Materials</strong>:Arduino microprocessorMacbook (for power)simple switchbreadboard22 gauge solid wires1  150 ohm resistorrubberbands or fishwire (to wrap around the exercise machine)1 mechanical exercise machine1 busy/lazy person who wants to work out but is in need of a reminder</p>
<p>Please watch the video to see the process and explanation: <span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/1S8bzXUelHE?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span></p>
<p>For the full downloadable video file (55.9 mb): <a href="http://www.kipworks.com/mfi/kipumlee_mfi_finalproject.mov" target="_blank" title="Kipum Lee's Final Project Video">www.kipworks.com/mfi/kipumlee_mfi_finalproject.mov</a></p>
<p>For the downloadable poster that was used during the final presentation (1.1 mb):  <a href="http://www.kipworks.com/mfi/kipumlee_Poster.pdf" target="_blank" title="Kipum Lee's Final Project Poster">www.kipworks.com/mfi/kipumlee_Poster.pdf</a><strong> </strong></p>
<p><strong>Learnings</strong>:It was good to prototype on my own and take things outside of the conceptual world. Although it was difficult learning these new programs and how things actually work, I learned the basics of how to put things together and test out an idea. I hope to continue working with physical computing and study the subject more to get more proficient with the materials and coding.<br />
<span id="more-521"></span>(<span style="font-weight:bold;" class="Apple-style-span">Mark, I still don&#8217;t know why I can&#8217;t post my code even though I&#8217;ve followed the directions on how to make it nice using the &#8220;sourcecode&#8221; brackets</span>)</p>
<p>Code for Arduino:</p>
<pre> int sensorVal;

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorVal = analogRead(0);
  Serial.println(sensorVal, DEC);
  delay(10);
}</pre>
<p>Processing Code:</p>
<pre>//adapted from Tom Igoe's works.
import processing.serial.*;                    			// access to serial port
import processing.net.*;                       			// access to net library

int linefeed=10;                               			//linefeed in ASCII
Serial myPort;                                 			//the serial port
int sensorVal=0;
int graphPosition=0;                           			//to graph my sensor input
boolean kipsToy=false;                         			//if thing not there (to use with graph plotting)
int threshold=1;                               			//if above this number, thing is there
int timeThreshold=0;                           			//minimum number of minutes between emails
int timerMax=10000;                            			//timer limit is 10000 loops (equivalent to about 2 min)
int timer=0;                                   			//start timer
int triggerPHP=0;                              			//if triggerPHP=0, no email is sent via PHP. if triggerPHP=1, email sent to me.

//HTTP client variables:
Client client;                                 			// new net client
boolean requestInProgress;                     			// whether a net request is in progress
String responseString = "";                    			// string of text received by client

void setup() {
  size(400,300);
  println(Serial.list());
  myPort=new Serial(this, Serial.list()[0], 9600);

  myPort.bufferUntil(linefeed);
}

//SAME AS VOID LOOP() IN ARDUINO
void draw() {
  if(sensorVal &gt; threshold) {                			//if the sensorVal is above threshold
    kipsToy=true;                            			//someone there (for graph purposes)
    timer=0;                                 			//reset timer
    triggerPHP=0;                            			//PHP reads and doesn't send me an email b/c only triggerPHP=1 sends me email
  }
  else{
    if(sensorVal &lt; threshold &amp;&amp; timer &gt;= timerMax) {    	//if sensor not in use and nonusage time &gt; timeMax
      kipsToy=false;                           			//therefore, nothing there anymore (for graph purposes)
      sendMail();                              			//then send mail
      timer=0;                                 			//reset timer
      triggerPHP=1;                            			//variable to trigger PHP to send me an email
    }
  }

  if (requestInProgress == true) {
    checkNetClient();
  }
  timer++;                                     			//adds one to timer while it continues to loop
  println("Timer Reading is" + timer);
}

//READS FROM ARDUINO
void serialEvent(Serial myPort) {
  String myString=myPort.readStringUntil(linefeed);
  if(myString !=null) {
    sensorVal=int(trim(myString));
    println("This is the sensor value from arduino" + sensorVal);
    drawGraph();                              			//draws graph
  }
}

//DRAWS GRAPH
void drawGraph() {
  int lineHeight=sensorVal/2;
  if (kipsToy) {
    stroke(0,255,0);                           			//draw green line
  }
  else{
    stroke(255,0,0);                           			//draw red line
  }
  line(graphPosition, height, graphPosition, height-lineHeight);

  //at the edge of the screen, go back to the beginning:
  if(graphPosition &gt;= width) {
    graphPosition=0;
    background(0);
  }
  else{
    graphPosition++;
  }
}

//USING PHP TO SEND MAIL
void sendMail() {
  if (requestInProgress == false) {               		//Do this only if I'm not already in the middle of an HTTP request
    client = new Client(this, "kipworks.com", 80);      	// open a connection to host

    String requestString = "/mfi/mfi-script2.php?triggerPHP=" + triggerPHP;    //form the request string

    client.write("GET " + requestString + " HTTP/1.0\n");    	//send the HTTP GET request
    client.write("HOST: kipworks.com\n\n");
    requestInProgress = true;                    		//note that I have a request in progress
  }
}

//NETWORK STUFF
void checkNetClient() {
  if (client.available() &gt; 0) {                  		//available() returns how many bytes have been received by client
    responseString +=char(client.read());        		//read a byte, convert to a character, and add it to string
    print("|");                                  		//add to a line of |'s on the screen
  }
  else{                                         		//if no byte available, either the response hasn't started, or it's done
    if(responseString.length() &gt; 0) {              		//if responseString is longer than 0 bytes, response has started
      if(requestInProgress == true) {              		//I've got some bytes, but now there's no more to read. stop
        println(responseString);                   		//print the response
        requestInProgress = false;                 		//note that the request is over
        responseString = "";                       		//reset the string for future requests
      }
    }
  }
}</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/521/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/521/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/521/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/521/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=521&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/kipum-lee-final-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.kipworks.com/mfi/kipumlee_mfi_finalproject.mov" length="58648041" type="video/quicktime" />
	
		<media:content url="http://0.gravatar.com/avatar/c530b5f049d26e0d98d4c7303d68de95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipum</media:title>
		</media:content>
	</item>
		<item>
		<title>Something More Fashionable</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/something-more-fashionable/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/something-more-fashionable/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 23:21:31 +0000</pubDate>
		<dc:creator>jenngooch</dc:creator>
				<category><![CDATA[Final Project]]></category>
		<category><![CDATA[Jenn Gooch]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/something-more-fashionable/</guid>
		<description><![CDATA[My goal for this project was to circuit bend a CD player to be controlled by a sensor/micro-contoller. I found the hardest thing about this was to &#8220;zero out&#8221; the CD&#8217;s built-in functions so that I had complete control over its starting and stopping. This involved coding in some measures to make sure it stopped [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=522&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My goal for this project was to circuit bend a CD player to be controlled by a sensor/micro-contoller. I found the hardest thing about this was to &#8220;zero out&#8221; the CD&#8217;s built-in functions so that I had complete control over its starting and stopping. This involved coding in some measures to make sure it stopped before the CD was told to play, so that it wouldn&#8217;t pause instead. This took some time to fully figure out, and I think there is a lot of undiscovered potential for this system that I hope to implement in some upcoming pieces.</p>
<p>While I&#8217;m pleased to have achieved my main goal of the CD player circuit bend, I wish I had more time to develop the content (audio) to better utilize the technical developments.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/8NE5q7a9iE4?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<pre class="brush: cpp;">

int cd1stop = 2;
int cd1play = 3;
int cd1forward = 4;
int sensorPin = 0;
int val = 0;       // variable to store the value coming from the sensor

void setup()
{
  pinMode(cd1stop, OUTPUT);
  pinMode(cd1play, OUTPUT);
  pinMode(cd1forward, OUTPUT);
  pinMode(sensorPin, INPUT);  // }

void loop()
{
  val = analogRead(sensorPin);    // read the value from the sensor
  delay(1000);
  if (val &lt; 850)  // zero out CD player (automatically plays) and stop it
	{digitalWrite(cd1play, HIGH);
	delay(100);
	digitalWrite(cd1stop, LOW);
	delay(1000);
	digitalWrite(cd1stop, HIGH);
	delay(1000);
	}

   else	// play
	{digitalWrite(cd1play, LOW);
	}
}</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/522/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/522/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/522/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=522&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/something-more-fashionable/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4067a4394c5401112e5668a4984b4ada?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jenngooch</media:title>
		</media:content>
	</item>
		<item>
		<title>[Dan D.W. Kang] Final Project- Interactive Coffee Table</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/dan-dw-kang-final-project-interactive-coffee-table/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/dan-dw-kang-final-project-interactive-coffee-table/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 22:07:29 +0000</pubDate>
		<dc:creator>dwkang</dc:creator>
				<category><![CDATA[Dong Woo Kang]]></category>
		<category><![CDATA[Final Project]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/dan-dw-kang-final-project-interactive-coffee-table/</guid>
		<description><![CDATA[* Description This interactive coffee table responds to the users and objects (coffee cups) by giving out different shades of light. Two I/R sensors are attached on each side of the table to detect how many people there are. Two photocells are attached on the top of the table at both ends to detect how many [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=508&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1305.jpg" title="dscn1305.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1305.thumbnail.jpg" alt="dscn1305.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1303.jpg" title="dscn1303.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1303.thumbnail.jpg" alt="dscn1303.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1300.jpg" title="dscn1300.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1300.thumbnail.jpg" alt="dscn1300.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1292.jpg" title="dscn1292.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1292.thumbnail.jpg" alt="dscn1292.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1287.jpg" title="dscn1287.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1287.thumbnail.jpg" alt="dscn1287.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1286.jpg" title="dscn1286.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1286.thumbnail.jpg" alt="dscn1286.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1285.jpg" title="dscn1285.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1285.thumbnail.jpg" alt="dscn1285.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1284.jpg" title="dscn1284.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1284.thumbnail.jpg" alt="dscn1284.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1280.jpg" title="dscn1280.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1280.thumbnail.jpg" alt="dscn1280.jpg" /></a><a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1278.jpg" title="dscn1278.jpg"><img src="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1278.thumbnail.jpg" alt="dscn1278.jpg" /></a></p>
<p>* Description</p>
<p>This interactive coffee table responds to the users and objects (coffee cups) by giving out different shades of light.</p>
<p>Two I/R sensors are attached on each side of the table to detect how many people there are. Two photocells are attached on the top of the table at both ends to detect how many coffee cups are being used. Depending on how many people or coffee cups there are, the table will respond differently with different shades and intensity of color. The table reaches its happiest state when the table is being fully utilized; two people sitting at the table, both of them drinking coffee. The table will entertain the users by flashing colorful lights and spinning.</p>
<p>* Code</p>
<pre class="brush: cpp;">
int lightVal = 0;
int lightValB = 0;
int distanceVal = 0;
int distanceValB = 0;
int lightsensor = 0;
int lightsensorB = 2;
int distancesensor = 3;
int distancesensorB = 1;
int green = 11;
int red = 9;
int blue = 10;
int greenB = 3;
int redB = 5;
int motor = 7;
int value = 0;
int state = 1;
void setup() {
  pinMode(lightsensor, INPUT);
  pinMode(lightsensorB, INPUT);
  pinMode(distancesensor, INPUT);
  pinMode(distancesensorB, INPUT);
  pinMode(motor,OUTPUT);
  pinMode(red,OUTPUT);
  pinMode(green,OUTPUT);
  pinMode(blue,OUTPUT);
  pinMode(redB,OUTPUT);
  pinMode(greenB,OUTPUT);
  Serial.begin(9600); // Set up the serial communication.
}
void loop()
{
  lightVal = analogRead(lightsensor);
  lightValB = analogRead(lightsensorB);
  distanceVal = analogRead(distancesensor);
  distanceValB = analogRead(distancesensorB);
  Serial.println(&quot;-----&quot;);
  Serial.print(&quot;lightvallue &quot;);
  Serial.println(lightVal);
  Serial.print(&quot;lightvalueB &quot;);
  Serial.println(lightValB);
  Serial.print(&quot;distancevalue &quot;);
  Serial.println(distanceVal);
  Serial.print(&quot;distancevalueB &quot;);
  Serial.println(distanceValB);
 Serial.print(&quot;state &quot;);
 Serial.println(state);
 if (state == 0) {noPnoC ();}
 else if (state == 1) {noPoneC ();}
 else if (state == 2) {noPoneC_B ();}
 else if (state == 3) {noPtwoC ();}
 else if (state == 4) {onePnoC ();}
 else if (state == 5) {onePnoC_B ();}
 else if (state == 6) {onePoneC ();}
 else if (state == 7) {onePoneC_B ();}
 else if (state == <img src='http://s0.wp.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> {onePtwoC ();}
 else if (state == 9) {onePtwoC_B ();}
 else if (state == 10) {twoPnoC ();}
 else if (state == 11) {twoPoneC ();}
 else if (state == 12) {twoPoneC_B ();}
 else if (state == 13) {twoPtwoC ();}
}
void noPnoC()    
{
  alloff();
  for(value = 0; value &lt;=75; value+=5)
  {analogWrite(red, value);
  delay(100);}
 
  for(value = 75; value &gt;=0; value-=5)
  {analogWrite(red, value);
  delay(100);}
condition();
}   
void noPoneC()   
{
  alloff();
  for(value = 0; value &lt;=50; value+=2)
  {analogWrite(red, value);
  delay(200);}
 
  for(value = 50; value &gt;=0; value-=2)
  {analogWrite(red, value);
  delay(200);}
 
condition();
}
void noPoneC_B()       
{
  alloff();
  for(value = 0; value &lt;=50; value+=2)
  {analogWrite(red, value);
  delay(200);}
 
  for(value = 50; value &gt;=0; value-=2)
  {analogWrite(red, value);
  delay(200);}
 
 condition();
}
void noPtwoC()      
{
  alloff();
  for(value = 0; value &lt;=50; value+=2)
  {analogWrite(red, value);
  delay(200);}
 
  for(value = 50; value &gt;=0; value-=2)
  {analogWrite(red, value);
  delay(200);}
 
 condition();
}
void onePnoC()
{
  alloff();
  for(value = 0 ; value &lt;=180; value+=5)
  {analogWrite(blue, value);
  delay(30); }
  for(value = 180 ; value &gt;=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
condition();
}
void onePnoC_B()
{
  alloff();
  for(value = 0 ; value &lt;=180; value+=5)
  {analogWrite(red, value);
  delay(30); }
  for(value = 180 ; value &gt;=0; value-=5)
  {analogWrite(red, value);
  delay(30);}
 
condition();
}

void onePoneC()
{  alloff();
  for(value =0; value &lt;=180; value+=5)
  {analogWrite(blue, value);
  delay(30);}
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
condition();
}
void onePoneC_B()
{  alloff();
  for(value =0; value &lt;=180; value+=5)
  {analogWrite(red, value);
  delay(30);}
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(red, value);
  delay(30);}
 
condition();
}
void onePtwoC()
{  alloff();
  for(value =0; value &lt;=180; value+=5)
  {analogWrite(blue, value);
  delay(30);}
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
    
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
 condition();
}
void onePtwoC_B()
{  alloff();
  for(value =0; value &lt;=180; value+=5)
  {analogWrite(red, value);
  delay(30);}
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
    
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(red, value);
  delay(30);}
condition();
}

void twoPnoC()
{  alloff();
  for(value =0; value &lt;=200; value+=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value =0; value &lt;=200; value+=5)
  {analogWrite(redB, value);
  delay(30);}
   
  for(value = 200; value &gt;=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value = 200; value &gt;=0; value-=5)
  {analogWrite(redB, value);
  delay(30);}
 
condition();
}
void twoPoneC()
{  alloff();
  for(value = 0; value &lt;=180; value+=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value =0; value &lt;=180; value+=5)
  {analogWrite(redB, value);
  delay(30);}
 
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
   
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(redB, value);
  delay(30);}
 
condition();
}
void twoPoneC_B()
{  alloff();
  for(value = 0; value &lt;=180; value+=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value =0; value &lt;=180; value+=5)
  {analogWrite(redB, value);
  delay(30);}
 
  for(value = 0; value &lt;=255; value+=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 255; value &gt;=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
   
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value = 180; value &gt;=0; value-=5)
  {analogWrite(redB, value);
  delay(30);}
 
condition();
}
void twoPtwoC()
{  alloff();
  digitalWrite(motor,HIGH);
  digitalWrite(red, HIGH);
  delay(50);
  digitalWrite(red,LOW);
  digitalWrite(red, HIGH);
  delay(50);
  digitalWrite(red,LOW);
  digitalWrite(green,HIGH);
  delay(50);
  digitalWrite(green,LOW);
  digitalWrite(blue,HIGH);
  delay(50);
  digitalWrite(blue,LOW);
  digitalWrite(greenB,HIGH);
  delay(50);
  digitalWrite(greenB,LOW); 
condition();
}

void alloff()
{
  digitalWrite(red,LOW);
  digitalWrite(green,LOW);
  digitalWrite(blue,LOW);
  digitalWrite(redB,LOW);
  digitalWrite(greenB,LOW);
  digitalWrite(motor,LOW);
}
void condition()
{
  if (distanceVal &lt; 150 &amp;&amp; lightVal &gt; 80 &amp;&amp; distanceValB &lt; 150 &amp;&amp; lightValB &gt; 220) {state = 0;}
  if (distanceVal &lt; 150 &amp;&amp; lightVal &lt; 80 &amp;&amp; distanceValB &lt; 150 &amp;&amp; lightValB &gt; 220) {state = 1;}
  if (distanceVal &lt; 150 &amp;&amp; lightVal &gt; 80 &amp;&amp; distanceValB &lt; 150 &amp;&amp; lightValB &lt; 220) {state = 2;}
  if (distanceVal &lt; 150 &amp;&amp; lightVal &lt; 80 &amp;&amp; distanceValB &lt; 150 &amp;&amp; lightValB &lt; 220) {state = 3;}
  if (distanceVal &gt; 150 &amp;&amp; lightVal &gt; 80 &amp;&amp; distanceValB &lt; 150 &amp;&amp; lightValB &gt; 220) {state = 4;}
  if (distanceVal &lt; 150 &amp;&amp; lightVal &gt; 80 &amp;&amp; distanceValB &gt; 150 &amp;&amp; lightValB &gt; 220) {state = 5;}
  if (distanceVal &gt; 150 &amp;&amp; lightVal &lt; 80 &amp;&amp; distanceValB &lt; 150 &amp;&amp; lightValB &gt; 220) {state = 6;}
  if (distanceVal &lt; 150 &amp;&amp; lightVal &gt; 80 &amp;&amp; distanceValB &gt; 150 &amp;&amp; lightValB &lt; 220) {state = 7;}
  if (distanceVal &gt; 150 &amp;&amp; lightVal &lt; 80 &amp;&amp; distanceValB &lt; 150 &amp;&amp; lightValB &lt; 220) {state = 8;}
  if (distanceVal &lt; 150 &amp;&amp; lightVal &lt; 80 &amp;&amp; distanceValB &gt; 150 &amp;&amp; lightValB &lt; 220) {state = 9;}
  if (distanceVal &gt; 150 &amp;&amp; lightVal &gt; 80 &amp;&amp; distanceValB &gt; 150 &amp;&amp; lightValB &gt; 220) {state = 10;}
  if (distanceVal &gt; 150 &amp;&amp; lightVal &lt; 80 &amp;&amp; distanceValB &gt; 150 &amp;&amp; lightValB &gt; 220) {state = 11;}
  if (distanceVal &gt; 150 &amp;&amp; lightVal &gt; 80 &amp;&amp; distanceValB &gt; 150 &amp;&amp; lightValB &lt; 220) {state = 12;}
  if (distanceVal &gt; 150 &amp;&amp; lightVal &lt; 80 &amp;&amp; distanceValB &gt; 150 &amp;&amp; lightValB &lt; 220) {state = 13;}
 
}</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/508/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/508/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/508/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=508&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/dan-dw-kang-final-project-interactive-coffee-table/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ef7c7525cc582485067c9dfe56ac7f03?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dwkang</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1305.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1305.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1303.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1303.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1300.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1300.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1292.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1292.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1287.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1287.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1286.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1286.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1285.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1285.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1284.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1284.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1280.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1280.jpg</media:title>
		</media:content>

		<media:content url="http://makingfurnitureinteractive.files.wordpress.com/2007/12/dscn1278.thumbnail.jpg" medium="image">
			<media:title type="html">dscn1278.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Final Project: Pinwheels</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project-pinwheels/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project-pinwheels/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 21:38:40 +0000</pubDate>
		<dc:creator>jilore</dc:creator>
				<category><![CDATA[Final Project]]></category>
		<category><![CDATA[Joe Iloreta]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project-pinwheels/</guid>
		<description><![CDATA[Abstract: A kinetic object responds to movement both across its face as well as towards and away from it. Like a simple mechanical pet or a sunflower, it reacts to a body along a path, following one longingly as it passes; it may even show excitement when approached. With this project I sought to build [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=507&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm3.static.flickr.com/2242/2118215791_cfd8b71e12.jpg?v=0" height="256" width="192" />Abstract:</p>
<p>A kinetic object responds to movement both across its face as well as towards and away from it. Like a simple mechanical pet or a sunflower, it reacts to a body along a path, following one longingly as it passes; it may even show excitement when approached.</p>
<p>With this project I sought to build on skills learned over the semester, and elaborate on the four-state machine practiced earlier in the year, engaging the possibilities of passive, casual movement as interaction with an artifact.</p>
<p>Each pinwheel possesses two ultrasonic rangefinders in order to determine the presence of an object in its field of vision calculating distance of passing objects through each rangefinder, thus allowing it to calculate the angle at which the pinwheel pivots towards the movement.</p>
<p>Poster <a href="http://makingfurnitureinteractive.files.wordpress.com/2007/12/mfi_final_11x17.pdf" title="Poster">here</a></p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/BP9eZTFSMFs?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p><span id="more-507"></span></p>
<pre class="brush: java;">

#include &lt;math.h&gt; // (no semicolon)

int milliSecCounter = 0;  // countshow many times we've gone through the sendServoAngle() function
int timesThruLoop = 0;    //coutns how many times we've read for a new angle
int holdDuration = 100;      //in milliseconds, stores how long we wait before taking another reading....this is to give the servo enough time to go to the angle
int newestAngle;
int newestDistance;
int valA;
int valB;

int myAngle;
int pulseWidth;

int potPin = 0;           // Analog in 0 connected to the potentiometer
int transistorPin = 9;    // connected to the base of the transistor for EACH MOTOR
int alphaMotorPin = 9;
int potValue = 0;         // value returned from the potentiometer

 // -------IR _ STUFF

//    pin values
int ultraSoundSignalLeft = 8; // Ultrasound signal pin
int ultraSoundSignalRight = 7; // Ultrasound signal pin

int val = 0;
int valRight = 0;

int irValA;
int irValB;

int ultrasoundValue = 0;
int ultrasoundValueRight = 0;

int timecount = 0; // Echo counter
int timecountRight = 0; // Echo counter

int ledPin = 13; // LED connected to digital pin 13

int sensorDistance = 100; //distance between sensors, should be in same units (response time) that sensor detects in.
int absDistance;
int maxDistance = 5000; //value to cap detectable distance

// CALC ANGLE
int disLeft;         //calculated distance from left sensor
int disRight;        //calculated distance from right sensor
int newAngle;        //calculated angle from IR readings

int angleSlightLeft = 100;     //lower limit angle read to turn the extreme left
int angleMoreLeft = 122;        //upper limit angle read to turn the the left
int angleMostLeft = 145;
int angleCenter = 90;
int angleSlightRight = 77;      //upper limit angle to read to turn to the right
int angleMoreRight = 55;
int angleMostRight = 32;    //upper limit angle read to turn to the far right

int movetoUnits = 128; //values as anaolong input to the servo.
                        //multiply this value by the values below to obtain analong input to servo

int movetoMostLeft = 7;     //degree value of far left angle to move to
int movetoMoreLeft = 6;        //degree valeu of left angle to move to
int movetoSlightLeft = 5;
int movetoCenter = 4;
int movetoMostRight = 3;        //degree value of right angle to move to
int movetoMoreRight = 2;
int movetoSlightRight =1 ;      //degree value of far right angle to move to

//SERVO STUFF ------------------------
int alphaServoPin = 2;
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
int pulseRange = 2000;

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 = 1;    // the analog pin that the sensor's on

boolean firstTime = true;

// MOTOR VARIABLES
int speedHigh = 150;       //designated range for high, med, and low motor speed
int speedMed = 100;
int speedLow = 230;      

int farDist = 1400;
int medDist = 400;  

// COUNTERS
int holdValuesCounter;    //counts how many times the entire loop (all four sensors have been read) has been done
int holdValuesTill;      //holds the counter value which decides when to change motor speed and servo position (look elsewhere)

int latentTimeCounter;    //counts how many seconods of no movement
int latentTimeLimit;      //determines how many seconds of no activity until &quot;sleep&quot; behavior occurs

int count = 1;

// -----------------------------------

void setup() {
  // SERVO STUFF
    pinMode(servoPin, OUTPUT);  // Set servo pin as an output pin
  pulse = minPulse;           // Set the motor position value to the minimum

  // set  the transistor pin as output:
  pinMode(transistorPin, OUTPUT);
  pinMode(ledPin, OUTPUT);            // Sets the digital pin as output
    Serial.begin(9600);  

}

void servoPulse(int servoPin, int myAngle){
  pulseWidth = (myAngle*11) + 500;
  digitalWrite(servoPin, HIGH);
  delayMicroseconds(pulseWidth);
  digitalWrite(servoPin, LOW);
  delay(20);
}

void loop() {

  timecount = 0;
  timecountRight = 0;
  val = 0;
  valRight = 0;
  ultrasoundValue = 0;
  ultrasoundValueRight = 0;

  //IR stuff
  pinMode(ultraSoundSignalLeft, OUTPUT); // Switch signalpin to output
  pinMode(ultraSoundSignalRight, OUTPUT); // Switch signalpin to output

  //test every 1000th millisecond
//  ENTER if (milliSecCounter

 if (milliSecCounter == 0 || milliSecCounter == timesThruLoop*holdDuration){
    timesThruLoop++;   ///count how many times did we go through loop?
    Serial.println(&quot;inloop&quot;);
  //if true, read for new angle
    valA =   readIR(ultraSoundSignalLeft, val, ultrasoundValue, timecount);
    valB = readIR(ultraSoundSignalRight, valRight, ultrasoundValueRight, timecountRight);
    newestAngle = getAngleSimple( valA, valB );
    newestDistance = getSmallestDistance(valA, valB);
   // Serial.println(&quot;newestAngle&quot;);
    Serial.println(newestAngle);
    sendMotor(alphaMotorPin, newestDistance);
  }

  //else save last angle and let testServoAngle pulse to the next one
 testServoAngle(newestAngle);
  milliSecCounter = milliSecCounter + 1;
} 

//-----INDIVIDUAL FUNCTIONS-------------------
// DC MOTOR
void testMotor(){

  // read the potentiometer, convert it to 0 - 255:

  potValue = analogRead(potPin) / 4;
  Serial.println(&quot;POTVALUE&quot;);
  Serial.println(potValue);
  // use that to control the transistor:
  analogWrite(9, potValue);
}

// SERVO FUNCTIONS
void moveServo(int angle){

    // SERVO STUFF
  //the servo is initialized at the center, record this position, and then move between the two throughout the program

  //analogValue = analogRead(analogPin);      // read the analog input
  //pulse = (angle * 19) / 10 + minPulse;    // convert the analog value
                                            // to a range between minPulse
                                            // and maxPulse.
  pulse = (angle*2000 ) / 180 + pulseRange;
  Serial.println(&quot;ANGLE&quot;);
  Serial.println(pulse);

  // pulse the servo again if rhe refresh time (20 ms) have passed:
  if (millis() - lastPulse &gt;= 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
  }
}

void testServo(){

    // SERVO STUFF
  //the servo is initialized at the center, record this position, and then move between the two throughout the program

  //analogValue = 1023;
  analogValue = analogRead(analogPin);      // read the analog input
  pulse = (analogValue * 19) / 10 + minPulse;    // convert the analog value
                                            // to a range between minPulse
                                            // and maxPulse.
  Serial.println(&quot;ANGLE&quot;);
  Serial.println(pulse);
  Serial.println(analogValue);
 Serial.println(&quot;count&quot;);
Serial.println(count);

  // pulse the servo again if rhe refresh time (20 ms) have passed:
  if (millis() - lastPulse &gt;= 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
  }

}
void testServoAngle (int angle){

    // SERVO STUFF
  //the servo is initialized at the center, record this position, and then move between the two throughout the program

  //analogValue = 1023;
// pulse = analogVal;
 // analogValue = analogVal;      // read the analog input 0 - 1023

  //convert degrees to analogVal inputs (0-1023)
 //pulse = (bucketAngle(analogVal)* 19) / 10 + minPulse;

 // pulse = (analogValue * 19) / 10 + minPulse;    // convert the analog value
                                            // to a range between minPulse
                                            // and maxPulse. 

  ///1. CONVERT ANGLE TO ANALOG 0-1023
  pulse = (angle*11) + 500;
  //2. CONVERT ANALOG TO PULSE
  Serial.println(&quot;Angle is&quot;);
  Serial.println(angle);
  Serial.println(&quot;PULSE&quot;);
  Serial.println(pulse);

  // pulse the servo again if rhe refresh time (20 ms) have passed:
  while (millis() - lastPulse &gt;= 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
  }

}

// IR FUNCTIONS
int readIR(int pinIR, int value, int soundValue, int time){

       // Send low-high-low pulse to activate the trigger pulse of the sensor
      // -------------------------------------------------------------------

      digitalWrite(pinIR, LOW); // Send low pulse
      delayMicroseconds(2); // Wait for 2 microseconds
      digitalWrite(pinIR, HIGH); // Send high pulse
      delayMicroseconds(5); // Wait for 5 microseconds
      digitalWrite(pinIR, LOW); // Holdoff

      // Listening for echo pulse
      // -------------------------------------------------------------------

      pinMode(pinIR, INPUT); // Switch signalpin to input
      value = digitalRead(pinIR); // Append signal value to val
      while(value == LOW) { // Loop until pin reads a high value
      value = digitalRead(pinIR);

      }

      while(value == HIGH) { // Loop until pin reads a high value
      value = digitalRead(pinIR);
       time = time +1;            // Count echo pulse time

      }
      // Writing out values to the serial port
      // -------------------------------------------------------------------
      //
      if (time &gt; maxDistance){ time = maxDistance;} //cap max distance if readings too much
      soundValue = time; // Append echo pulse time to ultrasoundValue
    //

      if(time &gt; 0){
      digitalWrite(ledPin, HIGH);
      }

      // Delay of program

      delay(200);

      return soundValue; // is distance
      }

int getAngleSimple(int left, int right){ // funciton outputs degrees
//calc distance, put in a range, then figure angle.

  if (abs(left - right) &lt; 5) //qualify a difference between left and right then,calc distance
   {
   Serial.println(&quot;equal distances&quot;);
   newAngle = 90;
   }

 if (left &gt; right){
   absDistance = left - right;
   newAngle = 57.3*atan2(absDistance,sensorDistance);
   }
 if  (left &lt; right){
   absDistance = right - left;
   newAngle = 90 + (57.3*atan2(absDistance,sensorDistance));
   }
 //  Serial.println (&quot;Angle&quot;);
   return newAngle;
  // moveServo(newAngle);
  // newAngle = 0;

 }

void calcAngle(){ // funciton outputs degrees
//calc distance, put in a range, then figure angle.
 if (abs(disLeft-disRight) &lt; 5) //qualify a difference between left and right then,calc distance
   {
   Serial.println(&quot;equal distances&quot;);
   newAngle = 90;
   }

 if (disLeft &gt; disRight){
  Serial.println(&quot;left greater&quot;);
   //calcMotor(disRight); //send shortest distance to determine motor RPMs
   absDistance = disLeft - disRight;
   ////newAngle = 180;
   //newAngle = 180 - (57.3*atan2(absDistance,sensorDistance));
   newAngle = 57.3*atan2(absDistance,sensorDistance);
   //newAngle = 57*atan2(calcAbsDist(disLeft,disRight),sensorDistance);
   }
 if  (disLeft &lt; disRight){
   Serial.println(&quot;right greater&quot;);
   //calcMotor(disLeft); //send shortest distance to determine motor RPMs
   absDistance = disRight - disLeft;
   ////newAngle = 0;
   //newAngle = 270 - (57.3*atan2(absDistance,sensorDistance));
   newAngle = 90 + (57.3*atan2(absDistance,sensorDistance));
   //newAngle = 90 + 57*atan2(calcAbsDist(disRight,disLeft),sensorDistance);
   }
   Serial.println (&quot;Angle&quot;);
   Serial.println (newAngle);
  // moveServo(newAngle);
  // newAngle = 0;

 }

int calcClosest(int left, int right){
  if (left &gt; right){ return left;}
  else if (left &lt; right) {return right;}
  else  { return left; }

}

int calcAbsDist( int x, int y){
  absDistValue = x - y;
  return absDistValue;

}

void sendServo (int pinServo, int angle){

  //the servo is initialized at the center, record this position, and then move between the two throughout the program

  analogValue = analogRead(analogPin); //test to read from analog potentiometer
  //analogValue = bucketAngle(angle);     // read the analog input
  pulse = (analogValue * 19) / 10 + minPulse;    // convert the analog value
                                            // to a range between minPulse
                                            // and maxPulse. 

  Serial.println(&quot;ANGLE&quot;);
  Serial.println(analogValue);

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

}

int bucketAngle(int z){ //convert raw angle into generalized angle
  if (z &lt;= angleMostRight){ z = movetoMostRight;}
  if (z &gt; angleMostRight &amp;&amp; z &lt;= angleMoreRight){ z = movetoMoreRight;}
  if (z &gt; angleMoreRight &amp;&amp; z &lt;= angleSlightRight){ z = movetoSlightRight;}
  if (z &gt; angleSlightRight &amp;&amp; z&lt;= angleSlightLeft){ z = movetoCenter;}
  if (z &gt; angleSlightLeft &amp;&amp; z&lt;= angleMoreLeft){ z = movetoSlightLeft;}
  if (z &gt; angleMoreLeft &amp;&amp; z&lt;= angleMostLeft){ z = movetoMoreLeft;}
  if (z &gt; angleMostLeft){ z = movetoMostLeft;} 

  z = z*movetoUnits; //z*128 = analog input to servo

 return z;
}

void sendMotor (int pinMotor, int distance){
  Serial.println(&quot;in send motor&quot;);
  if (distance &gt; farDist){ potValue = speedHigh;}
  if (distance &gt; medDist &amp;&amp; distance &lt;= farDist){ potValue = speedMed;}
  if (distance &lt; medDist){ potValue = speedLow;}
  analogWrite(pinMotor, potValue);
}

int getSmallestDistance (int a, int b){
 if (a &gt; b) {return a;}
 if (a &lt; b) { return b;}
 if ( a == b){return a;}
}</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/507/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/507/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/507/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=507&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/final-project-pinwheels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a37c400908b73451370bdaaa4711d3ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jilore</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2242/2118215791_cfd8b71e12.jpg?v=0" medium="image" />
	</item>
		<item>
		<title>Lampie</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/lampie/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/lampie/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 20:25:49 +0000</pubDate>
		<dc:creator>Jamin Hegeman</dc:creator>
				<category><![CDATA[Final Project]]></category>
		<category><![CDATA[Jamin Hegeman]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/lampie/</guid>
		<description><![CDATA[The abstract, materials, video, process, and photos can be found on my blog.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=506&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The abstract, materials, video, process, and photos can be found <a href="http://jamin.org/archives/2007/lampie-rfid-and-sensor-lamp/">on my blog</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/506/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/506/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/506/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=506&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/lampie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/09d8cc45daa0419aa58b95992e7478a1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jamin</media:title>
		</media:content>
	</item>
		<item>
		<title>Motor Fan</title>
		<link>http://makingfurnitureinteractive.wordpress.com/2007/12/17/motor-fan/</link>
		<comments>http://makingfurnitureinteractive.wordpress.com/2007/12/17/motor-fan/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 20:18:13 +0000</pubDate>
		<dc:creator>Jamin Hegeman</dc:creator>
				<category><![CDATA[Exercise 6: Motorized Mechanical Movement]]></category>
		<category><![CDATA[Jamin Hegeman]]></category>

		<guid isPermaLink="false">http://makingfurnitureinteractive.wordpress.com/2007/12/17/motor-fan/</guid>
		<description><![CDATA[For this exercise I used a light sensor to control a DC motor, which rotated a circular paper with some dots on it. You also had to hold down a button to ensure the motor wouldn&#8217;t start running on its own in response to environmental light changes.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=505&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For this exercise I used a light sensor to control a DC motor, which rotated a circular paper with some dots on it. You also had to hold down a button to ensure the motor wouldn&#8217;t start running on its own in response to environmental light changes.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/6HAnntfDgN8?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/makingfurnitureinteractive.wordpress.com/505/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/makingfurnitureinteractive.wordpress.com/505/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/makingfurnitureinteractive.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/makingfurnitureinteractive.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/makingfurnitureinteractive.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/makingfurnitureinteractive.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/makingfurnitureinteractive.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/makingfurnitureinteractive.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/makingfurnitureinteractive.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/makingfurnitureinteractive.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/makingfurnitureinteractive.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/makingfurnitureinteractive.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/makingfurnitureinteractive.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/makingfurnitureinteractive.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/makingfurnitureinteractive.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/makingfurnitureinteractive.wordpress.com/505/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=makingfurnitureinteractive.wordpress.com&amp;blog=1590332&amp;post=505&amp;subd=makingfurnitureinteractive&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://makingfurnitureinteractive.wordpress.com/2007/12/17/motor-fan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/09d8cc45daa0419aa58b95992e7478a1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jamin</media:title>
		</media:content>
	</item>
	</channel>
</rss>
