<?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/"
	>

<channel>
	<title>How I Stopped Worrying and Learned to Love the Blog &#187; physical computing</title>
	<atom:link href="http://www.ckundo.com/category/phys-comp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ckundo.com</link>
	<description>Cameron Cundiff @ NYU ITP and beyond</description>
	<lastBuildDate>Wed, 01 Sep 2010 20:41:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>API for the World</title>
		<link>http://www.ckundo.com/2010/05/api-for-the-world/</link>
		<comments>http://www.ckundo.com/2010/05/api-for-the-world/#comments</comments>
		<pubDate>Wed, 26 May 2010 17:38:24 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.ckundo.com/?p=596</guid>
		<description><![CDATA[This past Saturday and Sunday a team of ITP students (including myself) created and presented API for the World at the TechCrunch Disrupt Hack Day. Here&#8217;s the rundown: API for the World is a sensor and web application that turns anything with a power cord into a networked object. At the flip of a switch [...]]]></description>
			<content:encoded><![CDATA[<p>This past Saturday and Sunday a team of <a href="http://itp.nyu.edu" target="_blank">ITP</a> students (including myself) created and presented <a title="API for the World" href="http://a4w.heroku.com" target="_blank">API for the World</a> at the <a href="http://www.youtube.com/watch?v=J-PTIYaQigc&amp;feature=player_embedded" target="_blank">TechCrunch Disrupt Hack Day</a>. Here&#8217;s the rundown:</p>
<blockquote><p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11964814&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11964814&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>API for the World is a sensor and web application that turns anything with a power cord into a networked object. At the flip of a switch you can send a message to twitter, facebook, foursquare, or any other service you define. We did this to fill the gap between old technology and the &#8220;smart&#8221; devices we see today.</p>
<p>Imagine if your grandmother could use her bedside lamp to communicate with loved ones. When she goes to bed, she flip off her bedside lamp and we get a message to twitter, and can be rest-assured that she&#8217;s alright.</p>
<p>We&#8217;ve included the ability to define new devices, behaviors, and message through an online dashboard. You can also add new servi<br />
ces with which the application can communicate.</p>
<p>The application uses a current sensor (to tell if the device is drawing power) to send a wireless message to the application, which then pushes a message according to the scenario you&#8217;ve defined. For you geeks out there, the sensor measure induction and sends a POST request to a Rails app via an XBee module. The web app then uses the Twitter API to post a message.</p>
<p>We can imagine this app going in a bunch of different directions. You could use it to check into Foursquare or update facebook that you had toast for breakfast. In the scenario with grandma&#8217;s lamp, perhaps the lamp could order itself lightbulbs according to when the lightbulb is projected to fail.</p></blockquote>
<p>We&#8217;re working on <a href="http://itp.nyu.edu/~sz590/blog/2010/05/23/api-for-the-world/" target="_blank">sensor documentation</a> of the project and an instructable, as well as open sourcing the code. Thanks to TechCrunch and the ITP team for an awesome hack day.</p>
<p>The Team:</p>
<ul>
<li><a href="http://www.teknevision.com/">Karla Calderon</a></li>
<li><a href="http://www.ckundo.com">Cameron Cundiff</a></li>
<li>Michael Zick Doherty</li>
<li><a href="http://www.imagima.com/">Chika Iijima</a></li>
<li><a href="http://www.runemadsen.com">Rune Madsen</a></li>
<li><a href="http://www.yuditskaya.com">Sofy Yuditskaya</a></li>
<li><a href="http://itp.nyu.edu/~sz590/blog/2010/05/23/api-for-the-world/">Shahar Zaks</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2010/05/api-for-the-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DodgeBot</title>
		<link>http://www.ckundo.com/2008/12/dodgebot/</link>
		<comments>http://www.ckundo.com/2008/12/dodgebot/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 00:32:49 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[face tracking]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[toys]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=221</guid>
		<description><![CDATA[Dodgebot is a facetracking nerf cannon on a mobile platform. It began as a toy, and somehow crept into the realm of weaponry&#8230;observe:]]></description>
			<content:encoded><![CDATA[<p>Dodgebot is a facetracking nerf cannon on a mobile platform. It began as a toy, and somehow crept into the realm of weaponry&#8230;observe:</p>
<p>
<script type="text/javascript">
<!--
var ourTags='';
ourTags+='<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="400" HEIGHT="390" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
ourTags+='<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/dodgebotWeb.mov" />';
ourTags+='<PARAM name="CONTROLLER" VALUE="true" />';
ourTags+='<PARAM name="AUTOPLAY" VALUE="false" />';
ourTags+='<PARAM name="SCALE" VALUE="ASPECT" />';
ourTags+='<EMBED ';
ourTags+='SRC="http://www.cameroncundiff.com/media/dodgebotWeb.mov" CONTROLLER="true"';
ourTags+=' type="video/quicktime" WIDTH="400" HEIGHT="390" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>';
ourTags+='</OBJECT>';
if (typeof writeTags == "undefined") { document.write(ourTags);} else {writeTags(ourTags);
}//-->
</script>
<noscript>
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="400" HEIGHT="390" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/dodgebotWeb.mov" />
<PARAM name="CONTROLLER" VALUE="true" />
<PARAM name="AUTOPLAY" VALUE="false" />
<PARAM name="SCALE" VALUE="ASPECT" />
<EMBED 
SRC="http://www.cameroncundiff.com/media/dodgebotWeb.mov" CONTROLLER="true"
 type="video/quicktime" WIDTH="400" HEIGHT="390" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>
</OBJECT>

</noscript>
</p>
<p><span id="more-221"></span></p>
<p><a href="http://www.cameroncundiff.com/wp-content/uploads/2008/12/sany0007.jpg"><img class="alignnone size-full wp-image-301" title="sany0007" src="http://www.cameroncundiff.com/wp-content/uploads/2008/12/sany0007.jpg" alt="sany0007" width="410" height="307" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/12/dodgebot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.cameroncundiff.com/media/dodgebot.mov" length="218467100" type="video/quicktime" />
<enclosure url="http://www.cameroncundiff.com/media/dodgebotWeb.mov" length="65383630" type="video/quicktime" />
<enclosure url="http://www.cameroncundiff.com/media/dodgebot01.mov" length="5185487" type="video/quicktime" />
		</item>
		<item>
		<title>How Much Water Do You Use?</title>
		<link>http://www.ckundo.com/2008/12/how-much-water/</link>
		<comments>http://www.ckundo.com/2008/12/how-much-water/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 02:10:55 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=205</guid>
		<description><![CDATA[On Wednesday and Thursday the installation received a good deal of user interaction at the ITP Winter Show. The project worked in a practical sense, both the software and the hardware. It was also successful in provoking awareness. Most people were surprised at their consumption, sometimes to the point of skepticism. I assured them that [...]]]></description>
			<content:encoded><![CDATA[<p>On Wednesday and Thursday the installation received a good deal of user interaction at the <a href="http://blog.makezine.com/archive/2008/12/itp_winter_show_2008_best_of_show_p.html">ITP Winter Show</a>. The project worked in a practical sense, both the software and the hardware. It was also successful in provoking awareness. Most people were surprised at their consumption, sometimes to the point of skepticism. I assured them that while the flow rates are mapped on the high end of rates for older hardware, it was an accurate portrayal.</p>
<p>Some people questioned the value of the exercise in changing habits. I argued that awareness influences people&#8217;s decisions over time. I don&#8217;t expect people to take shorter showers after using the project, but perhaps the next toilet they buy will be low-flow.</p>
<p>The project has gotten some visibility online. <a href="http://www.swyyne.com/2008/12/19/interactive-telecommunications-goes-green/">Swyyne</a> humorously points out the contradiction between the project&#8217;s message and my bottled water, since it has negative <a title="bottled water" href="http://www.ucsusa.org/publications/greentips/is-bottled-water-better.html" target="_blank">environmental impacts</a>.</p>
<p>Swynne also cites my mention of the possibility of home implementation. The project as it stands is more suited for a public display/kiosk setting, but home hardware is an extension of the idea that is feasible. An area for future exploration.</p>
<p>Thanks to my <a href="http://itp.nyu.edu/~nn435/wordpress/">Nobu Nakaguchi</a>, my partner on the project, and <a href="http://robertcarlsen.net/">Robert Carlsen</a> for his assistance.</p>
<p>
<script type="text/javascript">
<!--
var ourTags='';
ourTags+='<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="480" HEIGHT="480" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
ourTags+='<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/waterWeb.mov" />';
ourTags+='<PARAM name="CONTROLLER" VALUE="true" />';
ourTags+='<PARAM name="AUTOPLAY" VALUE="false" />';
ourTags+='<PARAM name="SCALE" VALUE="ASPECT" />';
ourTags+='<EMBED ';
ourTags+='SRC="http://www.cameroncundiff.com/media/waterWeb.mov" CONTROLLER="true"';
ourTags+=' type="video/quicktime" WIDTH="480" HEIGHT="480" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>';
ourTags+='</OBJECT>';
if (typeof writeTags == "undefined") { document.write(ourTags);} else {writeTags(ourTags);
}//-->
</script>
<noscript>
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="480" HEIGHT="480" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/waterWeb.mov" />
<PARAM name="CONTROLLER" VALUE="true" />
<PARAM name="AUTOPLAY" VALUE="false" />
<PARAM name="SCALE" VALUE="ASPECT" />
<EMBED 
SRC="http://www.cameroncundiff.com/media/waterWeb.mov" CONTROLLER="true"
 type="video/quicktime" WIDTH="480" HEIGHT="480" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>
</OBJECT>

</noscript>
</p>
<p><span id="more-205"></span></p>
<p><strong>Description</strong><br />
A project that measures a person&#8217;s interaction with a simulated daily home water use scenario to recommend ways to reduce water waste.</p>
<p><strong>References</strong></p>
<p>US Geological Survey <a href="http://ga.water.usgs.gov/edu/qahome.html#HDR3">Daily use estimates</a></p>
<p><a href="http://www.lowimpactliving.com/pages/your-impacts/water2">Low Impact Living</a></p>
<p><strong>Code Sample</strong></p>
<p>class Meter extends Display {</p>
<p>//float level;<br />
float drained;<br />
float drainedLerp;<br />
float maxDrained;<br />
float initDrained;<br />
float h;<br />
float w;<br />
float xloc;<br />
float yloc;<br />
float amount;<br />
float time;<br />
float lastDrained;</p>
<p>Meter() {<br />
//default level<br />
//level = 100;<br />
//initDrained = 20;<br />
drained = 0;<br />
drainedLerp = 0;<br />
maxDrained = 130;<br />
h = 260;<br />
w = 150;<br />
xloc = 60;<br />
yloc = 100;<br />
amount = 0;<br />
time = 0;<br />
}</p>
<p>void update(float _amt) {<br />
amount = _amt;<br />
drained += amount;<br />
lastDrained = drained;<br />
if(lastDrained &gt; gallonsUsed) {<br />
gallonsUsed = lastDrained;<br />
}<br />
}</p>
<p>void update(float rate, Timer inputTimer) {<br />
time = inputTimer.secondsMapped;<br />
drained = ((rate/60) * time);<br />
lastDrained = drained;<br />
if(lastDrained &gt; gallonsUsed) {<br />
gallonsUsed = lastDrained;<br />
}<br />
}</p>
<p>void drawMeter() {<br />
shape(waterTower, xloc, yloc);<br />
//    gallonsLeft.setText(Integer.toString(int(150 &#8211; gallonsUsed)));<br />
//    gallonsLeft.setPosition(xloc, yloc);<br />
//    gallonsLeft.setFont(h3, h3Size, LEFT);<br />
//    gallonsLeft.show();<br />
//    gallonsLeft.display();<br />
}</p>
<p>void drawLevel() {<br />
fill(159, 201, 235);<br />
rect(xloc, yloc, w, h);<br />
fill(255);<br />
if(drainedLerp &lt;  100){<br />
rect(xloc, yloc + 80, w, 5 + drainedLerp);<br />
}<br />
else {<br />
rect(xloc, yloc + 80, w, 100);<br />
}<br />
//interpolate draining<br />
drainedLerp = lerp(drainedLerp, gallonsUsed, 0.05);<br />
}</p>
<p>void display() {<br />
//draw meter<br />
drawLevel();<br />
drawMeter();<br />
}</p>
<p>float getDrainedValue() {<br />
return gallonsUsed;<br />
}</p>
<p>void reset() {<br />
drained = 0;<br />
lastDrained = 0;<br />
gallonsUsed = 0;<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/12/how-much-water/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.cameroncundiff.com/media/water.mov" length="7443881" type="video/quicktime" />
<enclosure url="http://www.cameroncundiff.com/media/waterWeb.mov" length="3682078" type="video/quicktime" />
		</item>
		<item>
		<title>Water Tally BETA</title>
		<link>http://www.ckundo.com/2008/11/water-tally/</link>
		<comments>http://www.ckundo.com/2008/11/water-tally/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 15:34:29 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[physical computing]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=186</guid>
		<description><![CDATA[PREVIOUS VERSIONS Demonstration Details A series of physical inputs that correspond to different household water hardware to visualize associated rates of consumption. For example, a toilet flush can consume up to 7 gallons of water. We will show this through a toilet lever attached to a switch that will increment values in a Processing sketch, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>PREVIOUS VERSIONS</strong></p>
<p><strong>Demonstration</strong><br />

<script type="text/javascript">
<!--
var ourTags='';
ourTags+='<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
ourTags+='<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/water.mov" />';
ourTags+='<PARAM name="CONTROLLER" VALUE="true" />';
ourTags+='<PARAM name="AUTOPLAY" VALUE="false" />';
ourTags+='<PARAM name="SCALE" VALUE="ASPECT" />';
ourTags+='<EMBED ';
ourTags+='SRC="http://www.cameroncundiff.com/media/water.mov" CONTROLLER="true"';
ourTags+=' type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>';
ourTags+='</OBJECT>';
if (typeof writeTags == "undefined") { document.write(ourTags);} else {writeTags(ourTags);
}//-->
</script>
<noscript>
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/water.mov" />
<PARAM name="CONTROLLER" VALUE="true" />
<PARAM name="AUTOPLAY" VALUE="false" />
<PARAM name="SCALE" VALUE="ASPECT" />
<EMBED 
SRC="http://www.cameroncundiff.com/media/water.mov" CONTROLLER="true"
 type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>
</OBJECT>

</noscript>
</p>
<p><strong>Details</strong><br />
A series of physical inputs that correspond to different household water hardware to visualize associated rates of consumption. For example, a toilet flush can consume up to 7 gallons of water. We will show this through a toilet lever attached to a switch that will increment values in a Processing sketch, that in turn will be represented visually.</p>
<p>Recommendations are based on a comparison between water use in the simulation and data on average daily domestic water use. We will offer ways to mitigate excess use based on industry research, and give an option to send the results via email.</p>
<p><strong>Team Members</strong><br />
Nobu Nakaguchi<br />
Cameron Cundiff</p>
<p><strong>Classes</strong><br />
ICM<br />
Physical Computing</p>
<p><strong>Equipment</strong><br />
42&#8243; flat screen display (Processing Visualization)<br />
Mac Mini with Keyboard/Mouse (processing platform)<br />
Computer speakers (audio feedback)<br />
Network connection (email sending)</p>
<p><strong>Space Requirements</strong><br />
4&#8242; x 4&#8242; footprint, 6&#8242; tall with display</p>
<p><span id="more-186"></span></p>
<p><a href="http://www.cameroncundiff.com/wp-content/uploads/2008/12/water.png"><img class="alignnone size-full wp-image-210" title="water" src="http://www.cameroncundiff.com/wp-content/uploads/2008/12/water.png" alt="" width="500" height="332" /></a></p>
<p><strong>BETA</strong></p>
<p>A water tally that takes in mouse x position as a value for number of jugs. This is a visualization work in progress that will be attached to physical inputs through arduino.<br />
Slowly move your mouse across the stage to tally up the gallons.<br />
<object id="Counter" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="data" value="/water/Counter.swf" /><param name="align" value="middle" /><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#cccccc" /><param name="src" value="/water/Counter.swf" /><param name="allowfullscreen" value="false" /><embed id="Counter" type="application/x-shockwave-flash" width="400" height="300" src="/water/Counter.swf" bgcolor="#cccccc" quality="high" allowfullscreen="false" allowscriptaccess="sameDomain" align="middle" data="/water/Counter.swf"></embed></object></p>
<p><!--more--></p>
<p>//How much water do you use? Code by Cameron Cundiff and Nobu Nakaguchi</p>
<p>import controlP5.*;<br />
import processing.serial.*;</p>
<p>class Jug {<br />
PShape s;<br />
float x,y,w,h;</p>
<p>Jug(PShape s_, float x_, float y_) {<br />
s = s_;<br />
x = x_;<br />
y = y_;<br />
w = 15;<br />
h = 20;<br />
}</p>
<p>void display() {<br />
shape(s, x, y, w,h);</p>
<p>}<br />
}<br />
Serial myPort;</p>
<p>ControlP5 controlP5;<br />
int myColorBackground = color(112,112,112); //gray<br />
String textValue = &#8220;&#8221;;<br />
Textfield myTextfield;<br />
String tempSearchValue;</p>
<p>Jug jug;<br />
int gallons;<br />
float tallyX;<br />
float tallyY;<br />
PShape icon;<br />
ArrayList tally;</p>
<p>PShape pipe;<br />
PShape shower;<br />
PShape washer;<br />
PShape dish;<br />
PShape faucet;<br />
PShape toilet;</p>
<p>void setup() {<br />
size(600,400);</p>
<p>tally = new ArrayList();<br />
icon = loadShape(&#8220;jug.svg&#8221;);<br />
washer = loadShape(&#8220;washer.svg&#8221;);<br />
toilet = loadShape(&#8220;toilet.svg&#8221;);<br />
faucet = loadShape(&#8220;faucet.svg&#8221;);<br />
dish = loadShape(&#8220;dish.svg&#8221;);<br />
pipe = loadShape(&#8220;pipe.svg&#8221;);<br />
shower = loadShape(&#8220;shower.svg&#8221;);<br />
gallons = 0;<br />
tallyX = 86;<br />
tallyY = 10;</p>
<p>myPort = new Serial(this, Serial.list()[0], 9600);<br />
myPort.bufferUntil(&#8216;\n&#8217;);</p>
<p>}</p>
<p>void draw() {<br />
background(50);<br />
smooth();<br />
shape(icon, 8, 10);<br />
shape(washer, 10, height &#8211; washer.height &#8211; 10);<br />
shape(dish, 90, height &#8211; washer.height &#8211; 10);<br />
shape(shower, 170, height &#8211; washer.height &#8211; 10);<br />
shape(pipe, 250, height &#8211; washer.height &#8211; 10);<br />
shape(faucet, 330, height &#8211; washer.height &#8211; 10);<br />
shape(toilet, 410, height &#8211; washer.height &#8211; 10);</p>
<p>for(int i = tally.size()-1; i &gt;= 0; i&#8211;) {<br />
jug = (Jug) tally.get(i);<br />
jug.display();<br />
}</p>
<p>}</p>
<p>void serialEvent(Serial myPort) {<br />
// read the serial buffer:<br />
String myVal = myPort.readStringUntil(&#8216;\n&#8217;);<br />
float val = float(myVal);<br />
int mappedVal = int(map(val, (float) 0, (float) 1023, (float) 0, (float) 5));<br />
println(mappedVal);<br />
if(mappedVal &lt;= 1) {}</p>
<p>else {<br />
tally.add(new Jug(icon, tallyX, tallyY));<br />
if(tallyX &lt; (width &#8211; icon.width)) {<br />
tallyX += 18;<br />
}</p>
<p>else {<br />
tallyX = 86;<br />
tallyY += 25;<br />
}<br />
}<br />
}</p>
<p>void keyPressed() {<br />
if(key == ENTER) {<br />
for(int i = tally.size()-1; i &gt;= 0; i&#8211;) {<br />
tally.remove(i);<br />
}</p>
<p>myPort.clear();<br />
myPort.stop();</p>
<p>controlP5 = new ControlP5(this);<br />
myTextfield = controlP5.addTextfield(&#8220;enter a word or phrase&#8221;,100,100,200,20);<br />
myTextfield.setFocus(true);<br />
}<br />
}</p>
<p>void controlEvent(ControlEvent theEvent) {</p>
<p>tempSearchValue = myTextfield.getText();<br />
println(tempSearchValue);<br />
String[] lines = loadStrings(&#8220;http://nn27.com/mailform.php?email=&#8221; + tempSearchValue + &#8220;&#8221;);</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/11/water-tally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.cameroncundiff.com/media/water.mov" length="7443881" type="video/quicktime" />
		</item>
		<item>
		<title>Amps n&#8217; volts &#8211; measuring resistance</title>
		<link>http://www.ckundo.com/2008/09/amps-n-volts/</link>
		<comments>http://www.ckundo.com/2008/09/amps-n-volts/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 17:20:36 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[electricity]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/2008/09/amps-n-volts/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cameroncundiff.com/wp-content/uploads/2008/09/l-640-480-04804078-221b-499d-a45b-ae12e5364223.jpeg"><img class="alignnone size-full wp-image-364" src="http://www.cameroncundiff.com/wp-content/uploads/2008/09/l-640-480-04804078-221b-499d-a45b-ae12e5364223.jpeg" alt="" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/09/amps-n-volts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tech-retard, it&#8217;s not your fault</title>
		<link>http://www.ckundo.com/2008/09/observation-of-technology/</link>
		<comments>http://www.ckundo.com/2008/09/observation-of-technology/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 15:21:57 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=72</guid>
		<description><![CDATA[For Physical Computing, Hyejin and I went to Kinko&#8217;s to observe people using technology. Our focus quickly turned to the Sony picture printing kiosk. The interactions people had with the machine were varied. One person using the kiosk seemed to be experienced at it. The efficacy with which she accomplished her task was impressive. Another, [...]]]></description>
			<content:encoded><![CDATA[<p>For Physical Computing, Hyejin and I went to Kinko&#8217;s to observe people using technology. Our focus quickly turned to the Sony picture printing kiosk. The interactions people had with the machine were varied. One person using the kiosk seemed to be experienced at it. The efficacy with which she accomplished her task was impressive. Another, more interesting case was a man who was having a lot of difficulty. After failing to get one kiosk, he eventually moved to another where he began slowly progressing through the interface. After about ten minutes, I approached him. He was still in the process of selecting photos to print. I asked him about his experience with the machine, and he responded &#8220;I am retarded with these kinds of things&#8221; speaking presumably about technology in general. This was a curious response, since the first machine he had used was in fact dysfunctional. So it wasn&#8217;t a problem with the user, but rather with the tool. Nonetheless he blamed himself.</p>
<p>I think this is a common response to failure with technology. We assume that the technology is effective despite our experience. In this case, a more intuitive response might be dissatisfaction or frustration, from my perspective.</p>
<p>There is a alternative design solution that may have alleviated the man&#8217;s difficulties with memory cards. Instead of trying to accommodate as many card types as possible and cluttering the terminal, the designers could have created a single mini usb connector, a connection that is ubiquitous in digital cameras.</p>
<p><span id="more-72"></span><br />
<img class="alignnone" title="Photo Printing Kiosk" src="http://www.cameroncundiff.com/media/kiosk-1.jpg" alt="" width="400" height="533" /></p>
<p><img class="alignnone" title="Photo Printing Kiosk Screen" src="http://www.cameroncundiff.com/media/kiosk-5.jpg" alt="" width="533" height="400" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/09/observation-of-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>love-o-meter stage 1</title>
		<link>http://www.ckundo.com/2008/09/love-o-meter-stage-1/</link>
		<comments>http://www.ckundo.com/2008/09/love-o-meter-stage-1/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 16:27:58 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[analog]]></category>
		<category><![CDATA[sensor]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=58</guid>
		<description><![CDATA[Senses proximity and indicates the programmed comfort zone or &#8220;personal space&#8221; of the sensor through a series of LEDs. /* Ultrasound Sensor * Reads values (00014-01199) from an ultrasound sensor (3m sensor) * and writes the values to the serialport. * http://www.xlab.se &#124; http://www.0j0.org * copyleft 2005 Mackie for XLAB &#124; DojoDave for DojoCorp */ [...]]]></description>
			<content:encoded><![CDATA[<p>
<script type="text/javascript">
<!--
var ourTags='';
ourTags+='<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
ourTags+='<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/proximity.mov" />';
ourTags+='<PARAM name="CONTROLLER" VALUE="true" />';
ourTags+='<PARAM name="AUTOPLAY" VALUE="false" />';
ourTags+='<PARAM name="SCALE" VALUE="ASPECT" />';
ourTags+='<EMBED ';
ourTags+='SRC="http://www.cameroncundiff.com/media/proximity.mov" CONTROLLER="true"';
ourTags+=' type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>';
ourTags+='</OBJECT>';
if (typeof writeTags == "undefined") { document.write(ourTags);} else {writeTags(ourTags);
}//-->
</script>
<noscript>
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/proximity.mov" />
<PARAM name="CONTROLLER" VALUE="true" />
<PARAM name="AUTOPLAY" VALUE="false" />
<PARAM name="SCALE" VALUE="ASPECT" />
<EMBED 
SRC="http://www.cameroncundiff.com/media/proximity.mov" CONTROLLER="true"
 type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>
</OBJECT>

</noscript>
</p>
<p>Senses proximity and indicates the programmed comfort zone or &#8220;personal space&#8221; of the sensor through a series of LEDs.<br />
<span id="more-58"></span></p>
<p>/* Ultrasound Sensor<br />
* Reads values (00014-01199) from an ultrasound sensor (3m sensor)<br />
* and writes the values to the serialport.<br />
* http://www.xlab.se | http://www.0j0.org<br />
* copyleft 2005 Mackie for XLAB | DojoDave for DojoCorp<br />
*/</p>
<p>int ultraSoundSignal = 7; // Ultrasound signal pin<br />
int val = 0;<br />
int ultrasoundValue = 0;<br />
int timecount = 0; // Echo counter<br />
int ledPin01 = 13; // LED connected to digital pin 13<br />
int ledPin02 = 10;<br />
int ledPin03 = 9;<br />
int ledPin04 = 8;<br />
int ledPin05 = 6;<br />
int ledPin06 = 5;<br />
int ledPin07 = 4;<br />
int ledPin08 = 3;<br />
int ledPin09 = 2;</p>
<p>void setup() {<br />
beginSerial(9600); // Sets the baud rate to 9600<br />
pinMode(ledPin01, OUTPUT); // Sets the digital pin as output<br />
pinMode(ledPin02, OUTPUT);<br />
pinMode(ledPin03, OUTPUT);<br />
pinMode(ledPin04, OUTPUT);<br />
pinMode(ledPin05, OUTPUT);<br />
pinMode(ledPin06, OUTPUT);<br />
pinMode(ledPin07, OUTPUT);<br />
pinMode(ledPin08, OUTPUT);<br />
pinMode(ledPin09, OUTPUT);<br />
}</p>
<p>void loop() {<br />
timecount = 0;<br />
val = 0;<br />
pinMode(ultraSoundSignal, OUTPUT); // Switch signalpin to output</p>
<p>/* Send low-high-low pulse to activate the trigger pulse of the sensor<br />
* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
*/<br />
digitalWrite(ultraSoundSignal, LOW); // Send low pulse<br />
delayMicroseconds(2); // Wait for 2 microseconds<br />
digitalWrite(ultraSoundSignal, HIGH); // Send high pulse<br />
delayMicroseconds(5); // Wait for 5 microseconds<br />
digitalWrite(ultraSoundSignal, LOW); // Holdoff</p>
<p>/* Listening for echo pulse<br />
* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
*/<br />
pinMode(ultraSoundSignal, INPUT); // Switch signalpin to input<br />
val = digitalRead(ultraSoundSignal); // Append signal value to val<br />
while(val == LOW) { // Loop until pin reads a high value<br />
val = digitalRead(ultraSoundSignal);<br />
}</p>
<p>while(val == HIGH) { // Loop until pin reads a low value<br />
val = digitalRead(ultraSoundSignal);<br />
timecount = timecount +1; // Count echo pulse time<br />
}</p>
<p>/* Writing out values to the serial port<br />
* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
*/<br />
ultrasoundValue = timecount; // Append echo pulse time to ultrasoundValue</p>
<p>serialWrite(&#8216;A&#8217;); // Example identifier for the sensor<br />
ultrasoundValue = map(ultrasoundValue, 100, 600, 0, 20);<br />
printInteger(ultrasoundValue);<br />
serialWrite(10);<br />
serialWrite(13);</p>
<p>// check proximity and indicate comfort level</p>
<p>if(ultrasoundValue &lt; 20 &amp;&amp; ultrasoundValue &gt;= 18) {<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, HIGH);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>else if(ultrasoundValue &lt; 18 &amp;&amp; ultrasoundValue &gt;= 15) {<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, HIGH);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>else if(ultrasoundValue &lt; 15 &amp;&amp; ultrasoundValue &gt;= 13) {<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, HIGH);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>else if(ultrasoundValue &lt; 13 &amp;&amp; ultrasoundValue &gt;= 10) {<br />
//if light dim go to white, then delay<br />
//if no pressure (kiss) then return to red<br />
//if pressure before white light, buzzer<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, HIGH);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>else if(ultrasoundValue &lt; 10 &amp;&amp; ultrasoundValue &gt;= <img src='http://www.ckundo.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> {<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, HIGH);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>else if(ultrasoundValue &lt; 8 &amp;&amp; ultrasoundValue &gt;= 6) {<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, HIGH);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>else if(ultrasoundValue &lt; 6 &amp;&amp; ultrasoundValue &gt;= 3) {<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, HIGH);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>else if(ultrasoundValue &lt; 3 &amp;&amp; ultrasoundValue &gt;= 0) {<br />
digitalWrite(ledPin01, LOW);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, HIGH);<br />
}</p>
<p>else<br />
{<br />
digitalWrite(ledPin01, HIGH);<br />
digitalWrite(ledPin02, LOW);<br />
digitalWrite(ledPin03, LOW);<br />
digitalWrite(ledPin04, LOW);<br />
digitalWrite(ledPin05, LOW);<br />
digitalWrite(ledPin06, LOW);<br />
digitalWrite(ledPin07, LOW);<br />
digitalWrite(ledPin08, LOW);<br />
digitalWrite(ledPin09, LOW);<br />
}</p>
<p>/* Light up LED if any value is passed by the echo pulse<br />
* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
*/<br />
/*if(timecount &gt; 0){<br />
digitalWrite(ledPin01, HIGH);<br />
}*/</p>
<p>/* Delay of program<br />
* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
*/<br />
delay(100);<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/09/love-o-meter-stage-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.cameroncundiff.com/media/proximity.mov" length="1348278" type="video/quicktime" />
		</item>
		<item>
		<title>Light switch combination lock</title>
		<link>http://www.ckundo.com/2008/09/light-switch-2/</link>
		<comments>http://www.ckundo.com/2008/09/light-switch-2/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 19:32:30 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[sensor]]></category>
		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=54</guid>
		<description><![CDATA[// declare variables: int switchPin01 = 7; //xlarge photocell int switchPin02 = 2; //large photocell int switchPin03 = 5; //small photocell int greenLedPin = 3; // digital output pin for an LED int redLedPin = 4; // digital output pin for an LED int switchState01 = 0; // the state of the xlarge switch int [...]]]></description>
			<content:encoded><![CDATA[<p>
<script type="text/javascript">
<!--
var ourTags='';
ourTags+='<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
ourTags+='<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/switchy.mov" />';
ourTags+='<PARAM name="CONTROLLER" VALUE="true" />';
ourTags+='<PARAM name="AUTOPLAY" VALUE="false" />';
ourTags+='<PARAM name="SCALE" VALUE="ASPECT" />';
ourTags+='<EMBED ';
ourTags+='SRC="http://www.cameroncundiff.com/media/switchy.mov" CONTROLLER="true"';
ourTags+=' type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>';
ourTags+='</OBJECT>';
if (typeof writeTags == "undefined") { document.write(ourTags);} else {writeTags(ourTags);
}//-->
</script>
<noscript>
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/switchy.mov" />
<PARAM name="CONTROLLER" VALUE="true" />
<PARAM name="AUTOPLAY" VALUE="false" />
<PARAM name="SCALE" VALUE="ASPECT" />
<EMBED 
SRC="http://www.cameroncundiff.com/media/switchy.mov" CONTROLLER="true"
 type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>
</OBJECT>

</noscript>
<br />
<span id="more-54"></span><br />
// declare variables:<br />
int switchPin01 = 7; //xlarge photocell<br />
int switchPin02 = 2; //large photocell<br />
int switchPin03 = 5; //small photocell<br />
int greenLedPin = 3;   //  digital output pin for an LED<br />
int redLedPin = 4;      //  digital output pin for an LED<br />
int switchState01 = 0;    // the state of the xlarge switch<br />
int switchState02 = 0;    // the state of the large switch<br />
int switchState03 = 0;    //small switch</p>
<p>void setup() {<br />
pinMode(switchPin01, INPUT);<br />
pinMode(switchPin02, INPUT);  // set the switch pin to be an input<br />
pinMode(switchPin03, INPUT);<br />
pinMode(greenLedPin, OUTPUT);   // set the yellow LED pin to be an output<br />
pinMode(redLedPin, OUTPUT);// set the red LED pin to be an output<br />
}</p>
<p>void loop() {<br />
// read the switch input:<br />
switchState01 = digitalRead(switchPin01);<br />
switchState02 = digitalRead(switchPin02);<br />
switchState03 = digitalRead(switchPin03);</p>
<p>//enough light = 1, dark = 0 &#8211; then green<br />
if (switchState01 == 1 &#038;&#038; switchState02 == 0 &#038;&#038; switchState03 == 1) {<br />
// if the switch is closed:<br />
digitalWrite(greenLedPin, HIGH);    // turn on the yellow LED<br />
digitalWrite(redLedPin, LOW);       // turn off the red LED<br />
}<br />
else {<br />
// if the switch is open:<br />
digitalWrite(greenLedPin, LOW);   // turn off the yellow LED<br />
digitalWrite(redLedPin, HIGH);     // turn on the red LED<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/09/light-switch-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.cameroncundiff.com/media/switchy.mov" length="1343359" type="video/quicktime" />
		</item>
		<item>
		<title>Light switch</title>
		<link>http://www.ckundo.com/2008/09/light-switch/</link>
		<comments>http://www.ckundo.com/2008/09/light-switch/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 01:37:04 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[sensor]]></category>
		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=36</guid>
		<description><![CDATA[// declare variables: int switchPin01 = 1; //small photocell int switchPin02 = 2; //large photocell int yellowLedPin = 3;   //  digital output pin for an LED int redLedPin = 4;      //  digital output pin for an LED int switchState01 = 0;    // the state of the switch int switchState02 = 0;    // the state of [...]]]></description>
			<content:encoded><![CDATA[<p>
<script type="text/javascript">
<!--
var ourTags='';
ourTags+='<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
ourTags+='<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/lightswitch.mov" />';
ourTags+='<PARAM name="CONTROLLER" VALUE="true" />';
ourTags+='<PARAM name="AUTOPLAY" VALUE="false" />';
ourTags+='<PARAM name="SCALE" VALUE="ASPECT" />';
ourTags+='<EMBED ';
ourTags+='SRC="http://www.cameroncundiff.com/media/lightswitch.mov" CONTROLLER="true"';
ourTags+=' type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>';
ourTags+='</OBJECT>';
if (typeof writeTags == "undefined") { document.write(ourTags);} else {writeTags(ourTags);
}//-->
</script>
<noscript>
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/lightswitch.mov" />
<PARAM name="CONTROLLER" VALUE="true" />
<PARAM name="AUTOPLAY" VALUE="false" />
<PARAM name="SCALE" VALUE="ASPECT" />
<EMBED 
SRC="http://www.cameroncundiff.com/media/lightswitch.mov" CONTROLLER="true"
 type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>
</OBJECT>

</noscript>
</p>
<p><span id="more-36"></span></p>
<p>// declare variables:<br />
int switchPin01 = 1; //small photocell<br />
int switchPin02 = 2; //large photocell<br />
int yellowLedPin = 3;   //  digital output pin for an LED<br />
int redLedPin = 4;      //  digital output pin for an LED<br />
int switchState01 = 0;    // the state of the switch<br />
int switchState02 = 0;    // the state of the switch</p>
<p>void setup() {<br />
pinMode(switchPin01, INPUT);<br />
pinMode(switchPin02, INPUT);  // set the switch pin to be an input<br />
pinMode(yellowLedPin, OUTPUT);   // set the yellow LED pin to be an output<br />
pinMode(redLedPin, OUTPUT);      // set the red LED pin to be an output<br />
}</p>
<p>void loop() {<br />
// read the switch input:<br />
switchState01 = digitalRead(switchPin01);<br />
switchState02 = digitalRead(switchPin02);</p>
<p>//covered (0), not(1) &#8211; then yellow<br />
if (switchState01 == 0 &amp;&amp; switchState02 == 0) {<br />
// if the switch is closed:<br />
digitalWrite(yellowLedPin, HIGH);    // turn on the yellow LED<br />
digitalWrite(redLedPin, LOW);       // turn off the red LED<br />
}<br />
else {<br />
// if the switch is open:<br />
digitalWrite(yellowLedPin, LOW);   // turn off the yellow LED<br />
digitalWrite(redLedPin, HIGH);     // turn on the red LED<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/09/light-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.cameroncundiff.com/media/lightswitch.mov" length="1842635" type="video/quicktime" />
		</item>
		<item>
		<title>basic switch</title>
		<link>http://www.ckundo.com/2008/09/basic-switch/</link>
		<comments>http://www.ckundo.com/2008/09/basic-switch/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 21:00:34 +0000</pubDate>
		<dc:creator>cameron</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://www.cameroncundiff.com/?p=11</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>
<script type="text/javascript">
<!--
var ourTags='';
ourTags+='<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
ourTags+='<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/switch.mov" />';
ourTags+='<PARAM name="CONTROLLER" VALUE="true" />';
ourTags+='<PARAM name="AUTOPLAY" VALUE="false" />';
ourTags+='<PARAM name="SCALE" VALUE="ASPECT" />';
ourTags+='<EMBED ';
ourTags+='SRC="http://www.cameroncundiff.com/media/switch.mov" CONTROLLER="true"';
ourTags+=' type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>';
ourTags+='</OBJECT>';
if (typeof writeTags == "undefined") { document.write(ourTags);} else {writeTags(ourTags);
}//-->
</script>
<noscript>
<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="257" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<PARAM name="SRC" VALUE="http://www.cameroncundiff.com/media/switch.mov" />
<PARAM name="CONTROLLER" VALUE="true" />
<PARAM name="AUTOPLAY" VALUE="false" />
<PARAM name="SCALE" VALUE="ASPECT" />
<EMBED 
SRC="http://www.cameroncundiff.com/media/switch.mov" CONTROLLER="true"
 type="video/quicktime" WIDTH="320" HEIGHT="257" AUTOPLAY="false" SCALE="ASPECT" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED>
</OBJECT>

</noscript>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ckundo.com/2008/09/basic-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.cameroncundiff.com/media/switch.mov" length="686324" type="video/quicktime" />
		</item>
	</channel>
</rss>
