<?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>XYStudio</title>
	<atom:link href="http://blog.xystudio.cc/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xystudio.cc</link>
	<description>xy&#039;s experimental life</description>
	<lastBuildDate>Tue, 24 Apr 2012 04:54:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Projection Mapping Lecture at ITP</title>
		<link>http://blog.xystudio.cc/2012/04/24/projection-mapping-lecture-at-itp/</link>
		<comments>http://blog.xystudio.cc/2012/04/24/projection-mapping-lecture-at-itp/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 04:52:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.xystudio.cc/?p=237</guid>
		<description><![CDATA[Chika and I did a projection mapping lecture in ITP last week, I would like to share our slides here: &#160;]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.imagima.com/">Chika</a> and I did a projection mapping lecture in ITP last week, I would like to share our slides here:</p>

<iframe src="http://docs.google.com/viewer?url=http://s3.amazonaws.com/ClientsPickup/SpatialMedia/ProjectionMapping.pdf&hl=en_US&embedded=true" class="gde-frame" style="width:600px; height:500px; border: none;" scrolling="no"></iframe>

<p class="gde-text"><a href="http://s3.amazonaws.com/ClientsPickup/SpatialMedia/ProjectionMapping.pdf" target="_blank" class="gde-link">Download (PDF, 2.21MB)</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2012/04/24/projection-mapping-lecture-at-itp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XYPieChart</title>
		<link>http://blog.xystudio.cc/2012/03/07/xypiechart/</link>
		<comments>http://blog.xystudio.cc/2012/03/07/xypiechart/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 03:17:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Animated]]></category>
		<category><![CDATA[CALayer]]></category>
		<category><![CDATA[Obj-C]]></category>
		<category><![CDATA[Pie Chart]]></category>
		<category><![CDATA[Simple]]></category>

		<guid isPermaLink="false">http://blog.xystudio.cc/?p=185</guid>
		<description><![CDATA[XYPieChart(source code on github) is an simple and easy-to-use pie chart for iOS app. It started from a Potion Project which needs an animated pie graph without interaction. All animation was implemented in the drawRect: method. After played with BTSPieChart, really like its code structure, it&#8217;s clean, has well named functions, structure like a UITableView. [...]]]></description>
			<content:encoded><![CDATA[<p>XYPieChart(<a href="https://github.com/xyfeng/xypiechart">source code</a> on github) is an simple and easy-to-use pie chart for iOS app. It started from a <a title="Potion Design" href="http://www.potiondesign.com" target="_blank">Potion</a> Project which needs an animated pie graph without interaction. All animation was implemented in the drawRect: method. After played with <a title="BTSPieChart" href="https://github.com/briancoyner/BTSPieChart" target="_blank">BTSPieChart</a>, really like its code structure, it&#8217;s clean, has well named functions, structure like a UITableView. I rewrote the XYPieChart code based on CALayers for the animation. Compared to BTSPieChart, XYPieChart is a prettier version, it has a simpler insert/delete slices algorithm, different design of slice selection, more flexible to customize.</p>
<p><a href="http://blog.xystudio.cc/wp-content/uploads/2012/03/XYPieChart_Screenshot_1.png"><img class="aligncenter size-full wp-image-232" title="XYPieChart_Screenshot_1" src="http://blog.xystudio.cc/wp-content/uploads/2012/03/XYPieChart_Screenshot_1.png" alt="" width="600" height="319" /></a></p>
<h2></h2>
<h2>Features</h2>
<ul>
<li>Customized color for slices (default color supported)</li>
<li>animated insert/delete slice(s)</li>
<li>slice selection animation</li>
<li>text label option of showing percentage or actual value</li>
<li>text label auto-hide when slice is too small</li>
<li>customizable text label font and relative postion</li>
<li>pie opening/closing animation</li>
<li>pie starting angle support</li>
<li>ARC(Automatic Reference Counting) support</li>
<li>interface builder support</li>
</ul>
<h2>Installation</h2>
<ul>
<li>Drag the XYPieChart/XYPieChart folder into your project.</li>
<li>Add the <strong>QuartzCore</strong> framework to your project.</li>
</ul>
<h2>Usage</h2>
<p>(see sample Xcode project in /Demo)</p>
<p>Set PieChart properties:</p>
<p><code>[self.pieChart setDelegate:self];<br />
[self.pieChart setDataSource:self];<br />
[self.pieChart setStartPieAngle:M_PI_2]; //optional<br />
[self.pieChart setAnimationSpeed:1.0]; //optional<br />
[self.pieChart setLabelFont:[UIFont fontWithName:@"DBLCDTempBlack" size:24]]; //optional<br />
[self.pieChart setLabelRadius:160]; //optional<br />
[self.pieChart setShowPercentage:YES]; //optional<br />
[self.pieChart setPieBackgroundColor:[UIColor colorWithWhite:0.95 alpha:1]]; //optional<br />
[self.pieChart setPieCenter:CGPointMake(240, 240)]; //optional</code></p>
<p>Implement Data Source Methods:</p>
<p><code>- (NSUInteger)numberOfSlicesInPieChart:(XYPieChart *)pieChart<br />
{<br />
return self.slices.count;<br />
}</code></p>
<p><code>- (CGFloat)pieChart:(XYPieChart *)pieChart valueForSliceAtIndex:(NSUInteger)index<br />
{<br />
return [[self.slices objectAtIndex:index] intValue];<br />
}</code></p>
<p><code>- (UIColor *)pieChart:(XYPieChart *)pieChart colorForSliceAtIndex:(NSUInteger)index<br />
{   //optional<br />
if(pieChart == self.pieChartRight) return nil;<br />
return [self.sliceColors objectAtIndex:(index % self.sliceColors.count)];<br />
}</code></p>
<p>Implement  Delegate Methods:</p>
<p><code>- (void)pieChart:(XYPieChart *)pieChart didSelectSliceAtIndex:(NSUInteger)index<br />
{<br />
NSLog(@"did select slice at index %d",index);<br />
self.selectedSliceLabel.text = [NSString stringWithFormat:@"$%@",[self.slices objectAtIndex:index]];<br />
}</code></p>
<h2>Video Demo</h2>
<p><iframe src="http://player.vimeo.com/video/38069395" frameborder="0" width="600" height="466"></iframe></p>
<h2></h2>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2012/03/07/xypiechart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizing ITP floor data in Processing</title>
		<link>http://blog.xystudio.cc/2010/04/19/visualizing-itp-floor-data-in-processing/</link>
		<comments>http://blog.xystudio.cc/2010/04/19/visualizing-itp-floor-data-in-processing/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 00:33:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Telling Stories with Data, Sensors & Humans]]></category>
		<category><![CDATA[sensor itp data logger processing visualization]]></category>

		<guid isPermaLink="false">http://www.sunshinehere.com/blog/?p=155</guid>
		<description><![CDATA[ITP sensor visualization processing sample from fxydesign on Vimeo.]]></description>
			<content:encoded><![CDATA[<p><object width="600" height="450"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11062172&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11062172&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="450"></embed></object>
<p><a href="http://vimeo.com/11062172">ITP sensor visualization processing sample</a> from <a href="http://vimeo.com/user2604252">fxydesign</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2010/04/19/visualizing-itp-floor-data-in-processing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Visualization of openLog</title>
		<link>http://blog.xystudio.cc/2010/04/12/google-visualization-of-openlog/</link>
		<comments>http://blog.xystudio.cc/2010/04/12/google-visualization-of-openlog/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 03:23:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Telling Stories with Data, Sensors & Humans]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[data visualization]]></category>
		<category><![CDATA[google visualization]]></category>
		<category><![CDATA[openLog]]></category>
		<category><![CDATA[photo cell]]></category>
		<category><![CDATA[ultrasonic range finder]]></category>

		<guid isPermaLink="false">http://www.sunshinehere.com/blog/?p=141</guid>
		<description><![CDATA[Nick want me to run a workshop for students about openLog and sensors. I use one photocell and ultrasonic range finder sensor as an example. Since most time people use sensors, either record sensor value constantly, or record whenever a big change happens. These two sensor are perfectly for this application. Openlog are dataloggers taking [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nickbilton.com">Nick</a> want me to run a workshop for students about openLog and sensors. I use one photocell and <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=639">ultrasonic range finder sensor</a> as an example. Since most time people use sensors, either record sensor value constantly, or record whenever a big change happens. These two sensor are perfectly for this application.</p>
<p>Openlog are dataloggers taking serial values, so  I use software library to get a screen monitor as well, super useful for debugging. And for the distance sensor, I write some algorithms to catch the peak value whenver a change happens, it average 100 samples at the beginning, and record changes with timeline encoded. I attached all the codes in the download links.</p>
<p>The I realized google have javascript visualization code available, so I start to play with them. For the photocell, since I print only sensor values line by line in arduino, so I use the sample rate as a timer, time coded in processing to print java like code for google viz &#8211; using image line chart.<br />
<code><br />
    function drawVisualization() {<br />
    var data = new google.visualization.DataTable();<br />
    data.addColumn('timeofday', 'Time');<br />
    data.addColumn('number', 'Lights of Room');<br />
    data.addRows(10);<br />
    data.setCell(0,0,[12,25,37]);<br />
    data.setCell(0,1,23);<br />
    ... ...<br />
    data.setCell(9,0,[12,25,46]);<br />
    data.setCell(9,1,23);<br />
    new google.visualization.ImageLineChart(document.getElementById('visualization')).<br />
    draw(data, null);<br />
}<br />
​</code><br />
[cf]googleViz_photocell[/cf]</p>
<p>For the distance sensor, I remember saw a new about a bike project in copenhagen, they have a sensor installed on the bike lane, with a giant LED screen on it, every time one bike passes, the screen show a number increase. So I use this idea to test the sensor. Every time the distance is shorter, I catch the change and print time encoded message into the datalogger, eg (12:53:17 one bike). For viz on the google chart,  I take the time, count the number in every minutes, and print jave like code for google viz &#8211; using column chart.<br />
<code><br />
      function drawVisualization() {<br />
        var data = new google.visualization.DataTable();<br />
        data.addColumn('timeofday','Time');<br />
        data.addColumn('number', 'Number of Bikes');<br />
        data.addRows(42);<br />
        data.setCell(0,0,[12,25,0]);<br />
        data.setCell(0,1,0);<br />
        ......<br />
        data.setCell(41,0,[12,6,0]);<br />
        data.setCell(41,1,0);<br />
        new google.visualization.ColumnChart(document.getElementById('visualization_ultrasonic')).<br />
            draw(data,<br />
                {title:"Bike Lane Analytics",<br />
                  width:600, height:300}<br />
            );<br />
      }<br />
      google.setOnLoadCallback(drawVisualization);<br />
      </code><br />
[cf]googleViz_ultrasonic[/cf]</p>
<p><a href="http://www.sunshinehere.com/things/Blog/DataSensingClass.zip">download</a></p>
<p>ps: to use google viz in your wordpress page, use &#8216;<a href="http://wordpress.org/extend/plugins/custom-fields-shortcode/">custom field shortcode</a>&#8216; plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2010/04/12/google-visualization-of-openlog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Illustration of one week life</title>
		<link>http://blog.xystudio.cc/2010/03/22/illustration-of-one-week-life/</link>
		<comments>http://blog.xystudio.cc/2010/03/22/illustration-of-one-week-life/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 19:45:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Telling Stories with Data, Sensors & Humans]]></category>
		<category><![CDATA[adobe ai]]></category>
		<category><![CDATA[daytum]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://www.sunshinehere.com/blog/?p=137</guid>
		<description><![CDATA[Assignment: Visualization the data source in Adobe AI. Data: 5 different things logged in one week. tool: I use daytum to log all my infomation. Here is my visualization:]]></description>
			<content:encoded><![CDATA[<p>Assignment: Visualization the data source in Adobe AI.</p>
<p>Data: 5 different things logged in one week.</p>
<p>tool: I use <a href="http://www.daytum.com/fxy">daytum</a> to log all my infomation.</p>
<p>Here is my visualization:</p>
<p style="text-align: center;"><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/Picture-11.png"><img class="aligncenter size-large wp-image-138" title="xiaoyang's daytum" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/Picture-11-1024x766.png" alt="" width="614" height="460" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2010/03/22/illustration-of-one-week-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: openLog data logger from Sparkfun</title>
		<link>http://blog.xystudio.cc/2010/03/06/tutorial-openlog-data-logger-from-sparkfun/</link>
		<comments>http://blog.xystudio.cc/2010/03/06/tutorial-openlog-data-logger-from-sparkfun/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 18:01:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[P-Com]]></category>
		<category><![CDATA[Telling Stories with Data, Sensors & Humans]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[fritzing]]></category>
		<category><![CDATA[microSD]]></category>
		<category><![CDATA[openLog]]></category>
		<category><![CDATA[sparkfun]]></category>

		<guid isPermaLink="false">http://www.sunshinehere.com/blog/?p=104</guid>
		<description><![CDATA[OpenLog WHAT IS THIS: OpenLog is an open source data logger, available from SparkFun. It takes serial data and write into a microSD card. It can be connected to a microcontroller, such as Arduino. Feather: small size integrating a MicroSD card writer support MicroSD card  up to 2GB, ONLY FAT16 format Support high sample rate Power [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9530"><img class="aligncenter size-full wp-image-105" title="Picture 1" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/Picture-1.png" alt="Picture 1" width="599" height="355" /></a></p>
<p>OpenLog</p>
<p>WHAT IS THIS:</p>
<p>OpenLog is an open source data logger, available from SparkFun. It takes serial data and write into a microSD card. It can be connected to a microcontroller, such as Arduino.</p>
<p>Feather:</p>
<ul>
<li>small size</li>
<li>integrating a MicroSD card writer</li>
<li>support MicroSD card  up to 2GB, ONLY FAT16 format</li>
<li>Support high sample rate</li>
<li>Power usage about 18mA at Maximum rate</li>
<li>Take either 3.3V or 5V Power</li>
</ul>
<p><a href="http://www.ehow.com/how_4794433_format-sd-card-mac.html">How to format</a></p>
<p>HOW TO CONFIG:</p>
<p>Wire your openLog with USBtoSerial Adapter or using Arduino. If you use USBtoSerial adapter, you connect Rx to Tx, Tx to Rx, check <a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/usLog_FTDI.png">this</a> as reference. If you use Arduino, connect your Rx pin on arduino to Rx pin on openLog, Tx to Tx. Here is the diagram how to wire it.(you need to upload a blank code or any code without serial communication).</p>
<p><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/FTDI_Schematic1.png"><img class="aligncenter size-full wp-image-130" title="FTDI_Schematic1" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/FTDI_Schematic1.png" alt="" width="640" height="300" /></a></p>
<p><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/openLog_Config.png"><img class="aligncenter size-full wp-image-106" title="openLog_Config" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/openLog_Config.png" alt="openLog_Config" width="700" height="417" /></a></p>
<p>you can use any serial program(such as coolterm/cornflakes) to configure it. I use terminal below. Here are the steps you take once you&#8217;ve got the serial port open:</p>
<ol>
<li>type &#8220;Control + z to get into the configuration mode&#8221;</li>
<li>&#8230;.config it&#8230;. check <a href="http://wiki.github.com/nseidle/OpenLog/command-set">commend sets </a>for more details</li>
<li>type &#8220;set&#8221;</li>
<li>type 1 to get into &#8216;LOG&#8217; Mode.</li>
</ol>
<p>( <em>if your arduino have some serial communication code running, the terminal will print the data out, you can&#8217;t get into the config mode. If you have problem from changing into Log mode, you might need to update the firmware of it. Since it&#8217;s a AMTEL chip, same as arduino, you can use avrdude to do it. I will post one tutorial later.)</em></p>
<p><em><br />
</em></p>
<p>HOW TO LOG DATA:</p>
<p>OpenLog can log data, but don&#8217;t have any analog inputs. It take whatever serial inputs and write it down into the mircoSD card. So you need a microcontroller like arduino to read the sensor data and pass them to openLog using serial. In openLog, you can have more file controls on the SD card side, like log into different file&#8230;etc. I&#8217;ll take a photocell as an example:</p>
<p><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/openLog_LOG.png"><img class="aligncenter size-full wp-image-107" title="openLog_LOG" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/openLog_LOG.png" alt="openLog_LOG" width="700" height="417" /></a></p>
<p>You notice from the diagram above, you connect your Rx pin to Tx pin, Tx pin to Rx pin. It&#8217;s different from the config mode. To test it out, simply choose an example code from arduino: File-&gt;Exmaples-&gt;Analog-&gt;AnalogInSerial. Then openlog will log your data line by line into your microSD card. The simple way to play with it is changing delays to change the sample rates. Like delay(100) means 10 samples per second. You can also add serial.println to change your data format, like Serial.println(&#8220;Sensor1: &#8220;)&#8230;&#8230;</p>
<p>HOW TO READ THE LOG DATA:</p>
<p>Use a SD card reader or when you config the openLog, there is command to do it as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2010/03/06/tutorial-openlog-data-logger-from-sparkfun/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tutorial: uLog data logger from Sparkfun</title>
		<link>http://blog.xystudio.cc/2010/03/05/tutorial-ulog-data-logger-from-sparkfun/</link>
		<comments>http://blog.xystudio.cc/2010/03/05/tutorial-ulog-data-logger-from-sparkfun/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 23:06:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Telling Stories with Data, Sensors & Humans]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[data logging]]></category>
		<category><![CDATA[sparkfun]]></category>
		<category><![CDATA[tom igoe]]></category>
		<category><![CDATA[uLog]]></category>

		<guid isPermaLink="false">http://www.sunshinehere.com/blog/?p=83</guid>
		<description><![CDATA[uLog WHAT IS THIS? uLog is a tiny analog logging device from Sparkfun.  The uLog have an onboard flash memory mated with a ATtiny24. It don&#8217;t need a microcontroller, but can only take data on three analog inputs. Feature: small size have 3 analog inputs on/off switch on board designed for 3-axis accelerometer 16MB data [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/Picture-9.png"><img class="size-full wp-image-84 aligncenter" title="Picture 9" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/Picture-9.png" alt="Picture 9" width="553" height="373" /></a></p>
<p>uLog</p>
<p>WHAT IS THIS?</p>
<p>uLog is a tiny analog logging device from Sparkfun.  The uLog have an onboard flash memory mated with a ATtiny24. It don&#8217;t need a microcontroller, but can only take data on three analog inputs.</p>
<p>Feature:</p>
<ul>
<li>small size</li>
<li>have 3 analog inputs</li>
<li>on/off switch on board</li>
<li>designed for 3-axis accelerometer</li>
<li>16MB data size</li>
<li>50Hz sampling rate</li>
<li>about 2 hours logging space</li>
<li>battery usage about 4mA per hour</li>
</ul>
<p>HOW TO LOG:</p>
<p>Let&#8217;s use a photo cell as an example:</p>
<p style="text-align: center;"><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/usLog_battery.png"><img class="size-full wp-image-88 aligncenter" title="usLog_battery" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/usLog_battery.png" alt="usLog_battery" width="640" height="360" /></a></p>
<p>Connect to your battery, you will see the red light flashes.  Then connect your sensor to one of the three input pins, use your breadboard to help you wire it up. Then you are ready to go. Turn on the on/off switch on the back to log the data. (Remember, don&#8217;t wire any thing on the Tx/Rx when you log your data, any wire on them will cause the Logger into configuration mode). The uLog only have 16MB space for data, it automatically append the new data into the ends and overrides the old one (from the beginning) if the memory full.</p>
<p>HOW TO READ THE LOG:</p>
<p>Use a USBtoSerial adapter to wire your uLog. Need 3.3 voltage one, not 5 voltage.( If you don&#8217;t have one, you can use your arduino instead, either pulling out the ATMEL chip or upload a code without any serial communications,check <a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/openLog_Config.png">this</a> as reference). Here is how your wire it. (If you use arduino,  Tx&lt;-&gt;Tx Rx&lt;-&gt;Rx, connect your Tx to Tx, Rx to Rx).</p>
<p><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/FTDI_Schematic2.png"><img class="aligncenter size-full wp-image-133" title="FTDI_Schematic2" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/FTDI_Schematic2.png" alt="" width="640" height="300" /></a></p>
<p style="text-align: center;"><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/usLog_FTDI.png"><img class="size-full wp-image-94 aligncenter" title="usLog_FTDI" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/03/usLog_FTDI.png" alt="usLog_FTDI" width="640" height="360" /></a></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">Basically, if you send &#8216;r&#8217; to your serial port, the uLog will send all the logged data, if you send &#8216;e&#8217; to your serial port, the uLog will erase the memory.</p>
<p style="text-align: left;">Based on <a href="http://www.tigoe.net/pcomp/code/category/Processing/616">Tom Igoe</a>&#8216;s processing code, I filter the noise data and convert hex into integers.</p>
<p style="text-align: left;">Run the sketch, type &#8216;r&#8217; in the opened window to read the data, type &#8216;e&#8217; to erase the data.</p>
<p><code><br />
import processing.serial.*;</code></p>
<p><code>Serial myPort;                  // instance of the serial library<br />
String dataString = "";         // string of data for each set of readings<br />
String[] data = {""};                          // array to save strings to a file<br />
boolean reading = false;        // whether or not you're reading from the logger</code></p>
<p><code>String filename = "datalog.txt";  // string to save the file to<br />
int lineCount = 0;              // count of the number of lines in the file</code></p>
<p><code>void setup() {<br />
// open the serial port:<br />
myPort = new Serial(this, Serial.list()[0], 38400);<br />
// flush the serial buffer:<br />
myPort.clear();<br />
}</code></p>
<p><code> </code></p>
<p><code>void draw() {</code></p>
<p><code> </code></p>
<p><code>}</code></p>
<p><code> </code></p>
<p><code>void serialEvent(Serial myPort) {<br />
// get a byte:<br />
int inByte = myPort.read();<br />
// do something different depending on what the byte is:<br />
switch(inByte) {<br />
case '?':          // response prompt<br />
// if you're already reading from the logger,<br />
//save the results to a file:<br />
if (reading) {<br />
saveStrings(filename, data);<br />
// you're done reading:<br />
reading = false;<br />
// print the linecount:<br />
print("lineCount: " + lineCount + "\0\r");<br />
}<br />
// print the prompt:<br />
println(char(inByte));<br />
break;<br />
case '\r':      // carriage return at the end of each line:<br />
// make sure you have at least four characters:<br />
if (dataString.length() &gt; 4) {<br />
//filter the data and covert from hex to integer<br />
String[] t = splitTokens(dataString);<br />
String newData = "";<br />
try{<br />
for(int m = 0; m &lt; t.length; m ++){<br />
if(t[m].length() == 4){<br />
int value = unhex(t[m]);<br />
newData = newData + ' ' + value;<br />
}<br />
}<br />
}<br />
catch(Exception e){<br />
break;<br />
}<br />
// add this string to the data array:<br />
data = append(data, newData);<br />
println(newData);<br />
// increment the line count:<br />
lineCount++;<br />
}<br />
// clear the string variable for the next string:<br />
dataString = "";<br />
break;<br />
case '\n':        // newline: get rid of them<br />
break;<br />
default:    // any other character:<br />
// add character to the string:<br />
dataString += char(inByte);<br />
break;<br />
}<br />
}</code></p>
<p><code>void keyReleased() {<br />
if (key == 'r') {<br />
reading = true;<br />
println("Reading from logger...");<br />
// send keystroke to the logger<br />
myPort.write(key);<br />
}</code></p>
<p><code> </code></p>
<p><code>if (key == 'e') {<br />
println("erasing data from logger...");</code></p>
<p><code>// you're erasing all the data on the logger<br />
// wait until the LEDS stop flashing before you disconnect it!<br />
// send keystroke to the logger<br />
myPort.write(key);<br />
}</p>
<p></code></p>
<p><code>}<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2010/03/05/tutorial-ulog-data-logger-from-sparkfun/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Assignment &#8211; Week One</title>
		<link>http://blog.xystudio.cc/2010/02/01/assignment-week-one/</link>
		<comments>http://blog.xystudio.cc/2010/02/01/assignment-week-one/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:24:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Telling Stories with Data, Sensors & Humans]]></category>

		<guid isPermaLink="false">http://www.sunshinehere.com/blog/?p=76</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunshinehere.com/blog/wp-content/uploads/2010/02/Week-One.jpg"><img class="aligncenter size-large wp-image-81" title="Week One" src="http://www.sunshinehere.com/blog/wp-content/uploads/2010/02/Week-One-1024x115.jpg" alt="Week One" width="614" height="69" /></a></p>
<p style="text-align: center;">
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2010/02/01/assignment-week-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Week One &#8211; Use photos to tell story</title>
		<link>http://blog.xystudio.cc/2010/01/26/week-one-use-photos-to-tell-story/</link>
		<comments>http://blog.xystudio.cc/2010/01/26/week-one-use-photos-to-tell-story/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 04:10:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Telling Stories with Data, Sensors & Humans]]></category>

		<guid isPermaLink="false">http://www.sunshinehere.com/blog/?p=74</guid>
		<description><![CDATA[Nick on the class showed his photo collection of all capuchino coffee he drinks everyday. After see that and heard the story of Nicholas Feltron&#8217;s annual report, I start to understand why people start to fast document their daily life. Like twitter, foursquare, daytum, one good thing of this, it&#8217;s trackable, most of the data [...]]]></description>
			<content:encoded><![CDATA[<p>Nick on the class showed his photo collection of all capuchino coffee he drinks everyday. After see that and heard the story of Nicholas Feltron&#8217;s annual report, I start to understand why people start to fast document their daily life. Like twitter, foursquare, daytum, one good thing of this, it&#8217;s trackable, most of the data are stored online, you can always go back to look at those pictures, another good thing of those are statics, by learning your &#8216;past history&#8217; from your own document, people will know themselves better, they will have better ideas of their future plan/decision. It become one of people&#8217;s self motivation. like CAD(computer aided design), I&#8217;d call it WAM(web aided motivation). Nike + is a great example of it.</p>
<p>For the first week homework, Nick want us to use our cellphone camera/portable camera to document 10~20 photos to tell a story. I thought it&#8217;s a simple homework, however, 3 days already past, I haven&#8217;t decided what kinds of photos will best tell a story. I start to brainstorm, re think the concept. Information from a photo will tell a story. I was just looking at my poster wall at home&#8230;ideas&#8230;ideas&#8230;</p>
<p>My idea is every time I take a photo, I use three steps to add more informations of it.</p>
<p>1&gt; find a poster which catches my eyes, use iphone take a photo of it.</p>
<p>2&gt;go to the picture folder, view the photo I took and take a snap shot, so I can add time information to the photo</p>
<p>3&gt;open google map on the phone, and locate my position and take a snap shot</p>
<p>after these three steps, I have one photo of one event I interested, I know where I find the poster, I know when I find it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2010/01/26/week-one-use-photos-to-tell-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build Monome LEGO Case Tutorial</title>
		<link>http://blog.xystudio.cc/2009/12/06/build-monome-lego-case-tutorial/</link>
		<comments>http://blog.xystudio.cc/2009/12/06/build-monome-lego-case-tutorial/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:25:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[128 keys]]></category>
		<category><![CDATA[64 keys]]></category>
		<category><![CDATA[acrylic]]></category>
		<category><![CDATA[laser cut]]></category>
		<category><![CDATA[LEGO]]></category>
		<category><![CDATA[Monome]]></category>
		<category><![CDATA[monome case]]></category>
		<category><![CDATA[tenori-on]]></category>

		<guid isPermaLink="false">http://blog.fxydesign.com/?p=3</guid>
		<description><![CDATA[Thank Paul Rothman organized ITP Monome Group order, 45 people with 54 Monomes. So what is monome? According to wiki, &#8221; &#8230;is an eight-by-eight grid of backlit buttons which connects to a computer using aUSB cable and the Open Sound Control (OSC) protocol. Originally developed as an open ended performance interface for electronic music&#8230;&#8221; Similar [...]]]></description>
			<content:encoded><![CDATA[<p>Thank Paul Rothman organized ITP Monome Group order, 45 people with 54 Monomes.</p>
<p style="text-align: center;"><img class="size-full wp-image-4 aligncenter" title="Monome_wiki" src="http://blog.xystudio.cc/wp-content/uploads/2009/12/Foursixtyfour.jpg" alt="Monome_wiki" width="480" height="320" /></p>
<p>So what is monome? According to wiki, &#8221; &#8230;is an eight-by-eight grid of backlit buttons which connects to a computer using aUSB cable and the Open Sound Control (OSC) protocol. Originally developed as an open ended performance interface for electronic music&#8230;&#8221;</p>
<p>Similar Product is <a title="tenori-on" href="http://www.tenori-onusa.com/" target="_blank">Tenori-on</a>, they both showed up in pubic around 2007, it&#8217;s hard to say who is the first one. Monome came out a little earlier than Tenori-on. I personally went to Tenori-on New York world launch tour in Brooklyn, NY, where I met Toshio Iwai, the inventor. The device is very well made, high condensed, also expensive. So&#8230;What good about Monome is DIY package, Open Source, easy programmable, cheaper. Also it have rubber buttons verses plastic buttons on Tenori-on.</p>
<p>Before I start to build my 128 key Monome(basically put 2x40h kits together with a usb hub), I start to think about my case. I like hand-made wood case which most people use to build their monome, but I&#8217;m not very like to see all the screws on the case. So I came up the idea of using LEGO, fast prototyping, easy construct and de-construct, no screws needs, more color to choose&#8230; Then I start to build my LEGO case in <a title="lego digital designer" href="http://ldd.lego.com/download/default.aspx" target="_blank">lego digital designer</a> software, which you can easily download and run in all major platforms. Building a LEGO case is not as easy as you imagine. the final design is about my 5th design version. Why I design by myself? If you search LEGO monome online, you can easily found picture like this:</p>
<p><img class="aligncenter size-full wp-image-5" title="LEGO_flickr" src="http://blog.xystudio.cc/wp-content/uploads/2009/12/2895479255_0d0eed1d13.jpg" alt="LEGO_flickr" width="500" height="375" /></p>
<p>It has nice color designed, &#8230; but it&#8217;s a little bulky. So my goal is to make a LEGO case simple, strong, use as less bricks as possible. After I measured the templates of Monome 40h kits, I find LEGO have perfect size for monome. The Monome circuit board size is 6&#8243;x6&#8243;. but it&#8217;s not at the center according to the button array. So 6.25&#8243; is the smallest size for it. On the Lego side, each brick is 5/16&#8243; wide, 20 bricks is perfect 6.25&#8243;. Here is some sketches for LEGO digital designer, you can download them: <a title="monome_frame64" href="http://www.sunshinehere.com/things/monome/Monome_64Key.lxf" target="_blank">64keys</a>, <a title="monome_frame128" href="http://www.sunshinehere.com/things/monome/Monome_128Key.lxf" target="_blank">128keys</a>.</p>
<p style="text-align: center; "><img class="aligncenter" title="monome_sketch1" src="http://farm3.static.flickr.com/2727/4151793326_d153cdf820_o.png" alt="" width="504" height="336" /></p>
<p style="text-align: center; "><img class="aligncenter" title="monome_sketch2" src="http://farm3.static.flickr.com/2434/4151035869_992e0caeed_o.png" alt="" width="504" height="336" /></p>
<p style="text-align: center; "><img class="aligncenter" title="Monome_Lego_64" src="http://farm3.static.flickr.com/2489/4151035955_dda373ba7c_o.png" alt="" width="504" height="336" /></p>
<p style="text-align: left;">However after I laser-cutter my frontplate, I realized there is a tiny gap between each two bricks, which made my frontplate a bit smaller. I measured them out, it&#8217;s about 1/64&#8243; for each brick. So let&#8217;s say, if you have 6 bricks in a row, you need to make your front plates 6 x 1/64&#8243; bigger. I didn&#8217;t redo my lasercut plate. I sand them a bit to fit the frame. I updated my laser cut template to adapt the gap, though I haven&#8217;t tried them out. The template is made in illustrator, it has two layers to run two passes cut in case it&#8217;s too hot to melt some edges. The templates are designed to glue LEGO pieces on it. Legos are made of ABS plastic and the front/bottom plates I use is Acrylic Plastic. Though I should buy ABS to ABS liquid glue, when I tried Acrylic to Acrylic Glue, it&#8217;s pretty sticky. The only problem is that the glue cause the color lose. So I suggest you tape other areas before you glue them together. You can download the laser templates here: <a title="64keysAI" href="http://www.sunshinehere.com/things/monome/LEGO_monome64_fxy.ai" target="_blank">64keys</a>, <a title="128keysAI" href="http://www.sunshinehere.com/things/monome/LEGO_monome128_fxy.ai" target="_blank">128keys</a>, for <a href="http://www.sunshinehere.com/things/monome/LEGO_Monome_CS3.zip" target="_blank">CS3 version</a>&#8230;</p>
<p style="text-align: left;">I only glue the parts which I use to snap the Lego together(the top two layers in the design file). Then I started to assemble them together. As you see in the template, I already left space for one USB type A female port hole on the corner. Since I need to put two circuit boars, 1 usb hub, 2 usb cable, 1 usb adapter to this box, I ordered these parts: <a title="8 inch usb cable" href="http://www.amazon.com/USB-2-0-Cable-20cm-Black/dp/B000ZD1KXI/" target="_blank">8&#8243; usb cable</a> x 2; <a title="2 port usb hub" href="http://www.newegg.com/Product/Product.aspx?Item=N82E16817397012" target="_blank">2 port usb mini hub</a>; <a title="usb adapter" href="http://www.newegg.com/Product/Product.aspx?Item=N82E16812200212" target="_blank">usb A to B  adapter</a>. The usb hub is a little bulky, so I took the plastic out. If you open the laser cut template, you may notice, there is no screw holes on the bottom plates. I use the same screws on the top templates, only screwed one corner of the circuit board on the LED panel. To avoid circuit short,  I use thick sticky tape in between to cover all the solder tips. and for the usb adapter, I use a wire to tie it up to the side right-angle male to male headers. Below are some pictures:</p>
<p style="text-align: left;"><img class="aligncenter" title="monome1" src="http://farm3.static.flickr.com/2629/4151699486_e302110c07.jpg" alt="" width="500" height="333" /></p>
<p style="text-align: left;"><img class="aligncenter" title="monone2" src="http://farm3.static.flickr.com/2514/4151699304_88f2375915.jpg" alt="" width="500" height="333" /></p>
<p style="text-align: left;"><img class="aligncenter" title="monone3" src="http://farm3.static.flickr.com/2777/4151698900_bfceeeddea.jpg" alt="" width="500" height="333" /></p>
<p style="text-align: left;">
<p style="text-align: left;"><img class="aligncenter" title="monone4" src="http://farm3.static.flickr.com/2609/4151699092_86d9b5df4e.jpg" alt="" width="500" height="333" /></p>
<p style="text-align: left;"><img class="aligncenter" title="monone4" src="http://farm3.static.flickr.com/2723/4151699710_0566055b22.jpg" alt="" width="500" height="333" /></p>
<p style="text-align: center; "><img class="aligncenter" title="monone5" src="http://farm3.static.flickr.com/2788/4150940941_b86c953dcc.jpg" alt="" width="500" height="333" /></p>
<p style="text-align: left;">ps: for normal laser templates and other monome building/config tutorial, check <a href="http://itpedia.nyu.edu/wiki/Monome09" target="_blank">itpedia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xystudio.cc/2009/12/06/build-monome-lego-case-tutorial/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>

