<?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>neophob.com</title>
	<atom:link href="http://neophob.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://neophob.com</link>
	<description>are you still afraid?</description>
	<lastBuildDate>Sat, 04 Feb 2012 21:48:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>StripInvaders Howto Assemble</title>
		<link>http://neophob.com/2012/01/stripinvaders-howto-assemble/</link>
		<comments>http://neophob.com/2012/01/stripinvaders-howto-assemble/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 20:30:40 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[OSC]]></category>
		<category><![CDATA[PixelInvaders]]></category>
		<category><![CDATA[PureData]]></category>
		<category><![CDATA[StripInvaders]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1412</guid>
		<description><![CDATA[This Guide shows you, how to assemble/connect the StripInvaders System. You need: WS2801 LED Strips An Arduino Ethernet Board and a USB/Serial Light Adapter to upload the firmware 5 Volt power supply – I use an old ATX Power supply Optional: Grove — Base Shield and Cables Also make sure that the StripInvaders Sketch is [...]]]></description>
			<content:encoded><![CDATA[<p>This Guide shows you, how to assemble/connect the <a href="http://pixelinvaders.ch/?page_id=396">StripInvaders System</a>. You need:</p>
<ul>
<li><a href="http://pixelinvaders.ch/?page_id=390">WS2801 LED Strips</a></li>
<li>An Arduino Ethernet Board and a USB/Serial Light Adapter to upload the firmware</li>
<li>5 Volt power supply – I use an old ATX Power supply </li>
<li>Optional: Grove — Base Shield and Cables</li>
</ul>
<p>Also make sure that the <a href="https://github.com/neophob/StripInvaders">StripInvaders Sketch</a> is already on your Arduino!</p>
<p>This is my WS2801 LED Strip:<br />
<center><img src="http://neophob.com/wp-content/uploads/2012/01/ws2801.jpg" alt="" title="ws2801" width="500" height="387" class="aligncenter size-full wp-image-1384" /></center><br />
You see that the connections described on the Strip itself (<strong>Black</strong>: 5V, <strong>Green</strong>: Clock, <strong>Red</strong>: Data, <strong>Blue</strong>: GND).</p>
<p>Now it’s time to connect the <a href="http://www.seeedstudio.com/depot/grove-base-shield-p-754.html">Grove Base Shield</a> to the Arduino Ethernet:<br />
<center><img src="http://neophob.com/wp-content/uploads/2012/01/arduinoEth.png" alt="" title="arduinoEth" width="500" height="366" class="aligncenter size-full wp-image-1385" /></center><br />
The Grove Cable is connected at Port nr. 4, this means <strong>Yellow</strong>: D4, <strong>White</strong>: D5, <strong>Red</strong>: V+, <strong>Black</strong>: GND. Hint: D4 means Arduino Digital Pin 4, D5 means Arduino Digital Pin 5.</p>
<p>Almost done, now connect the cable from the Arduino <strong>Grove Shield</strong> with the <strong>LED Strip</strong> and the <strong>5V power supply</strong>. This should look like this:<br />
<center><img src="http://neophob.com/wp-content/uploads/2012/01/StripInvadersFritz.png" alt="" title="StripInvadersFritz" width="495" height="591" class="aligncenter size-full wp-image-1400" /></center></p>
<p>Now connect the StripInvader to your LAN and power up StripInvaders. Try to ping the host “invader.local”, this is the mDNS name of the StripInvaders Arduino device. </p>
<p>The StripInvaders can be configured without re-uploading the Arduino sketch, by sending a special OSC messages (/cfg). Take a look at this <a href="http://puredata.info/">PureData</a> example:<br />
<center><img src="http://neophob.com/wp-content/uploads/2012/01/stripinvadersSetup.png" alt="" title="stripinvadersSetup" width="414" height="614" class="aligncenter size-full wp-image-1406" /></center></p>
<p>In our example we send “/cfg 66 5 4 96″. The <strong>first parameter</strong> 66 is just a magic byte, it must be 66, period. The <strong>second parameter</strong> defines the data pin, the <strong>third parameter</strong> defines the clock pin and the <strong>last parameter</strong> define how many led pixels are installed.</p>
<p>Links: <a href="http://pixelinvaders.ch/?page_id=396">StripInvaders System</a></p>
<p>Look, it’s really easy ma:<br /><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=35978973&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=35978973&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="520" height="290"></embed></object></p>
<p><strong>Edit 4.2.2012:</strong><br />
I just released the <a href="https://github.com/neophob/StripInvaders/downloads">StripInvaders config Tool</a> (for OSX and Windows), this should simplify the setup process. Here is a screenshot:<br />
<img src="http://neophob.com/wp-content/uploads/2012/01/StripInvaderConfig.png" alt="" title="StripInvaderConfig" width="628" height="402" class="aligncenter size-full wp-image-1433" /></p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2012/01/stripinvaders-howto-assemble/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>StripInvaders Light System</title>
		<link>http://neophob.com/2011/12/stripinvaders-light-system/</link>
		<comments>http://neophob.com/2011/12/stripinvaders-light-system/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 22:01:47 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Ethernet]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Led]]></category>
		<category><![CDATA[OSC]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1363</guid>
		<description><![CDATA[I just released a new project called StripInvaders. It’s basically a PixelInvaders in one dimension. StripInvaders drives a 5m long LED strip and display some fancy animation. I use a Arduino Ethernet as driver, so no external hardware is used. Some features of StripInvaders: 15 different color modes Control StripInvaders with a Smartphone or Tablet [...]]]></description>
			<content:encoded><![CDATA[<p>I just released a new project called <strong>StripInvaders</strong>. It’s basically a PixelInvaders in one dimension. StripInvaders drives a 5m long LED strip and display some fancy animation. I use a <a href="http://arduino.cc/en/Main/ArduinoBoardEthernet">Arduino Ethernet</a> as driver, so no external hardware is used. Some features of StripInvaders:</p>
<ul>
<li>15 different color modes</li>
<li>Control StripInvaders with a Smartphone or Tablet</li>
<li>Stepless adjust the RGB value and the animation delay</li>
<li>Bonjour and mDNS support</li>
<li>DHCP support</li>
<li>All fits into the 30kb firmware</li>
<li>The firmware is released on <a href="https://github.com/neophob/StripInvaders">GitHub</a></li>
<li>Strips available on my <a href="http://pixelinvaders.ch/?page_id=390">PixelInvaders.ch shop</a></li>
</ul>
<p>StripInvaders will color up your flat, take a look at those images:<br />
<center><br />
<img src="http://neophob.com/wp-content/uploads/2011/12/GOPR1289-1024x768.jpg" alt="" title="StripInvaders" width="385" height="288" class="aligncenter size-large wp-image-1364" /></p>
<p><img src="http://neophob.com/wp-content/uploads/2011/12/GOPR1288-1024x768.jpg" alt="" title="StripInvaders BlueRed" width="385" height="288" class="aligncenter size-large wp-image-1369" /></p>
<p><img src="http://neophob.com/wp-content/uploads/2011/12/GOPR1296-1024x768.jpg" alt="" title="DCIM100GOPRO" width="385" height="288" class="aligncenter size-large wp-image-1376" /></p>
<p><img src="http://neophob.com/wp-content/uploads/2011/12/GOPR1353-1024x768.jpg" alt="" title="DCIM100GOPRO" width="385" height="288" class="aligncenter size-large wp-image-1377" /><br />
</center></p>
<p><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=33992255&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=33992255&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="520" height="290"></embed></object><br />
<br /> </p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/12/stripinvaders-light-system/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Use BusPirate to upload Sketch to Arduino Ethernet</title>
		<link>http://neophob.com/2011/12/use-buspirate-to-upload-sketch-to-arduino-ethernet/</link>
		<comments>http://neophob.com/2011/12/use-buspirate-to-upload-sketch-to-arduino-ethernet/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 09:01:21 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Buspirate]]></category>
		<category><![CDATA[Ethernet]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1358</guid>
		<description><![CDATA[I just got a new Arduino Ethernet board and had some troubles uploading the Firmware. After some research I finally found a solution using my BusPirate v3: Here is the wiring between BusPirate and Arduino Ethernet BP GND -&#62; Pin 1 (Black) BP 5v -&#62; Pin 3 (Red) BP MOSI -&#62; Pin 4 (Red) BP [...]]]></description>
			<content:encoded><![CDATA[<p>I just got a new Arduino Ethernet board and had some troubles uploading the Firmware. After some research I finally found a solution using my <strong>BusPirate </strong>v3:</p>
<p><center><img src="http://neophob.com/wp-content/uploads/2011/12/IMG_20111202_095024-768x1024.jpg" alt="" title="ARduinoEthernet" width="385" height="513" class="aligncenter size-large wp-image-1359" /></center></p>
<p>Here is the wiring between BusPirate and Arduino Ethernet<br />
BP GND -&gt; Pin 1 (Black)<br />
BP 5v -&gt; Pin 3 (Red)<br />
BP MOSI -&gt; Pin 4 (Red)<br />
BP MISO -&gt; Pin 5 (Yellow)<br />
BP CLK -&gt; Pin 6 (Blue)</p>
<p>Connect to your BusPirate (115200 BPS) and configure it to run in transparent serial mode</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">HiZ&gt;m<br />
1. HiZ<br />
2. 1-WIRE<br />
3. UART<br />
4. I2C<br />
5. SPI<br />
6. JTAG<br />
7. RAW2WIRE<br />
8. RAW3WIRE<br />
9. PC KEYBOARD<br />
10. LCD<br />
(1) &gt;3<br />
Mode selected<br />
Set serial port speed: (bps)<br />
 1. 300<br />
 2. 1200<br />
 3. 2400<br />
 4. 4800<br />
 5. 9600<br />
 6. 19200<br />
 7. 38400<br />
 8. 57600<br />
 9. 115200<br />
 10. 31250 (MIDI)<br />
(1) &gt;9<br />
Data bits and parity:<br />
 1. 8, NONE *default<br />
 2. 8, EVEN<br />
 3. 8, ODD<br />
 4. 9, NONE<br />
(1) &gt;<br />
Stop bits:<br />
 1. 1 *default<br />
 2. 2<br />
(1) &gt;<br />
Receive polarity:<br />
 1. Idle 1 *default<br />
 2. Idle 0<br />
(1) &gt;<br />
Select output type:<br />
 1. Open drain (H=Hi-Z, L=GND)<br />
 2. Normal (H=3.3V, L=GND)<br />
(1) &gt;2<br />
READY<br />
UART&gt;W<br />
POWER SUPPLIES ON<br />
HiZ&gt;I<br />
Bus Pirate v3<br />
Firmware v4.2 Bootloader v4.1<br />
DEVID:0x0447 REVID:0x3043 (B5)<br />
http://dangerousprototypes.com<br />
UART&gt;(3)<br />
UART bridge. Space continues, anything else exits.<br />
Reset to exit.</div></td></tr></tbody></table></div>
<p>Exit the Terminal and switch over to your Arduino IDE. Now upload your sketch through the BusPirate.</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/12/use-buspirate-to-upload-sketch-to-arduino-ethernet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PixelController Showcase Video: OSC</title>
		<link>http://neophob.com/2011/11/pixelcontroller-showcase-video-osc/</link>
		<comments>http://neophob.com/2011/11/pixelcontroller-showcase-video-osc/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 18:36:26 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[OSC]]></category>
		<category><![CDATA[PixelController]]></category>
		<category><![CDATA[PixelInvaders]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1341</guid>
		<description><![CDATA[PixelController gets better and better and I’ve even managed to create a Video showing the OSC Gui on my Xoom tablet. I’m using the Control Application by Charlie Roberts in my Video: Oh and if you’re asking yourself, where the OSC Gui definitions are, check this link.]]></description>
			<content:encoded><![CDATA[<p><a href="https://github.com/neophob/PixelController">PixelController</a> gets better and better and I’ve even managed to create a Video showing the OSC Gui on my Xoom tablet. I’m using the <a href="http://charlie-roberts.com/Control/">Control Application by Charlie Roberts</a> in my Video:</p>
<p><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=32580251&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=32580251&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="520" height="290"></embed></object></p>
<p>Oh and if you’re asking yourself, where the OSC Gui definitions are, <a href="https://github.com/neophob/PixelController/blob/master/data/OSC/002.js">check this link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/11/pixelcontroller-showcase-video-osc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSD Disk AGILITY3 on MacBook, Link Speed issues</title>
		<link>http://neophob.com/2011/11/ssd-disk-agility3-on-macbook-link-speed-issues/</link>
		<comments>http://neophob.com/2011/11/ssd-disk-agility3-on-macbook-link-speed-issues/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 17:42:03 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Mac OSX hints]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[OCZ]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[SATA]]></category>
		<category><![CDATA[SSD]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1331</guid>
		<description><![CDATA[I own a Macbook (End 2008, MacBook5,1) and after I updated from Snow Leopard to Lion my System getting slower and slower. Thats why I wanted to replace my old HDD with a fancy new SSD disk. I bought a OCZ-AGILITY3 (Firmware 2.13) SSD Disk. I created a OSX Lion Boot DVD (re-downloaded it from [...]]]></description>
			<content:encoded><![CDATA[<p>I own a Macbook (End 2008, MacBook5,1) and after I updated from Snow Leopard to Lion my System getting slower and slower. Thats why I wanted to replace my old HDD with a fancy new SSD disk. I bought a OCZ-AGILITY3 (Firmware 2.13) SSD Disk. </p>
<p>I created a OSX Lion Boot DVD (<a href="http://osxdaily.com/2011/08/02/re-download-mac-os-x-lion-from-app-store/">re-downloaded it from the App Store</a>) to reinstall OSX.<br />
After swapping the disks I pressed the <strong>d</strong> key to boot from DVD. 25 Minutes later my OSX Lion was reinstalled, time to do some tweaks to <a href="http://poller.se/2010/08/optimizing-mac-os-x-for-ssd-drives/">optimize OSX for SSD drivers</a>.</p>
<p>I installed some tools and noticed that the system was faster, but not THAT faster. In the System information view I saw that the negotiated SATA Link Speed was only 1.5Gbps (SATA1), however my NVidia MCP79 Controller should support 3Gbps (SATA2). After some research I found <a href="http://www.ocztechnologyforum.com/forum/showthread.php?96106-Macbook-users-with-1.5Gb-s-link-instead-of-3Gb-s-link&#038;p=695128&#038;viewfull=1#post695128">the solution for the SATA 1.5 Link issue</a> in a OCZ support forum. I downloaded an ISO image from <a href="https://rapidshare.com/files/892490026/OCZ_MAC.zip">Rapidshare</a> (!!) and patched my SSD drive. The result was very impressive! My boot time is less than 15s and man, I never saw the Eclipse IDE start so fast.</p>
<p>I used <a href="http://www.xbench.com/">XBench</a> to create some Benchmarks. I created some benchmark with <a href="http://db.xbench.com/merge.xhtml?doc1=558611&#038;doc2=558541">1.5Gbps link (blue) and with the 3.0Gbps link (red), see yourself</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/11/ssd-disk-agility3-on-macbook-link-speed-issues/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maven 3 is evil</title>
		<link>http://neophob.com/2011/11/maven-3-is-evil/</link>
		<comments>http://neophob.com/2011/11/maven-3-is-evil/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 23:06:21 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[mvn]]></category>
		<category><![CDATA[sonatype]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1320</guid>
		<description><![CDATA[After I reinstalled my MacBook on my brand new SSD disk, I discovered that maven v3.0.3 was installed with the Java bundle. I tried to build PixelController which was working fine using maven v2.1.x. Of course, compiling failed now using maven v3.0.3: 12345678910111213[WARNING] The POM for compartmental.net:minim-spi:jar:2.0.2 is missing, no dependency information available [WARNING] The [...]]]></description>
			<content:encoded><![CDATA[<p>After I reinstalled my MacBook on my brand new SSD disk, I discovered that maven v3.0.3 was installed with the Java bundle. I tried  to build <a href="https://github.com/neophob/PixelController">PixelController</a> which was working fine using maven v2.1.x. Of course, compiling failed now using maven v3.0.3:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[WARNING] The POM for compartmental.net:minim-spi:jar:2.0.2 is missing, no dependency information available<br />
[WARNING] The POM for compartmental.net:tritonus_aos:jar:2.0.2 is missing, no dependency information available<br />
[WARNING] The POM for compartmental.net:tritonus_share:jar:2.0.2 is missing, no dependency information available<br />
[WARNING] The POM for com.neophob:processing-blinkenlight:jar:0.5 is missing, no dependency information available<br />
[WARNING] The POM for artnet4j:artnet4j:jar:0001 is missing, no dependency information available<br />
[INFO] ————————————————————————<br />
[INFO] BUILD FAILURE<br />
[INFO] ————————————————————————<br />
[INFO] Total time: 1.344s<br />
[INFO] Finished at: Tue Nov 15 23:36:35 CET 2011<br />
[INFO] Final Memory: 4M/81M<br />
[INFO] ————————————————————————<br />
[ERROR] Failed to execute goal on project PixelController: Could not resolve dependencies for project neophob.com:PixelController:jar:1.1.1-SNAPSHOT: The following artifacts could not be resolved: net.sourceforge.jargs:jargs:jar:1.0, org.processing:core:jar:1.2.1, org.processing:net:jar:1.2.1, org.processing:pde:jar:1.2.1, org.processing:serial:jar:1.2.1, org.qbang:rxtx:jar:2.2pre5, compartmental.net:minim:jar:2.0.2, compartmental.net:jsminim:jar:2.0.2, compartmental.net:minim-spi:jar:2.0.2, compartmental.net:tritonus_aos:jar:2.0.2, compartmental.net:tritonus_share:jar:2.0.2, com.neophob:processing-blinkenlight:jar:0.5, artnet4j:artnet4j:jar:0001: Failure to find net.sourceforge.jargs:jargs:jar:1.0 in http://download.java.net/maven/2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven2-repository.java.net has elapsed or updates are forced -&gt; [Help 1]</div></td></tr></tbody></table></div>
<p>I use the maven-instal-plugin to deploy some I-did-not-find-them-in-public-repos libraries, the pom.xml looks like this:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">            &lt;plugin&gt;<br />
                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />
                &lt;artifactId&gt;maven-install-plugin&lt;/artifactId&gt;<br />
                &lt;version&gt;2.3.1&lt;/version&gt;<br />
                &lt;executions&gt;<br />
                    &lt;execution&gt;<br />
                        &lt;id&gt;blinkenlights.jar&lt;/id&gt;<br />
                        &lt;configuration&gt;<br />
                            &lt;file&gt;lib/blinkenlights.jar&lt;/file&gt;<br />
                            &lt;groupId&gt;com.neophob&lt;/groupId&gt;<br />
                            &lt;artifactId&gt;processing-blinkenlight&lt;/artifactId&gt;<br />
                            &lt;version&gt;0.5&lt;/version&gt;<br />
                            &lt;packaging&gt;jar&lt;/packaging&gt;<br />
                        &lt;/configuration&gt;<br />
                        &lt;phase&gt;initialize&lt;/phase&gt;<br />
                        &lt;goals&gt;<br />
                            &lt;goal&gt;install-file&lt;/goal&gt;<br />
                        &lt;/goals&gt;<br />
                    &lt;/execution&gt;</div></td></tr></tbody></table></div>
<p>Now long story short I found a bug entry on <a href="http://jira.codehaus.org/browse/MNG-5087">jira</a> which was not directly<br />
related to my issue. However due lack of options I thought lets update the <a href="http://aether.sonatype.org/">aether</a> libraries on my system. Maven v3.0.3 uses v1.11 while v1.13 is currently the latest version. Delete all v1.11 jar files and replace’em with a v1.13. Now maven works as it should. Or wait for Maven v3.0.4…</p>
<p>Aether binaries: <a href="http://repo1.maven.org/maven2/org/sonatype/aether/">http://repo1.maven.org/maven2/org/sonatype/aether/</a><br />
OSX Maven v3.0.3 library path: /usr/share/java/maven-3.0.3/lib</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/11/maven-3-is-evil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PixelController — Universal OpenSource Light Control Solution</title>
		<link>http://neophob.com/2011/09/pixelcontroller-universal-opensource-light-control-solution/</link>
		<comments>http://neophob.com/2011/09/pixelcontroller-universal-opensource-light-control-solution/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 19:44:33 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[PixelController]]></category>
		<category><![CDATA[PixelInvaders]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1219</guid>
		<description><![CDATA[PixelController is a real time video/VJ generator and mixer software. Most of the Visuals are generated and mixed in realtime and respond to the environment. I use PixelController to control my PixelInvaders Panels. PixelController supports well-known industry and OpenSource standards, such as Art-Net, Mini-DMX, LPD6803 and Seeedstudio’s Rainbowduino. It is quite simple to support more [...]]]></description>
			<content:encoded><![CDATA[<p><strong>PixelController</strong> is a real time video/VJ generator and mixer software. Most of the Visuals are generated and mixed in realtime and respond to the environment. I use PixelController to control my <a href="http://neophob.com/2011/08/pixelinvaders-3d-rgb-led-panels/">PixelInvaders</a> Panels.</p>
<p><strong>PixelController</strong> supports well-known industry and OpenSource standards, such as Art-Net, Mini-DMX, LPD6803 and Seeedstudio’s Rainbowduino. It is quite simple to support more standards protocols like WS2801, HL1606 etc. </p>
<p>If the <strong>PixelController</strong> software is launched, two windows are displayed. The first window shows the internal debug buffer while the second shows the simulated output matrix.</p>
<p>The <strong>internal imagebuffer</strong> in this example shows three different visuals. The number of visuals displayed corresponds to the configured output:<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/09/PixelControllerBufferX.png" alt="" title="PixelControllerBuffer2" class="alignnone size-full wp-image-1269" /></center></p>
<p>The <strong>simulated output matrix</strong> window shows the first Visual stretched over two matrices:<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/09/PixelControllerMatrixX.png" alt="" title="PixelControllerMatrix" class="alignnone size-full wp-image-1258" /></center></p>
<p>There are different possibilities to control PixelController, one of them is the <strong>PureData frontend</strong>:<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/09/PixelControllerGuiX.png" alt="" title="PixelControllerGui" class="alignnone size-full wp-image-1263" /></center></p>
<p>Another possibility to control PixelController, using the <strong>simple TCP protocol</strong> with NetCat:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#  nc 127.0.0.1 3448<br />
RANDOMIZE;<br />
CHANGE_TINT 31 33 7;<br />
CHANGE_ALL_OUTPUT_EFFECT 3;<br />
CHANGE_ALL_OUTPUT_VISUAL 1;</div></td></tr></tbody></table></div>
<p> <br /> <br /> </p>
<blockquote><p>How to get PixelController?</p></blockquote>
<p>PixelController is hosted on GitHub, so</p>
<ul>
<li><a href="https://github.com/neophob/PixelController">Browse the Source</a></li>
<li>or download a <a href="https://github.com/downloads/neophob/PixelController/PixelController-1.0.3.zip">version 1.0.3</a></li>
<li>or check <a href="http://pixelinvaders.ch">PixelInvaders Website</a> for more information</li>
</ul>
<p> <br /> <br /> </p>
<blockquote><p>Technical Specs</p></blockquote>
<p>More information about PixelController.<br />
<strong>Generators:</strong></p>
<ul>
<li>Blinkenlights Movie Player</li>
<li>Image Viewer</li>
<li>Simple Plasma</li>
<li>Simple Colors</li>
<li>Fire</li>
<li>Metaballs</li>
<li>Pixelimage</li>
<li>Texture Deformation</li>
<li>Textwriter</li>
<li>Image zoomer</li>
<li>Cell</li>
<li>Plasma Two</li>
<li>FFT</li>
<li>Bubble</li>
</ul>
<p><strong>Effects:</strong></p>
<ul>
<li>Inverter</li>
<li>Rotozoomer</li>
<li>Horizontal Beat Shifter</li>
<li>Vertical Beat Shifter</li>
<li>Voluminize</li>
<li>Tine</li>
<li>Threshold</li>
<li>Emboss</li>
</ul>
<p><strong>Mixer:</strong></p>
<ul>
<li>Add Saturation</li>
<li>Multiply</li>
<li>Mix</li>
<li>Negative Multiply</li>
<li>Checkbox</li>
<li>Voluminizer</li>
<li>Xor</li>
<li>Minus Half</li>
<li>Either</li>
</ul>
<p><strong>Fader:</strong></p>
<ul>
<li>Switch</li>
<li>Crossfade</li>
<li>Slide Upside Down</li>
<li>Slide Left Right</li>
</ul>
<p><strong>Resizer:</strong></p>
<ul>
<li>Pixel Resizer</li>
<li>Quality Resizer</li>
</ul>
<p><strong>How to control the Software:</strong></p>
<ul>
<li>PureData Frontend</li>
<li>OSC Server/Client</li>
<li>MIDI Device/Signal</li>
<li>Command Line Interface</li>
<li>Simple TCP Interface</li>
<li>Audio input</li>
</ul>
<p><strong>Operation Mode:</strong></p>
<ul>
<li>Manual</li>
<li>Automatic aka. Randomizer</li>
<li> Predefined settings </li>
</ul>
<p><strong>Supported Operating Systems:</strong></p>
<ul>
<li>Microsoft Windows</li>
<li>Apple OSX</li>
<li>Linux</li>
<li>Every OS that supports a JRE</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/09/pixelcontroller-universal-opensource-light-control-solution/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>PixelInvaders 3D RGB LED Panels</title>
		<link>http://neophob.com/2011/08/pixelinvaders-3d-rgb-led-panels/</link>
		<comments>http://neophob.com/2011/08/pixelinvaders-3d-rgb-led-panels/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 19:46:36 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Midi]]></category>
		<category><![CDATA[OSC]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[teensy]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1189</guid>
		<description><![CDATA[After several month of working on my PixelInvaders 3D RGB Panels I finally reached my goal: a huge and easy to assemble RGB LED Panel. Besides the hardware, the control software was a big task. I created PixelController, a modular software written in Java and released as OpenSource on GitHub. The frontend is written as [...]]]></description>
			<content:encoded><![CDATA[<p>After several month of working on my <strong>PixelInvaders 3D RGB Panels</strong> I finally reached my goal: a huge and easy to assemble RGB LED Panel.</p>
<p>Besides the hardware, the control software was a big task. I created PixelController, a modular software written in Java and released as <strong>OpenSource</strong> on GitHub.<br />
The frontend is written as a PureData Sketch. That means you can easily adapt the frontend and use <strong>OSC applications</strong> (like TouchOSC) or <strong>Midi devices</strong> (like Akai MPD26) to control the software.</p>
<p>Here’s a picture of two PixelInvaders panels, controlled by an Akai MPD26:<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/08/f1540224.jpg" alt="" title="Two PixelInvaders Panels in action" width="550" height="825" class="alignnone size-full wp-image-1194" /><br />
</center></p>
<p>Two PixelInvaders Panels in action:<br /><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=27453711&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=27453711&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="520" height="290"></embed></object></p>
<p>More information / Links:</p>
<ul>
<li>I set up the project site at <a href="http://www.pixelinvaders.ch">»www.pixelinvaders.ch</a></li>
<li>The <a href="https://github.com/neophob/PixelController">»PixelController project on GitHub</a></li>
<li>I you need such a panel (and who does not?) you can easily <a href="http://igg.me/p/31640?a=167555&#038;i=shlk">»get one at my IndieGOGO campaign</a></li>
</ul>
<blockquote><p>Spread the word, I need support for my Indiegogo campaign!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/08/pixelinvaders-3d-rgb-led-panels/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LPD6803 Tutorial, Part 2: Simple VU Meter</title>
		<link>http://neophob.com/2011/06/lpd6803-tutorial-part-2-simple-vu-meter/</link>
		<comments>http://neophob.com/2011/06/lpd6803-tutorial-part-2-simple-vu-meter/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 20:46:55 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Led]]></category>
		<category><![CDATA[LPD6803]]></category>
		<category><![CDATA[Processing]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1120</guid>
		<description><![CDATA[Make sure you read Part 1 of this tutorial. In this tutorial we use a strand of 20 LPD6803 RGB LED as huge VU Meter. Processing will send serial data to the Arduino which will display it.     The source can be found on my GitHub site. Check out my PixelInvaders Shop if you [...]]]></description>
			<content:encoded><![CDATA[<p>Make sure you read <a href="http://neophob.com/2011/06/lpd6803-tutorial-part-1-basics/">Part 1 of this tutorial</a>.</p>
<p>In this tutorial we use a strand of 20 LPD6803 RGB LED as huge VU Meter. <a href="http://processing.org/">Processing</a> will send serial data to the Arduino which will display it.</p>
<p> <br />
<img class="alignnone size-full wp-image-1179" title="DIY-VU-Meter" src="http://neophob.com/wp-content/uploads/2011/06/DIY-VU-Meter.png" alt="" width="322" height="498" /><br />
 </p>
<p>The source can be found on <a href="https://github.com/neophob/LPD6803-RGB-Pixels/tree/master/examples/vumeter">my GitHub site</a>.</p>
<p><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=25734660&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=25734660&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="520" height="290"></embed></object></p>
<p>Check out my <a href="http://pixelinvaders.ch/?page_id=171">PixelInvaders Shop if you want to buy some LED strands</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/06/lpd6803-tutorial-part-2-simple-vu-meter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LPD6803 (Intelligent RGB Pixel Module) Tutorial, Part 1: Basics</title>
		<link>http://neophob.com/2011/06/lpd6803-tutorial-part-1-basics/</link>
		<comments>http://neophob.com/2011/06/lpd6803-tutorial-part-1-basics/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 20:16:04 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Led]]></category>
		<category><![CDATA[LPD6803]]></category>
		<category><![CDATA[RGB]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1118</guid>
		<description><![CDATA[An LPD6803 based LED module is an “intelligent” pixel, it can memorize its color and passthrough the data and power connection. This means you can drive a lot (several thousand) intelligent pixels with just 4 cables (2x power and 2x data). Take a look at ladyada’s very informative post about the LPD6803 module. So where [...]]]></description>
			<content:encoded><![CDATA[<p>An LPD6803 based LED module is an “intelligent” pixel, it can memorize its color and passthrough the data and power connection. This means you can drive a lot (several thousand) intelligent pixels with just 4 cables (2x power and 2x data).</p>
<p>Take a look at <a href="http://www.ladyada.net/products/rgbledpixel/">ladyada’s very informative post about the LPD6803</a> module.</p>
<p><center><img src="http://neophob.com/wp-content/uploads/2011/06/lpd6803-1.jpg" alt="" title="An LPD6803 Module - aka Intelligent Pixel" width="500" height="221" class="alignnone size-full wp-image-1128" /></center></p>
<p>So where to <a href="http://pixelinvaders.ch/?page_id=171">buy</a> these Intelligent, LPD6803 based Pixels? At my <a href="http://pixelinvaders.ch/?page_id=171">PixelInvaders Shop</a> for example!</p>
<p><strong>Needed Hardware:</strong></p>
<ul>
<li>An Arduino Compatible Board</li>
<li>A 12V Power supply (an <a href="http://www.wikihow.com/Convert-a-Computer-ATX-Power-Supply-to-a-Lab-Power-Supply">old ATX Power supply</a> is perfectly fine)</li>
<li>A strand of some LPD6803 based LED modules</li>
<li>Some cables to connect the LPD6803 module</li>
</ul>
<p>I had some cardboard angle laying around an thought, why not build a DIY Wall Washer.<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/06/DIY-Wallwasher.png" alt="" title="DIY-Wallwasher" width="600" height="136" class="alignnone size-full wp-image-1133" /></center><br />
And here is the result:<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/06/DIY-Wallwasher2.png" alt="" title="DIY-Wallwasher2" width="600" height="317" class="alignnone size-full wp-image-1135" /></center> <br />
The wiring is very easy, take a look at this wiring diagram done by ladyada:<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/06/arduinowiring.jpg" alt="" title="arduinowiring" width="576" height="467" class="alignnone size-full wp-image-1139" /></center><br />
Connect pin 2 (yellow) to the <strong>green</strong> color of the LPD6803 Module.<br />
Connect pin 3 (green) to the <strong>blue</strong> color of the LPD6803 Module.<br />
Red is V+, Black is GND.</p>
<p><strong>Links:</strong><br />
<a href="http://pixelinvaders.ch/?page_id=171">- LPD6803 LED module shop</a><br />
<a href="https://github.com/neophob/LPD6803-RGB-Pixels">- All source files on GitHub</a></p>
<p>Two Videos showing the Wall Washer in action. <strong>Note</strong>: The Wall Washer looks brighter in reality.<br /><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=25519989&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=25519989&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="520" height="290"></embed></object></p>
<p><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=25520434&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=25520434&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="520" height="290"></embed></object></p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/06/lpd6803-tutorial-part-1-basics/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Free shopping platforms</title>
		<link>http://neophob.com/2011/06/free-shopping-platforms/</link>
		<comments>http://neophob.com/2011/06/free-shopping-platforms/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 17:53:11 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[hosted]]></category>
		<category><![CDATA[shopping]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1105</guid>
		<description><![CDATA[I’m looking for a hosted, nice looking, easy to use and free shop system — but that’s easier said than done! I still didn’t found THE shop, here is my list http://www.shopify.com — not free, used as reference http://www.foxycart.com/ — only free during development http://www.vendder.com/ — nice looking, i18n http://www.39shops.com — nice looking, payment process [...]]]></description>
			<content:encoded><![CDATA[<p>I’m looking for a hosted, nice looking, easy to use and free shop system — but that’s easier said than done! I still didn’t found THE shop, here is my list</p>
<p><a href="http://www.shopify.com">http://www.shopify.com</a> — not free, used as reference</p>
<p><a href="http://www.foxycart.com/">http://www.foxycart.com/</a> — only free during development<br />
<a href="http://vendder.com/?aff=pixelinvaders">http://www.vendder.com/</a> — nice looking, i18n<br />
<a href="http://www.39shops.com">http://www.39shops.com</a> — nice looking, payment process it too painfull (region, taxes…)<br />
<a href="http://tinypay.me/">http://tinypay.me/</a> — nice looking<br />
<a href="http://wosbee.com/">http://wosbee.com/</a> — looks ugly — didn’t try<br />
<a href="http://yokaboo.com/">http://yokaboo.com/</a> — only one image per product — didn’t try<br />
<a href="http://bigcartel.com">http://bigcartel.com</a> — 5 products and one image per product — didn’t try<br />
<a href="http://www.pipfrog.com">http://www.pipfrog.com</a> — limit monthly visits to 3000 views — didn’t try</p>
<p><a href="http://simplecartjs.com/">http://simplecartjs.com/</a> — js solution</p>
<p>do <strong>YOU</strong> have some alternatives?</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/06/free-shopping-platforms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Serial library rxtx v2.2pre5</title>
		<link>http://neophob.com/2011/05/serial-library-rxtx-v2-2pre5/</link>
		<comments>http://neophob.com/2011/05/serial-library-rxtx-v2-2pre5/#comments</comments>
		<pubDate>Wed, 25 May 2011 19:03:22 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[latency]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[Serial]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1088</guid>
		<description><![CDATA[This is another rxtx library release based on my previous release. This new version improves the “serial event callback function” and thus reduce the library latency enormous — for more information read THIS article. So whats the use of this updated library? For example, talk to your Arduino up to 10 times faster with the [...]]]></description>
			<content:encoded><![CDATA[<p>This is another rxtx library release based on my <a href="http://neophob.com/2010/07/serial-library-rxtx-v2-2pre3/">previous release</a>. This new version improves the “serial event callback function” and thus reduce the library latency enormous — for more information <a href="http://neophob.com/2011/04/serial-latency-teensy-vs-arduino/">read THIS article</a>.<br />
So whats the use of this updated library? For example, talk to your Arduino up to 10 times faster with the new library.</p>
<p>Download my modified source <a href="http://neophob.com/files/rxtx-2.2pre5-src.zip">rxtx-2.2pre5-src.zip</a><br />
and the Windows and MacOSX binaries <a href="http://neophob.com/files/rxtx-2.2pre5-bin.zip">rxtx-2.2pre5-bin.zip</a></p>
<p>Here is the <a href="http://neophob.com/files/rxtx-pre5.patch">cvs diff</a>.</p>
<p>Build RXTX library for Windows — make sure you installed Visual Studio Express.</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools&gt;vsvars32.bat<br />
Setting environment for using Microsoft Visual Studio 2010 x86 tools.<br />
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools&gt;cd c:\rxtx-devel\<br />
<br />
C:\rxtx-devel&gt; mkdir build<br />
C:\rxtx-devel&gt; copy Makefile.msvc build\Makefile<br />
C:\rxtx-devel&gt; cd build<br />
C:\rxtx-devel\build&gt; set path=%PATH%;“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin“<br />
<br />
# EDIT Makefile and correct path variables<br />
<br />
C:\rxtx-devel\build&gt; nmake serial</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/05/serial-library-rxtx-v2-2pre5/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Serial Latency: Teensy vs. Arduino</title>
		<link>http://neophob.com/2011/04/serial-latency-teensy-vs-arduino/</link>
		<comments>http://neophob.com/2011/04/serial-latency-teensy-vs-arduino/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 22:09:31 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[latency]]></category>
		<category><![CDATA[teensy]]></category>

		<guid isPermaLink="false">http://neophob.com/?p=1025</guid>
		<description><![CDATA[Paul Stoffregen was kind enough to send my a free Teensy 2.0 sample board to analyze the Arduino serial latency issue — and this board is shocking small: We wrote a very simple firmware to perform some basic benchmarks — Paul wrote a simple c tool to measure the native latency, I wrote a simple [...]]]></description>
			<content:encoded><![CDATA[<p>Paul Stoffregen was kind enough to send my a free <a href="http://www.pjrc.com/store/teensy.html">Teensy 2.0</a> sample board to analyze the Arduino <a href="http://neophob.com/2011/02/low-latency-serial-arduino/">serial latency issue</a> — and this board is shocking small:<br />
<center><img src="http://neophob.com/wp-content/uploads/2011/04/duinos.png" alt="" title="duinos" width="530" height="400" class="alignnone size-full wp-image-1034" /><br />
</center></p>
<p>We wrote a very simple firmware to perform some basic benchmarks — Paul wrote a simple c tool to measure the native latency, I wrote a simple tool in Java using rxtx lib to measure the latency in Java. </p>
<p>Long story short, here are the results:<br />
<center><br />
<img src="http://neophob.com/wp-content/uploads/2011/04/serial-latency1.png" alt="" title="serial-latency" width="530" height="300" class="alignnone size-full wp-image-1038" /><br />
</center></p>
<p><strong>Hint:</strong> These results are made on my MacBook (Model 5,1), Intel Core 2 Duo, 2GHz, uname output: “Darwin xxx 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386”</p>
<p>Conclusion:</p>
<ul>
<li>Java latency is at least 20ms</li>
<li>The Arduino UNO may be slower than the Arduino 2009 if small a amount of serial bytes (<12b) are transferred</li>
<li>The Teensy 2.0 board may be up to 18 times faster than an Arduino board</li>
</ul>
<p>So this 20ms latency using the rxtx library looks quite promising… hmm take a look at this code snipped from the file <strong>SerialImp.c</strong>:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">void report_serial_events( struct event_info_struct *eis )<br />
{<br />
    /* JK00: work around for Multi IO cards without TIOCSERGETLSR */<br />
<br />
&lt;…&gt;<br />
<br />
            usleep(20000);<br />
#if !defined(__sun__)<br />
    /* FIXME: No time to test on all OS’s for production */<br />
            usleep(20000);<br />
#endif /* !__sun__ */<br />
            return;<br />
        }<br />
        report(“report_serial_events: sending DATA_AVAILABLE\n”);<br />
        if(!send_event( eis, SPE_DATA_AVAILABLE, 1 ))<br />
        {<br />
            /* select wont block */<br />
    /* FIXME: No time to test on all OS’s for production */<br />
/* REMOVE goes around usleep */<br />
#if !defined(__sun__)<br />
#endif /* !__sun__ */<br />
        }<br />
        usleep(20000);<br />
    }<br />
}</div></td></tr></tbody></table></div>
<blockquote><p>Replace this 20’000ms delay with a shorter (I used 2000ms), recompile and enjoy decreased latency!</p></blockquote>
<p><strong>Files</strong> used for this article:<br />
<a href="http://neophob.com/files/latency-test.zip">- Performance test files</a><br />
<a href="http://neophob.com/files/rxtx-test-lowlatency.zip">- RXTX TEST library, only 64b Mac OSX!</a></p>
<p>The rxtx lib is not very well tested (not at all!) — so leave a feedback if the lib is working fine for you!</p>
<p>Anyway, here are the results on OSX with the patched rxtx library:<center><img src="http://neophob.com/wp-content/uploads/2011/04/serial-latency2.png" alt="" title="serial-latency2" width="530" height="300" class="alignnone size-full wp-image-1084" /></center></p>
<p><hl/><br />
<strong>Update 16.05.2011:</strong><br />
Paul did some <a href="http://arduino.cc/forum/index.php/topic,59892.0.html">more native performance tests</a>, here are the results:<center><img src="http://neophob.com/wp-content/uploads/2011/04/teensyLinux.png" alt="" title="teensyLinux" width="321" height="285" class="alignnone size-full wp-image-1090" /><br />
<img src="http://neophob.com/wp-content/uploads/2011/04/teensyWin.png" alt="" title="teensyWin" width="341" height="281" class="alignnone size-full wp-image-1091" /><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/04/serial-latency-teensy-vs-arduino/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Low Latency Serial Arduino?</title>
		<link>http://neophob.com/2011/02/low-latency-serial-arduino/</link>
		<comments>http://neophob.com/2011/02/low-latency-serial-arduino/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 23:32:52 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[PureData]]></category>

		<guid isPermaLink="false">http://www.neophob.com/?p=1002</guid>
		<description><![CDATA[I use Processing to control my Arduino — an easy and working solution. However if you need to send alot data to the Arduino, you’ll notice a 20ms delay between sending (120 bytes) and receieving (16 bytes) a serial message. After playing around with the rxtx Library (changed some timeouts, JNI version…) I guess the [...]]]></description>
			<content:encoded><![CDATA[<p>I use <a href="http://www.processing.org/">Processing</a> to control my <a href="http://www.arduino.cc/">Arduino</a> — an easy and working solution. However if you need to send alot data to the Arduino, you’ll notice a 20ms delay between sending (120 bytes) and receieving (16 bytes) a serial message. After playing around with the <a href="http://rxtx.qbang.org/">rxtx Library</a> (changed some timeouts, JNI version…) I guess the bottleneck is the Java JNI call.</p>
<p>While the serial interface is not a part of the JRE (anymore), the network stack is. This means we can send network packets at full speed. And there should be some Network to Serial tools available for my Mac OSX. <strong>Nope</strong>! I found plenty of such tools, but not a single one was working:</p>
<p>First I checked the Arduino Playground about <a href="http://www.arduino.cc/playground/Code/SerialIP">SerialIP</a>. A Serial IP library for the Arduino exist — but I couldn’t find a SLIP utility for Mac OSX 10.6.6. There was once <a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/10.5/man8/slattach.8.html">slattach</a> — but only for pre OSX 10.6. I compiled the source myself without success.</p>
<p>The next step was another Arduino Playground wiki entry, about <a href="http://www.arduino.cc/playground/Interfacing/SerialNet">SerialNet</a>. To make the long story short, here are the tools I tried without success:</p>
<ul>
<li>nc –l –p 4443 –D &lt; /dev/tty.usbmodem621 &gt; /dev/tty.usbmodem621</li>
<li>./<a href="http://sourceforge.net/projects/ser2net/">ser2net</a> –C “3001:raw:0:/dev/tty.usbmodem621:115200 NONE 1STOPBIT 8DATABITS –XONXOFF –LOCAL –RTSCTS”</li>
<li><a href="http://www.dest-unreach.org/socat/">socat</a> –d –d –d –x –s –t 30 TCP-LISTEN:4441 GOPEN:/dev/tty.usbmodem621,raw,ispeed=115200,ospeed=115200,ignoreeof</li>
<li><a href="http://code.google.com/p/tinkerit/wiki/TinkerProxy">Tinkerproxy</a> v2.0</li>
</ul>
<p>Socat v1.7.1.3 <strong>hints</strong>: the “nonblock” option for the serial device resulted in a “tcsetattr(3, TCSADRAIN, 0x7fff5fbfefd0): Invalid argument” error, I guess this operation is not supported by the OS. Gerhard gave me another hint, that I should use the GOPEN address type (I was using the PTY address type — this *should* create a new PTY and not open an existing one. This is a bug in the v1.7.1.3 version).</p>
<p>Disclaimer: Maybe I was just too stupid to use those tools correct…</p>
<p>The solution was a bit funky — I created a <a href="http://puredata.info/">PureData</a> patch. Whats PureData?</p>
<blockquote><p>PureData is a real-time graphical programming environment for audio, video, and graphical processing.</p></blockquote>
<p>But you can use it as network-to-serial relay too. Here is my patch as image:<br />
<center><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2011/02/pd-tcp2serial.png" alt="" title="pd-tcp2serial" width="385" height="359" class="aligncenter size-full wp-image-1021" /></center></p>
<p>You may <a href="http://www.neophob.com/files/pd-tcpserver.pd.zip">download the patch here</a>. Features of the v0.1 release:</p>
<ul>
<li>Autoconnect Serial Port</li>
<li>Autoconnect back to your listening Server</li>
<li>TCP and UDP supported (replace tcpreceive with udpreceive and tcpsend with udpsend)</li>
</ul>
<p>Here is the processing sketch I used to test my solution:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.net.*</span><span style="color: #339933;">;</span><br />
<br />
Client c<span style="color: #339933;">;</span><br />
Server myServer<span style="color: #339933;">;</span><br />
<br />
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
  frameRate<span style="color: #009900;">(</span><span style="color: #cc66cc;">200</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  myServer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Server<span style="color: #009900;">(</span><span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #cc66cc;">7777</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  c <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Client<span style="color: #009900;">(</span><span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #0000ff;">“127.0.0.1″</span>, <span style="color: #cc66cc;">7778</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Connect to server on port 80</span><br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
  <span style="color: #000066; font-weight: bold;">long</span> l1 <span style="color: #339933;">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">currentTimeMillis</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  <span style="color: #000066; font-weight: bold;">byte</span> buf<span style="color: #009900;">[</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">[</span><span style="color: #cc66cc;">70</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
  buf<span style="color: #009900;">[</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">]</span><span style="color: #339933;">=</span>0x01<span style="color: #339933;">;</span><br />
  buf<span style="color: #009900;">[</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">]</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
  buf<span style="color: #009900;">[</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">]</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">64</span><span style="color: #339933;">;</span><br />
  buf<span style="color: #009900;">[</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">]</span><span style="color: #339933;">=</span>0x03<span style="color: #339933;">;</span><br />
  buf<span style="color: #009900;">[</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">]</span><span style="color: #339933;">=</span>0x10<span style="color: #339933;">;</span><br />
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> j<span style="color: #339933;">=</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span> j<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">)</span> buf<span style="color: #009900;">[</span>j<span style="color: #009900;">]</span><span style="color: #339933;">=</span>0x20<span style="color: #339933;">;</span><br />
  c.<span style="color: #006633;">write</span><span style="color: #009900;">(</span>buf<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  print<span style="color: #009900;">(</span><span style="color: #0000ff;">“SEND “</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  <br />
  Client thisClient<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
  <span style="color: #000066; font-weight: bold;">boolean</span> gotData<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
  <span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
  <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">(</span><span style="color: #339933;">!</span>gotData<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    thisClient <span style="color: #339933;">=</span> myServer.<span style="color: #006633;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">(</span>thisClient<span style="color: #339933;">!=</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">(</span>thisClient.<span style="color: #006633;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
        gotData <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span><br />
      <span style="color: #009900;">}</span><br />
    <span style="color: #009900;">}</span> <br />
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">{</span><br />
      i<span style="color: #339933;">++;</span><br />
      delay<span style="color: #009900;">(</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">(</span>i<span style="color: #339933;">==</span><span style="color: #cc66cc;">30</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
        println<span style="color: #009900;">(</span><span style="color: #0000ff;">“noreply!”</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
        <span style="color: #000000; font-weight: bold;">return</span><span style="color: #339933;">;</span><br />
      <span style="color: #009900;">}</span><br />
    <span style="color: #009900;">}</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  println<span style="color: #009900;">(</span><span style="color: #0000ff;">“incomming serial data “</span><span style="color: #339933;">+</span>thisClient.<span style="color: #006633;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">+</span><span style="color: #0000ff;">” bytes after “</span><span style="color: #339933;">+</span><span style="color: #009900;">(</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">currentTimeMillis</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">-</span>l1<span style="color: #009900;">)</span><span style="color: #339933;">+</span><span style="color: #0000ff;">“ms”</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">(</span>thisClient<span style="color: #339933;">!=</span><span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">&amp;&amp;</span> thisClient.<span style="color: #006633;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    <span style="color: #000066; font-weight: bold;">int</span> b <span style="color: #339933;">=</span> thisClient.<span style="color: #006633;">read</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
    <span style="color: #666666; font-style: italic;">//print(“0x”+Integer.toHexString(b)+”, ”);</span><br />
  <span style="color: #009900;">}</span><br />
  <span style="color: #666666; font-style: italic;">//  println();</span><br />
<span style="color: #009900;">}</span></div></td></tr></tbody></table></div>
<p>And this is the Arduino Sketch:</p>
<div class="codecolorer-container c twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">#include &lt;TimerOne.h&gt;</span><br />
<br />
<span style="color: #339933;">#define BAUD_RATE 115200</span><br />
<br />
<span style="color: #666666; font-style: italic;">//— protocol data start</span><br />
<span style="color: #339933;">#define CMD_START_BYTE  0x01</span><br />
<span style="color: #339933;">#define CMD_SENDFRAME 0x03</span><br />
<br />
<span style="color: #339933;">#define START_OF_DATA 0x10</span><br />
<span style="color: #339933;">#define END_OF_DATA 0x20</span><br />
<br />
<span style="color: #666666; font-style: italic;">//frame size for specific color resolution</span><br />
<span style="color: #339933;">#define COLOR_5BIT_FRAME_SIZE 64</span><br />
<span style="color: #339933;">#define SERIAL_HEADER_SIZE 5</span><br />
<span style="color: #666666; font-style: italic;">//— protocol data end</span><br />
<br />
<span style="color: #339933;">#define SERIAL_DELAY_LOOP 3</span><br />
<span style="color: #339933;">#define SERIAL_WAIT_DELAY 3</span><br />
<br />
<span style="color: #666666; font-style: italic;">//this should match RX_BUFFER_SIZE from HardwareSerial.cpp</span><br />
byte serInStr<span style="color: #009900;">[</span>COLOR_5BIT_FRAME_SIZE<span style="color: #339933;">+</span>SERIAL_HEADER_SIZE<span style="color: #009900;">]</span><span style="color: #339933;">;</span>                     <span style="color: #666666; font-style: italic;">// array that will hold the serial input string</span><br />
<br />
<span style="color: #339933;">#define SERIALBUFFERSIZE 16</span><br />
byte serialResonse<span style="color: #009900;">[</span>SERIALBUFFERSIZE<span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
<br />
byte g_errorCounter<span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">//send status back to library</span><br />
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> sendAck<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
  serialResonse<span style="color: #009900;">[</span><span style="color: #0000dd;">0</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">‘A’</span><span style="color: #339933;">;</span><br />
  serialResonse<span style="color: #009900;">[</span><span style="color: #0000dd;">1</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">‘K’</span><span style="color: #339933;">;</span><br />
  serialResonse<span style="color: #009900;">[</span><span style="color: #0000dd;">2</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> Serial.<span style="color: #202020;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  serialResonse<span style="color: #009900;">[</span><span style="color: #0000dd;">3</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> g_errorCounter<span style="color: #339933;">;</span><br />
  Serial.<span style="color: #202020;">write</span><span style="color: #009900;">(</span>serialResonse<span style="color: #339933;">,</span> SERIALBUFFERSIZE<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #993333;">void</span> setup<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
  pinMode<span style="color: #009900;">(</span><span style="color: #0000dd;">13</span><span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  <br />
  <a href="http://www.opengroup.org/onlinepubs/009695399/functions/memset.html"><span style="color: #000066;">memset</span></a><span style="color: #009900;">(</span>serialResonse<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> SERIALBUFFERSIZE<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<br />
  Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">(</span>BAUD_RATE<span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Setup high speed Serial</span><br />
  Serial.<span style="color: #202020;">flush</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span><br />
<br />
<span style="color: #993333;">void</span> loop<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
  <span style="color: #666666; font-style: italic;">//read the serial port and create a string out of what you read</span><br />
  g_errorCounter<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
<br />
  <span style="color: #666666; font-style: italic;">// digitalWrite(13, LOW);</span><br />
  <span style="color: #666666; font-style: italic;">// see if we got a proper command string yet</span><br />
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>readCommand<span style="color: #009900;">(</span>serInStr<span style="color: #009900;">)</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  digitalWrite<span style="color: #009900;">(</span><span style="color: #0000dd;">13</span><span style="color: #339933;">,</span> HIGH<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  <br />
    <span style="color: #666666; font-style: italic;">//i2c addres of device</span><br />
  byte addr    <span style="color: #339933;">=</span> serInStr<span style="color: #009900;">[</span><span style="color: #0000dd;">1</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
  <span style="color: #666666; font-style: italic;">//how many bytes we’re sending</span><br />
  byte sendlen <span style="color: #339933;">=</span> serInStr<span style="color: #009900;">[</span><span style="color: #0000dd;">2</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
  <span style="color: #666666; font-style: italic;">//what kind of command we send</span><br />
  byte type <span style="color: #339933;">=</span> serInStr<span style="color: #009900;">[</span><span style="color: #0000dd;">3</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
  <span style="color: #666666; font-style: italic;">//parameter</span><br />
  byte<span style="color: #339933;">*</span> cmd    <span style="color: #339933;">=</span> serInStr<span style="color: #339933;">+</span><span style="color: #0000dd;">5</span><span style="color: #339933;">;</span><br />
  <br />
   <span style="color: #b1b100;">switch</span> <span style="color: #009900;">(</span>type<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
   <span style="color: #b1b100;">case</span> CMD_SENDFRAME<span style="color: #339933;">:</span><br />
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>sendlen <span style="color: #339933;">==</span> COLOR_5BIT_FRAME_SIZE<span style="color: #009900;">)</span> <span style="color: #009900;">{</span>    <br />
        <span style="color: #009900;">}</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">{</span><br />
      g_errorCounter<span style="color: #339933;">=</span><span style="color: #0000dd;">100</span><span style="color: #339933;">;</span><br />
        <span style="color: #009900;">}</span><br />
        <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span><br />
<br />
    <span style="color: #b1b100;">case</span> CMD_PING<span style="color: #339933;">:</span><br />
        <span style="color: #666666; font-style: italic;">//just send the ack!</span><br />
        <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span><br />
    <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span><br />
        <span style="color: #666666; font-style: italic;">//invalid command</span><br />
        g_errorCounter<span style="color: #339933;">=</span><span style="color: #0000dd;">130</span><span style="color: #339933;">;</span> <br />
        <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span><br />
  <span style="color: #009900;">}</span><br />
  sendAck<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
  digitalWrite<span style="color: #009900;">(</span><span style="color: #0000dd;">13</span><span style="color: #339933;">,</span> LOW<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span><br />
<br />
byte readCommand<span style="color: #009900;">(</span>byte <span style="color: #339933;">*</span>str<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
  byte b<span style="color: #339933;">,</span>i<span style="color: #339933;">,</span>sendlen<span style="color: #339933;">;</span><br />
<br />
  <span style="color: #666666; font-style: italic;">//wait until we get a CMD_START_BYTE or queue is empty</span><br />
  i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">(</span>Serial.<span style="color: #202020;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">&gt;</span><span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> i<span style="color: #339933;">==</span><span style="color: #0000dd;">0</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    b <span style="color: #339933;">=</span> Serial.<span style="color: #202020;">read</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>b <span style="color: #339933;">==</span> CMD_START_BYTE<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
      i<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><br />
    <span style="color: #009900;">}</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>i<span style="color: #339933;">==</span><span style="color: #0000dd;">0</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    <span style="color: #666666; font-style: italic;">//failed to get data ignore it</span><br />
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>    <br />
  <span style="color: #009900;">}</span><br />
<br />
  <span style="color: #666666; font-style: italic;">//read header  </span><br />
  i <span style="color: #339933;">=</span> SERIAL_DELAY_LOOP<span style="color: #339933;">;</span><br />
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">(</span>Serial.<span style="color: #202020;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #339933;">&lt;</span> SERIAL_HEADER_SIZE<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>   <span style="color: #666666; font-style: italic;">// wait for the rest</span><br />
    delay<span style="color: #009900;">(</span>SERIAL_WAIT_DELAY<span style="color: #009900;">)</span><span style="color: #339933;">;</span> <br />
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>i<span style="color: #339933;">–</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
      <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>        <span style="color: #666666; font-style: italic;">//no data available!</span><br />
    <span style="color: #009900;">}</span><br />
  <span style="color: #009900;">}</span><br />
  <span style="color: #b1b100;">for</span> <span style="color: #009900;">(</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>SERIAL_HEADER_SIZE<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    str<span style="color: #009900;">[</span>i<span style="color: #009900;">]</span> <span style="color: #339933;">=</span> Serial.<span style="color: #202020;">read</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>       <span style="color: #666666; font-style: italic;">// fill it up</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  <span style="color: #666666; font-style: italic;">// — START HEADER CHECK    </span><br />
  <span style="color: #666666; font-style: italic;">//check if data is correct, 0x10 = START_OF_DATA</span><br />
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>str<span style="color: #009900;">[</span><span style="color: #0000dd;">4</span><span style="color: #009900;">]</span> <span style="color: #339933;">!=</span> START_OF_DATA<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  <span style="color: #666666; font-style: italic;">//check sendlen, its possible that sendlen is 0!</span><br />
  sendlen <span style="color: #339933;">=</span> str<span style="color: #009900;">[</span><span style="color: #0000dd;">2</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span>  <br />
  <span style="color: #666666; font-style: italic;">// — END HEADER CHECK</span><br />
<br />
  <span style="color: #666666; font-style: italic;">//read data  </span><br />
  i <span style="color: #339933;">=</span> SERIAL_DELAY_LOOP<span style="color: #339933;">;</span><br />
  <span style="color: #666666; font-style: italic;">// wait for the final part, +1 for END_OF_DATA</span><br />
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">(</span>Serial.<span style="color: #202020;">available</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #339933;">&lt;</span> sendlen<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    delay<span style="color: #009900;">(</span>SERIAL_WAIT_DELAY<span style="color: #009900;">)</span><span style="color: #339933;">;</span> <br />
    <span style="color: #b1b100;">if</span><span style="color: #009900;">(</span> i<span style="color: #339933;">–</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
      <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
    <span style="color: #009900;">}</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  <span style="color: #b1b100;">for</span> <span style="color: #009900;">(</span>i<span style="color: #339933;">=</span>SERIAL_HEADER_SIZE<span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>SERIAL_HEADER_SIZE<span style="color: #339933;">+</span>sendlen<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    str<span style="color: #009900;">[</span>i<span style="color: #009900;">]</span> <span style="color: #339933;">=</span> Serial.<span style="color: #202020;">read</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>       <span style="color: #666666; font-style: italic;">// fill it up</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  <span style="color: #666666; font-style: italic;">//check if data is correct, 0x20 = END_OF_DATA</span><br />
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>str<span style="color: #009900;">[</span>SERIAL_HEADER_SIZE<span style="color: #339933;">+</span>sendlen<span style="color: #009900;">]</span> <span style="color: #339933;">!=</span> END_OF_DATA<span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
  <span style="color: #009900;">}</span><br />
<br />
  <span style="color: #666666; font-style: italic;">//return data size (without meta data)</span><br />
  <span style="color: #b1b100;">return</span> sendlen<span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span></div></td></tr></tbody></table></div>
<p>Here are some performance results on Mac OSX v10.6.6, PureData v0.41.4-extended, Arduino v0022, Processing v1.2.1 — using an Arduino UNO:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SEND incomming serial data <span style="color: #000000;">16</span> bytes after 31ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 30ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 18ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 31ms<br />
SEND incomming serial data <span style="color: #000000;">14</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">3</span> bytes after 20ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 20ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 32ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 30ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 18ms<br />
SEND incomming serial data <span style="color: #000000;">3</span> bytes after 29ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 31ms<br />
SEND incomming serial data <span style="color: #000000;">3</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">13</span> bytes after 8ms<br />
SEND incomming serial data <span style="color: #000000;">32</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 30ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">15</span> bytes after 20ms<br />
SEND incomming serial data <span style="color: #000000;">6</span> bytes after 25ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 30ms<br />
SEND incomming serial data <span style="color: #000000;">14</span> bytes after 22ms<br />
SEND incomming serial data <span style="color: #000000;">3</span> bytes after 31ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">9</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">7</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 8ms<br />
SEND incomming serial data <span style="color: #000000;">9</span> bytes after 12ms<br />
SEND incomming serial data <span style="color: #000000;">23</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">3</span> bytes after 17ms<br />
SEND incomming serial data <span style="color: #000000;">3</span> bytes after 10ms<br />
SEND incomming serial data <span style="color: #000000;">25</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">7</span> bytes after 9ms<br />
SEND incomming serial data <span style="color: #000000;">32</span> bytes after 20ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 32ms<br />
SEND incomming serial data <span style="color: #000000;">9</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">7</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 9ms<br />
SEND incomming serial data <span style="color: #000000;">32</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 21ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 31ms<br />
SEND incomming serial data <span style="color: #000000;">11</span> bytes after 19ms<br />
SEND incomming serial data <span style="color: #000000;">5</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">22</span> bytes after 20ms<br />
SEND incomming serial data <span style="color: #000000;">10</span> bytes after 18ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 3ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 17ms<br />
SEND incomming serial data <span style="color: #000000;">4</span> bytes after 8ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">16</span> bytes after 11ms<br />
SEND incomming serial data <span style="color: #000000;">5</span> bytes after 8ms</div></td></tr></tbody></table></div>
<p><strong>Conclusion:</strong> Compared to using the rxtx JNI libraries I cannot see a huge performance boost! Sad but true. So my assumption was wrong — JNI is NOT the serial bottleneck using Arduino with the rxtx libraries. Again:</p>
<blockquote><p>JNI is NOT the serial bottleneck using Arduino with the rxtx libraries</p></blockquote>
<p><strong>Side note</strong>: I read on several forum threads (mainly on the Arduino forum) that the baudrate should not matter is you use the USB version. This conclusion <strong>is just wrong!</strong> You can use my code above and run the tests with 9600 bps and 115200 bps — you’ll notice a HUGE difference!</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/02/low-latency-serial-arduino/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>neorainbowduino in the wild</title>
		<link>http://neophob.com/2011/02/neorainbowduino-in-the-wild/</link>
		<comments>http://neophob.com/2011/02/neorainbowduino-in-the-wild/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 23:31:10 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Rainbowduino]]></category>

		<guid isPermaLink="false">http://www.neophob.com/?p=979</guid>
		<description><![CDATA[Here are some examples what you can do with the neorainbowduino rainbowduino firmware. Led Table by Sebastian Beyer: Seeeduino Carnival entry by Janos Siklosi (ranked 3rd) Some images by Fabius Steinberger: Thanks for your messages guys!]]></description>
			<content:encoded><![CDATA[<p>Here are some examples what you can do with the <a href="http://code.google.com/p/neorainbowduino/">neorainbowduino</a> rainbowduino firmware.</p>
<p>Led Table by Sebastian Beyer:<br /><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=19539636&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=19539636&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="520" height="290"></embed></object></p>
<p>Seeeduino Carnival entry by Janos Siklosi (ranked 3rd)<br /><object width="520" height="290"><param name="movie" value="http://www.youtube.com/v/MaQrkwwHCzw" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed wmode="opaque" src="http://www.youtube.com/v/MaQrkwwHCzw" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="520" height="290"></embed></object></p>
<p><object width="520" height="290"><param name="movie" value="http://www.youtube.com/v/Z0DRaHUf_ZA" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed wmode="opaque" src="http://www.youtube.com/v/Z0DRaHUf_ZA" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="520" height="290"></embed></object></p>
<p>Some images by Fabius Steinberger:<br />
<center><br />
<img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2011/02/CIMG4967.jpg" alt="" title="CIMG4967" width="500" height="332" class="aligncenter size-full wp-image-984" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2011/02/CIMG4970.jpg" alt="" title="CIMG4970" width="500" height="332" class="aligncenter size-full wp-image-990" /><br />
</center></p>
<p>Thanks for your messages guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/02/neorainbowduino-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>More Rainbowduino Stuff</title>
		<link>http://neophob.com/2011/01/more-rainbowduino-stuff/</link>
		<comments>http://neophob.com/2011/01/more-rainbowduino-stuff/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 19:52:39 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Contest]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Rainbowduino]]></category>

		<guid isPermaLink="false">http://www.neophob.com/?p=964</guid>
		<description><![CDATA[I submitted my second entry for the Rainbowduino Carnival 2010/2011 called “ze_blinken”. This entry uses my neorainbowduino firmware, the blinkenlights processing library and a Processing sketch. The sketch will show blinkenlights movies stretched on 4 RGB matrices. If you like it — don’t forget to VOTE! for Ze Invaders! and Ze blinker!!). I also started [...]]]></description>
			<content:encoded><![CDATA[<p>I submitted my second entry for the Rainbowduino Carnival 2010/2011 called “<em>ze_blinken</em>”. This entry uses my <a href="http://code.google.com/p/neorainbowduino/">neorainbowduino</a> firmware, the <a href="http://code.google.com/p/processing-blinkenlights/">blinkenlights processing library</a> and a <a href="http://code.google.com/p/neorainbowduino/source/browse/trunk/processingLib/examples/ze_blinker/ze_blinker.pde">Processing sketch</a>. The sketch will show blinkenlights movies stretched on 4 RGB matrices.</p>
<p>If you like it — don’t forget to <a href="http://www.seeedstudio.com/blog/2011/01/14/rainbowduino-carnival-2010-vote-now/">VOTE</a>! for Ze Invaders! and Ze blinker!!).</p>
<p>I also started the Rainbowduino Wiki on <a href="http://garden.seeedstudio.com/index.php?title=Rainbowduino_LED_driver_platform_-_Atmega_328">garden.seeedstudio.com</a>.</p>
<p><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=18406482&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=18406482&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="520" height="290"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2011/01/more-rainbowduino-stuff/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Seeedstudio Rainbowduino Carnival 2010</title>
		<link>http://neophob.com/2010/12/seeedstudio-rainbowduino-carnival-2010/</link>
		<comments>http://neophob.com/2010/12/seeedstudio-rainbowduino-carnival-2010/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 23:37:43 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Invaders]]></category>
		<category><![CDATA[Rainbowduino]]></category>
		<category><![CDATA[seeedstudio]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.neophob.com/?p=919</guid>
		<description><![CDATA[I just uploaded my entry for the Rainbowduino Carnival contest 2010 — using the neorainbowduino firmware and a Processing sketch. I use foamboard for the 80cm x 80cm x 20cm case and a lee filter “Heavy Frost” as a diffuser, inspired by http://jasoneppink.com/pixelator/, Here is the final video — it’s basically a Space Invader generator [...]]]></description>
			<content:encoded><![CDATA[<p>I just uploaded my entry for the <a href="http://www.seeedstudio.com/carnival2010/carnival2010.htm">Rainbowduino Carnival contest</a> 2010 — using the <a href="http://code.google.com/p/neorainbowduino/">neorainbowduino</a> firmware and a <a href="http://code.google.com/p/neorainbowduino/source/browse/#svn/trunk/processingLib/examples/carnival">Processing sketch</a>. </p>
<p>I use foamboard for the 80cm x 80cm x 20cm case and a lee filter “Heavy Frost” as a diffuser, inspired by <a href="http://jasoneppink.com/pixelator/">http://jasoneppink.com/pixelator/</a>,</p>
<p>Here is the final video — it’s basically a Space Invader generator — it will display a (more or less) random Invader head — inspired by “<strong>Space Invaders</strong>”:<br /><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=17715232&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=17715232&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="520" height="290"></embed></object><br />
I’m very sorry for the flickering — but its just visible by cam!</p>
<blockquote><p>Kill ze Invaders!!</p></blockquote>
<p>Here are some images from the <strong>build process</strong>:<br />
<center><br />
<img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/2010-10-23-16.23.59-1024x768.jpg" alt="" title="foamboard" width="385" height="288" class="aligncenter size-large wp-image-925" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/2010-10-27-00.29.58-1024x768.jpg" alt="" title="case 2" width="385" height="288" class="aligncenter size-large wp-image-929" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/2010-11-08-21.57.32-768x1024.jpg" alt="" title="cabling..." width="385" height="513" class="aligncenter size-large wp-image-932" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/2010-11-08-22.56.45-1024x768.jpg" alt="" title="the connector" width="385" height="288" class="aligncenter size-large wp-image-933" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/2010-11-08-22.57.08-1024x768.jpg" alt="" title="..." width="385" height="288" class="aligncenter size-large wp-image-934" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/2010-11-08-23.36.24-1024x768.jpg" alt="" title="testing" width="385" height="288" class="aligncenter size-large wp-image-936" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/IMG_1463-1024x682.jpg" alt="" title="finalA" width="385" height="256" class="aligncenter size-large wp-image-943" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/2010-11-11-23.16.30-768x1024.jpg" alt="" title="final cabling" width="385" height="513" class="aligncenter size-large wp-image-954" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/IMG_1464-1024x682.jpg" alt="" title="finalB" width="385" height="256" class="aligncenter size-large wp-image-944" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/IMG_1466-1024x682.jpg" alt="" title="finalC" width="385" height="256" class="aligncenter size-large wp-image-945" /></p>
<p><img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/12/preview.png" alt="" title="final pic" width="598" height="480" class="aligncenter size-full wp-image-958" /><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2010/12/seeedstudio-rainbowduino-carnival-2010/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Arduino Serial latency</title>
		<link>http://neophob.com/2010/11/arduino-serial-latency/</link>
		<comments>http://neophob.com/2010/11/arduino-serial-latency/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 11:30:53 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[latency]]></category>
		<category><![CDATA[Serial]]></category>

		<guid isPermaLink="false">http://www.neophob.com/?p=891</guid>
		<description><![CDATA[The current bottleneck for my Rainbowduino project is the serial latency of the Arduino FTDI USB-Serial chip (currently 20ms round trip time from Processing to Arduino and back). There are some OS specific driver tweaks to improve the latency — but not for Mac OSX. The new Arduino UNO should have better latency times, accoring [...]]]></description>
			<content:encoded><![CDATA[<p>The current bottleneck for my Rainbowduino project is the serial latency of the Arduino FTDI USB-Serial chip (currently 20ms round trip time from Processing to Arduino and back). There are some <a href="http://www.ftdichip.com/Documents/AppNotes/AN232B-04_DataLatencyFlow.pdf">OS specific driver tweaks</a> to improve the latency — but not for Mac OSX. The new Arduino UNO should have better latency times, accoring to the <a href="http://arduino.cc/blog/2010/09/24/dinner-is-ready/">Arduino Website</a>:</p>
<blockquote><p>…We replaced the aging FTDI chipset with a custom made usb-serial converter built with an Atmel ATmega8U2 this provides lower latency and doesn’t require to install any drivers on mac and linux…</p></blockquote>
<p>As I don’t own a Arduinio UNO (yet) I asked in the Arduio Forum about UNO’s serial latency. <a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1290819331/0">Paul Stoffregen</a> did some nice benchmarks about the Arduino boards (thanks again!), here are the results and the test-setup.</p>
<p>Arduino Firmware: <a href="http://code.google.com/p/neorainbowduino/source/browse/trunk/arduinoFw/neoLed/neoLed.pde">neoLed</a></p>
<p>The results for sending 7 bytes and receive 4 bytes on <em>Mac OSX</em>:</p>
<table border="0">
<tbody>
<tr>
<td><a href="http://www.pjrc.com/teensy">Teensy</a></td>
<td>~1ms</td>
</tr>
<tr>
<td><a href="http://arduino.cc/en/Main/ArduinoBoardUno">Arduino UNO</a></td>
<td>~4ms</td>
</tr>
<tr>
<td><a href="http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove">Arduino Duemillanove</a></td>
<td>~16ms</td>
</tr>
</tbody>
</table>
<p>So the new Arduino UNO’s serial latency is definitive better than the latency of the duemillanove.</p>
<p><strong>Edit 10.2.2011:</strong><br />
However I use the Arduino from a Processing sketch — which uses the RXTX lib. And the RXTX lib use JNI to access the serial port — and after playing with the RXTX lib (changed some timeouts, changed JNI versions…) I guess the <strong>JNI interface</strong> adds some ms of <strong>latency</strong>. So the minimum latency using the RXTX lib was 20ms, period!</p>
<p>Peter also added a footnote about this measurement:</p>
<blockquote><p>Something to keep in mind is this benchmark is only for the 7 byte TX, 4 byte RX case, and I only tested on Mac OS-X 10.5, and only for this specific C program.  (I tried Linux briefly but had a lot of trouble getting Uno to work reliably).  If you transmit 96 bytes, at 115200 baud between the chips, that’ll add about 8.3 ms.  96 bytes might change things for Teensy too, since that will become more than 1 USB packet.</p>
<p>How the software writes I/O operations also can matter greatly.  In this test, I did a single 7 byte write, a single poll, and a single 4 byte read.  In other testing I did with Puredata a few months ago, results varied quite a lot on each operating system.  The size of the actual writes from the app to operating system matter greatly (only OS-X will combine smaller I/O operations together… Windows and Linux will happily pass single byte writes to the USB host controller, making horribly inefficient use of the bandwidth).  Processing may or may not do things efficiently.  It’s amazing how much difference it can make, especially on Windows due to what seems to be poor driver design.  The point is differently designed software could attempt the same communication and get completely different results, especially if issues single-byte I/O operations.</p></blockquote>
<p>Here are the test result details and test C program:</p>
<p><strong>Arduino Duemilanove</strong>:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">port /dev/cu.usbserial-A800daD3 opened, waiting for board to boot up<br />
sending 7 bytes, read 4 bytes, elased: 11.75 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.87 ms<br />
sending 7 bytes, read 4 bytes, elased: 16.02 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 15.96 ms</div></td></tr></tbody></table></div>
<p><strong>Arduino Uno</strong>:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">port /dev/cu.usbmodem411 opened, waiting for board to boot up<br />
sending 7 bytes, read 4 bytes, elased: 3.56 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.97 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.97 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 4.98 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 3.96 ms</div></td></tr></tbody></table></div>
<p><strong>For Teensy </strong>(with Serial.send_now() added)</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">port /dev/cu.usbmodem12341 opened, waiting for board to boot up<br />
sending 7 bytes, read 4 bytes, elased: 0.85 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.95 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.87 ms<br />
sending 7 bytes, read 4 bytes, elased: 1.03 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.98 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.96 ms<br />
sending 7 bytes, read 4 bytes, elased: 0.96 ms</div></td></tr></tbody></table></div>
<p>The C Source to measure the latency (also done by Paul Stoffregen):</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:666px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">// compile with: gcc –O2 –Wall –o latency_test latency_test.c<br />
<br />
#include &lt;stdio.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;string.h&gt;<br />
#include &lt;stdarg.h&gt;<br />
#include &lt;sys/types.h&gt;<br />
#include &lt;sys/stat.h&gt;<br />
#include &lt;sys/time.h&gt;<br />
#include &lt;fcntl.h&gt;<br />
#include &lt;poll.h&gt;<br />
#include &lt;termios.h&gt;<br />
#include &lt;unistd.h&gt;<br />
<br />
#define PORT “/dev/cu.usbserial-A800daD3”       // Duemilanove<br />
//#define PORT “/dev/cu.usbmodem411”            // Uno<br />
//#define PORT “/dev/cu.usbmodem12341”          // Teensy<br />
<br />
//#define PORT “/dev/ttyUSB0”                   // Duemilanove on Linux<br />
//#define PORT “/dev/ttyACM0”                   // Uno or Teensy on Linux<br />
#define BAUD B115200<br />
<br />
void die(const char *format, …) __attribute__ ((format (printf, 1, 2)));<br />
<br />
int main()<br />
{<br />
int r, fd, count;<br />
struct termios tinfo;<br />
unsigned char buf[7];<br />
struct pollfd fds;<br />
struct timeval begin, end;<br />
double elapsed;<br />
<br />
fd = open(PORT, O_RDWR);<br />
if (fd &amp;lt; 0) die(“unable to open port %sn”, PORT);<br />
if (tcgetattr(fd, &amp;amp;tinfo) &amp;lt; 0) die(“unable to get serial parmsn”);<br />
if (cfsetspeed(&amp;amp;tinfo, B115200) &amp;lt; 0) die(“error in cfsetspeedn”);<br />
if (tcsetattr(fd, TCSANOW, &amp;amp;tinfo) &amp;lt; 0) die(“unable to set baud raten”);<br />
<br />
printf(“port %s opened, waiting for board to boot upn”, PORT);<br />
sleep(3);<br />
<br />
for (count=0; count &amp;lt; 10; count++) {<br />
// send the ping request<br />
buf[0] = 1;<br />
buf[1] = 0;<br />
buf[2] = 1;<br />
buf[3] = 4;<br />
buf[4] = 0x10;<br />
buf[5] = 2;<br />
buf[6] = 0x20;<br />
printf(“sending 7 bytes”);<br />
gettimeofday(&amp;amp;begin, NULL);<br />
r = write(fd, buf, 7);<br />
if (r != 7) die(“unable to write, r = %dn”, r);<br />
<br />
// wait for a responds<br />
fds.fd = fd;<br />
fds.events = POLLIN;<br />
poll(&amp;amp;fds, 1, 500);<br />
r = read(fd, buf, 4);<br />
gettimeofday(&amp;amp;end, NULL);<br />
printf(“, read %d bytes”, r);<br />
if (r != 4) die (“unable to read 4 bytesn”);<br />
<br />
elapsed = (double)(end.tv_sec — begin.tv_sec) * 1000.0;<br />
elapsed += (double)(end.tv_usec — begin.tv_usec) / 1000.0;<br />
printf(“, elased: %.2f msn”, elapsed);<br />
}<br />
close(fd);<br />
return 0;<br />
}<br />
<br />
void die(const char *format, …)<br />
{<br />
va_list args;<br />
va_start(args, format);<br />
vfprintf(stderr, format, args);<br />
exit(1);<br />
}</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2010/11/arduino-serial-latency/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Huge RGB Led Matrix</title>
		<link>http://neophob.com/2010/11/huge-rgb-led-matrix/</link>
		<comments>http://neophob.com/2010/11/huge-rgb-led-matrix/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 11:41:49 +0000</pubDate>
		<dc:creator>michu</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[neorainbowduino]]></category>
		<category><![CDATA[seeedstudio]]></category>
		<category><![CDATA[solder-like-an-idiot]]></category>

		<guid isPermaLink="false">http://www.neophob.com/?p=841</guid>
		<description><![CDATA[I did it! After more than 20 hours of soldering, my 64cm*64cm RGB Led Matrix is finally finished! The Matrix is using 64 RGB Led’s (=256 solder joints) using 10mm diffused RGB Led’s from evilmadscientist.com. The case is build with Foamboard — but that’s not finished yet. I use an Arduino and a Rainbowduino from [...]]]></description>
			<content:encoded><![CDATA[<p>I did it! After more than 20 hours of soldering, my 64cm*64cm RGB Led Matrix is finally finished! The Matrix is using 64 RGB Led’s (=256 solder joints) using 10mm diffused RGB Led’s from <a href="http://evilmadscience.com/partsmenu/89-led">evilmadscientist.com</a>. The case is build with Foamboard — but that’s not finished yet.<br />
I use an Arduino and a Rainbowduino from <a href="http://www.seeedstudio.com/">Seeedstudio </a>to drive my Matrix. The *dunios are running my <a href="http://code.google.com/p/neorainbowduino/">neorainbowduino firmware</a>.</p>
<p><strong><em>Here are some impressions:</em></strong><br />
<center><img src="http://www.neophob.com/wp-content/uploads/2010/10/2010-11-11-23.12.43-1024x768.jpg" alt="" title="matrix diagonal" width="385" height="288" class="aligncenter size-large wp-image-845" /><br />
<br />
<img src="http://pixelinvaders.ch/neophob.com/wp-content/uploads/2010/11/2010-11-11-23.14.32-1024x768.jpg" alt="" title="matrix closeup" width="385" height="288" class="aligncenter size-large wp-image-847" /><br />
</center><br /><object width="520" height="290"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=16748167&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=16748167&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="520" height="290"></embed></object></p>
<p>The next step will be the case — and then add a filter, so the image will be more diffuse. When the Led Matrix is finished, I’ll release a step-by-step DIY buildplan.</p>
<p><em><strong>Links to other LED Matrix information:</strong></em></p>
<ul>
<li><a href="http://spritesmods.com/?art=ledmatrix&#038;page=1">http://spritesmods.com/?art=ledmatrix&amp;page=1</a></li>
<li><a href="http://www.billporter.info/arduquee-an-arduino-powered-marquee-design-log/">http://www.billporter.info/arduquee-an-arduino-powered-marquee-design-log/</a></li>
<li><a href="http://jasoneppink.com/pixelator/">http://jasoneppink.com/pixelator/</a></li>
<li><a href="http://rgbledcoat.blogspot.com/">http://rgbledcoat.blogspot.com/</a></li>
<li><a href="http://tronixstuff.wordpress.com/2010/09/28/moving-forward-with-arduino-–-chapter-18-–-rgb-led-matrix/">http://tronixstuff.wordpress.com/2010/09/28/moving-forward-with-arduino-–-chapter-18-–-rgb-led-matrix/</a></li>
<li>http://labs.ideo.com/2009/08/19/glass-block-led-wall-display/</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://neophob.com/2010/11/huge-rgb-led-matrix/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

