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

<channel>
	<title>Hack a Day &#187; interface</title>
	<atom:link href="http://hackaday.com/tag/interface/feed/" rel="self" type="application/rss+xml" />
	<link>http://hackaday.com</link>
	<description>Fresh hacks every day</description>
	<lastBuildDate>Sun, 12 Feb 2012 08:27:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hackaday.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/5560f98f805877b0e332f191cb9e0af3?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Hack a Day &#187; interface</title>
		<link>http://hackaday.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hackaday.com/osd.xml" title="Hack a Day" />
	<atom:link rel='hub' href='http://hackaday.com/?pushpress=hub'/>
		<item>
		<title>Tracking eye movement by measuring electrons in the eye</title>
		<link>http://hackaday.com/2011/05/26/tracking-eye-movement-by-measuring-electrons-in-the-eye/</link>
		<comments>http://hackaday.com/2011/05/26/tracking-eye-movement-by-measuring-electrons-in-the-eye/#comments</comments>
		<pubDate>Thu, 26 May 2011 18:30:19 +0000</pubDate>
		<dc:creator>Brian Benchoff</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[eye tracking]]></category>
		<category><![CDATA[hci]]></category>
		<category><![CDATA[interface]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=43805</guid>
		<description><![CDATA[[Luis Cruz] is a Honduran High School student, and he built an amazing electrooculography system, and the writeup (PDF warning) of the project is one of the best we&#8217;ve seen. [Luis] goes through the theory of the electrooculogram &#8211; the human eye is polarized from front to back because of a negative charge in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=43805&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-43813" title="eyeball" src="http://hackadaycom.files.wordpress.com/2011/05/eyeball.png?w=450&#038;h=277" alt="" width="450" height="277" /></p>
<p>[Luis Cruz] is a Honduran High School student, and he built an amazing <a href="http://www.ees.intelsath.com/home.html"> electrooculography system</a>, and the <a href="http://www.ees.intelsath.com/EES-EOG.pdf">writeup</a> (PDF warning) of the project is one of the best we&#8217;ve seen.</p>
<p>[Luis] goes through the theory of the electrooculogram &#8211; the human eye is polarized from front to back because of a negative charge in the nerve endings in the retina. Because of this minute difference in charge, a user&#8217;s gaze can be tracked by electrodes attached to the skin around the eye. After connecting eye electrodes to opamps and a microcontroller, [Luis] imported the data with a Python script and wrote an &#8220;eyeboard&#8221; application to enable text input using only eye movement. The original goal of the project was to build an interface for severely disabled people, but [Luis] sees applications for sleep research and gathering marketing data.</p>
<p>We covered [Luis]&#8216; <a href="http://hackaday.com/2010/03/26/8-bit-game-console-with-wireless-motion-controller/">homebrew 8-bit console</a> last year, and he&#8217;s now controlling his Pong clone with his eye-tracking device. We&#8217;re reminded of a <a href="http://www.atarimuseum.com/videogames/consoles/2600/mindlink.html">similar system</a> developed by Atari, but [Luis]&#8216; system uses a method that won&#8217;t give the user a headache after 15 minutes.</p>
<p>Check out [Luis] going through the capabilities of his interface after the break.<span id="more-43805"></span></p>
<span style="text-align:center; display: block;"><a href="http://hackaday.com/2011/05/26/tracking-eye-movement-by-measuring-electrons-in-the-eye/"><img src="http://img.youtube.com/vi/JlgKOV_mn18/2.jpg" alt="" /></a></span>
<br />Filed under: <a href='http://hackaday.com/category/news/'>news</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/43805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/43805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/43805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/43805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/43805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/43805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/43805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/43805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/43805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/43805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/43805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/43805/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/43805/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/43805/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=43805&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/05/26/tracking-eye-movement-by-measuring-electrons-in-the-eye/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">brianbenchoff</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/05/eyeball.png?w=450" medium="image">
			<media:title type="html">eyeball</media:title>
		</media:content>
	</item>
		<item>
		<title>So you want to make a Command Line Interface</title>
		<link>http://hackaday.com/2010/08/26/so-you-want-to-make-a-command-line-interface/</link>
		<comments>http://hackaday.com/2010/08/26/so-you-want-to-make-a-command-line-interface/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 19:29:50 +0000</pubDate>
		<dc:creator>Jakob Griffith</dc:creator>
				<category><![CDATA[how-to]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[directX]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[programing]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=27561</guid>
		<description><![CDATA[[Keba] not only asked Answeres.HackaDay.com, but also sent us an email as follows. &#8220;Can you make a basic guide to designing a good Command Line User Interface?&#8221; Wouldn&#8217;t you know the luck, I&#8217;m currently working on a Command Line type interface for a project of mine. While after the jump I&#8217;ll be walking through my [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=27561&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-27598" title="Yes, my engine is named K-OS. I feel so clever...stealing the idea from a friend." src="http://hackadaycom.files.wordpress.com/2010/08/command.png" alt="" width="429" height="201" /></p>
<p>[Keba] not only asked <a href="http://answers.hackaday.com/can-you-make-a-basic-guide-to-designing-a-good-command-line-user-interface">Answeres.HackaDay.com</a>, but also sent us an email as follows.</p>
<p>&#8220;Can you make a basic guide to designing a good Command Line User Interface?&#8221;</p>
<p>Wouldn&#8217;t you know the luck, I&#8217;m currently working on a Command Line type interface for a project of mine. While after the jump I&#8217;ll be walking through my explanation, it should be noted that the other replies to Answers.HackaDay.com are also great suggestions.</p>
<p><span id="more-27561"></span></p>
<p>We have no real idea how [Keba] intends to implement a system for the ATmega16 (Serial display? Output to an LCD? etc?), but for my project it is as follows. Using C# along with DirectX (can you tell I&#8217;m making a game with a developer console?) I&#8217;ll display an input line, suggestions for inputs (intellisense), and outputs based only when a correct input is given.</p>
<p>To begin, and to stay focused on only the CLI, I&#8217;ll assume your project has all the necessary startup and load functions. In my case, <a href="http://www.codersource.net/asp-net/directx/directx-programming-in-c.aspx">loading of a DX device</a>, and <a href="http://www.codeproject.com/KB/system/rawinput.aspx">input handling</a>. Also, we assume you know how to program in your respective language.</p>
<p>I&#8217;ll be using a pretty advanced technique (StringBuilder) for string handling, because traditional string + string concatenation is terrible on memory (and games need as much as they can get). If you don&#8217;t care for memory, you can simply use regular strings.</p>
<p>To start off we&#8217;ll need some global variables,</p>
<p><pre class="brush: cpp;">public bool bool_isConsoleOpen = false; //console, also known as CLI
public StringBuilder StringBuilder_Console = new StringBuilder(); //could be replaced with string
public InputDevice ID = new InputDevice();</pre></p>
<p>Within the main function loop, make a call to a method named UpdateConsole();</p>
<p>Now, in my setup to prevent unwanted user input there is a small check to see if the console is &#8216;open&#8217; or &#8216;closed&#8217;.</p>
<p><pre class="brush: cpp;">
public void UpdateConsole()
{
 //opening console
 if (ID.isKeyDown(Keys.Oemtilde) &amp;&amp; ID.isOldKeyUp(Keys.Oemtilde))
  if (bool_isConsoleOpen == false)
  {
   bool_isConsoleOpen = true; //user pressed magic key, open console
   StringBuilder_Console = new StringBuilder(); //clear string
  }
  else
   bool_isConsoleOpen = false; //user pressed magic key, close console
}
</pre></p>
<p>The next section of code handles all the inputs (keyboard presses) and builds our string that is about to be entered. It includes support for shift capitals, pasting from the clipboard, and also checks to make sure each key entered is allowed. Simply add this portion immediately after bool_isConsoleOpen = false;.</p>
<p><pre class="brush: cpp;">
//appending console if its open.
if (bool_isConsoleOpen == true)
{
 bool caps = false; //variable that helps determine if shift is pressed
 if (ID.isKeyDown(Keys.ShiftKey))
  caps = true;

 List pressedkeystemp = ID.PressedKeys; //I had to modify my ID a bit to make it get a list/array of the keys pressed.
 //go through each new key in list
 foreach (Keys currentkey in pressedkeystemp)
  {
   //make a string, this is for numbers
   string key;

   //if the key SPACE is pressed, make a space
   if (currentkey == Keys.Space)
   {
    StringBuilder_Console.Append(&quot; &quot;);
   }
   //if the key BACK is pressed, backspace
   else if (currentkey == Keys.Back)
   {
    if (StringBuilder_Console.Length &gt; 0)
     StringBuilder_Console.Remove(StringBuilder_Console.Length - 1, 1);
   }
   //if enter is pressed
   else if (currentkey == Keys.Enter)
   {
    //send it off to apply our data
    ApplicationSettings(StringBuilder_Console.ToString());
    //clear our string
    StringBuilder_Console = new StringBuilder();
   }
   //if a number is pressed, make it show up
   else if (StringKeyINTCheck(currentkey, out key))
   {
    StringBuilder_Console.Append(key);
   }
   //if a-z is pressed, make it show up
   else if (StringKeyCheck(currentkey))
   {
    // if V was just pressed and either control key is down
    if (currentkey == Keys.V &amp;&amp; (ID.isKeyDown(Keys.ControlKey)))
    {
     // paste time!
     string pastevalue = &quot;&quot;;
     pastevalue = System.Windows.Forms.Clipboard.GetText(System.Windows.Forms.TextDataFormat.Text);
     StringBuilder_Console.Append(pastevalue);
    }
    // if not pasting, do a regular key
    else if (!caps)
     StringBuilder_Console.Append(currentkey.ToString().ToLower());
    else if (caps)
     StringBuilder_Console.Append(currentkey.ToString());
  }
}

</pre></p>
<p>In order to prevent some characters from being printed, such as alt characters, and to make sure the input key can actually be displayed (otherwise you could crash with error) I implement a few checks. You&#8217;ll notice I have two different types, Check(input, output) and Check(input). The former is necessary because often the input is the ASCII value, and needs to be converted to a char or string before being added to the builder. The latter simply returns true or false if the key is valid.</p>
<p>Example of the first, numerals</p>
<p><pre class="brush: cpp;">
//numerals
private bool StringKeyINTCheck(Keys key, out string i)
{
 if (key == Keys.D1 || key == Keys.NumPad1)
 {
  i = &quot;1&quot;;
  return true;
 }
 else if (key == Keys.D2 || key == Keys.NumPad2)
 {
  i = &quot;2&quot;;
  return true;
 }
etc...
}
</pre></p>
<p>And the latter, a-z</p>
<p><pre class="brush: cpp;">
private bool StringKeyCheck(Keys key)
{
 if (key == Keys.A ||
                key == Keys.B ||
                key == Keys.C ||
                etc...
                key == Keys.X ||
                key == Keys.Y ||
                key == Keys.Z)
  return true;
 else
  return false;
}
</pre></p>
<p>So now we have our string built, you&#8217;ll notice the new method ApplicationSettings(string) is called whenever enter is pressed. This is the sending off of the string the user just typed in/that we built, we must now break that string down and determine what the user typed, and what should happen.</p>
<p>Once again, I start off with a few checks, just to prevent crashes.</p>
<p><pre class="brush: cpp;">
private void ApplicationSettings(string temp)
{
 if (temp != null) //make sure the user didn't type in &quot;&quot;.
 {
  //make it all lower case
  temp = temp.ToLower();

  //split by spaces
  string[] words = temp.Split(' ');
 }
}
</pre></p>
<p>Now comes the fun part, We&#8217;ve assumed the user has entered things such as &#8220;quit&#8221; &#8220;fullscreen 1&#8243; and &#8220;pos 100x100x100&#8243;. The first will quit the application, the second will determine if the application should be fullscreen or not. And the final sets the users XYZ position in space. These three are simply examples of multiple variable entry, and you could of course program whatever you need.</p>
<p>Immediately after string[] words = temp.Split(&#8216; &#8216;); add the following,</p>
<p><pre class="brush: cpp;">
try
{
 //quit exit
 if (words[0] == &quot;quit&quot; || words[0] == &quot;exit&quot;)
  this.Close();

 //check for users fullscreen preference
 else if (words[0] == &quot;fullscreen&quot;)
 {
  if (words[1] == &quot;0&quot;)
   WindowedMode = true; //arbitrary global named windowedMode
  else if (words[1] == &quot;1&quot;)
   WindowedMode = false;
 }

 //set the camera position
 else if (words[0] == &quot;pos&quot;)
 {
  if (words[1].Contains(&quot;x&quot;))
  {
   string[] res = words[1].Split('x');
   int int_x = Convert.ToInt32(res[0]);
   int int_y = Convert.ToInt32(res[1]);
   int int_z = Convert.ToInt32(res[2]);

   Cam.Position = new Vector3(int_x, int_y, int_z);//arbitrary class camera Cam
  }
 }

}
catch (IndexOutOfRangeException e)
{
 //this occurs when the user types &quot;fullscreen $&quot;. Where $ is a variable, and the user typed nothing.
 //do nothing we should tell the user this with an error message.
}
catch (FormatException e)
{
 //this occurs when the user types &quot;resolution $x$&quot;, where $ is an int variable, and the user typed alpha.
 //do nothing we should tell the user this with an error message.
}
</pre></p>
<p>You probably could stop here if needed, you have input and output. However, I have something like 40 different commands in the current revision of my console, I couldn&#8217;t remember them all. So I made my own nifty intellisense.</p>
<p>This is going to require setting up another global&#8211;string list, filling it with commands, and then alphabetizing it.</p>
<p><pre class="brush: cpp;">
List&lt;string&gt; ListString_Console = new List&lt;string&gt;();

private void LoadConsoleWordList()
{
 ListString_Console.Clear();

 //load in our console!
 ListString_Console.Add(&quot;fullscreen&quot;);
 ListString_Console.Add(&quot;resolution&quot;);
 ListString_Console.Add(&quot;showfps&quot;);
 //ListString_Console.Add(&quot;vertsync&quot;);
 ListString_Console.Add(&quot;maxfps&quot;);
 ListString_Console.Add(&quot;quit&quot;);
 ListString_Console.Add(&quot;exit&quot;);
 ListString_Console.Add(&quot;saveconsole&quot;);
 //ListString_Console.Add(&quot;bind&quot;);
 etc...

 //sort our list
 ListString_Console.Sort();
}
</pre></p>
<p>Now at the bottom of our UpdateConsole().</p>
<p><pre class="brush: cpp;">
if (bool_isConsoleOpen == true)
{
 BMF_Arial.AddString(StringBuilder_Console.ToString() + &quot;_&quot;, &quot;console&quot;, new System.Drawing.RectangleF(5, 18, Resolution.Width, 20)); //how I draw things to the screen in DX. StringBuilder_Console is the string we built earlier, so the user can see what he is typing.

 //help our user search.
 int q = 35;

 //check every single string we know against what the user is typing in
 foreach (string stringy in ListString_Console)
 {
  //so long as the length is right, we continue
  if (stringy.Length &gt;= StringBuilder_Console.Length) //this part could be eliminated, and we could simply go through every letter. But this speeds up operations a smidge.
  {
   //temporary bool
   bool hodling = false;

   //go through every letter
   for (int i = 0; i &lt; StringBuilder_Console.Length; i++)
    if (stringy[i] == StringBuilder_Console[i])
     hodling = true;
    else
    {
     hodling = false;
     break;
    }

   //if it's a 100% match
   if (hodling)
   {
    //draw it, and update q relative.
    BMF_Arial.AddString(stringy, &quot;console&quot;, new RectangleF(5, 2 + q, Resolution.Width, 20)); //these are all the matches to the currently types string.
    q += 18;
   }
  }
 }
}
</pre></p>
<p>So how does it finally look?</p>
<p>No console open,</p>
<p><a href="http://hackadaycom.files.wordpress.com/2010/08/untitled1.png"><img class="alignnone size-thumbnail wp-image-27591" title="I can only hope you guys loved my variable names. " src="http://hackadaycom.files.wordpress.com/2010/08/untitled1.png?w=122&#038;h=96" alt="" width="122" height="96" /></a></p>
<p>Hitting the magical key opens up console, begin typing, see intellisense,</p>
<p><a href="http://hackadaycom.files.wordpress.com/2010/08/untitled2.png"><img class="alignnone size-thumbnail wp-image-27592" title="Its just that whenever I'm using in method variables, I don't care what they're named." src="http://hackadaycom.files.wordpress.com/2010/08/untitled2.png?w=122&#038;h=96" alt="" width="122" height="96" /></a></p>
<p>Continue typing, other words that don&#8217;t match get taken off display,</p>
<p><a href="http://hackadaycom.files.wordpress.com/2010/08/untitled3.png"><img class="alignnone size-thumbnail wp-image-27593" title="Globals I make sure to name an actual intelligent name though." src="http://hackadaycom.files.wordpress.com/2010/08/untitled3.png?w=122&#038;h=96" alt="" width="122" height="96" /></a></p>
<p>and hitting enter executes the command,</p>
<p><a href="http://hackadaycom.files.wordpress.com/2010/08/untitled4.png"><img class="alignnone size-thumbnail wp-image-27594" title="In the end, I pretty much use hodling or some variation for everything. Its great. " src="http://hackadaycom.files.wordpress.com/2010/08/untitled4.png?w=122&#038;h=96" alt="" width="122" height="96" /></a></p>
<br />Filed under: <a href='http://hackaday.com/category/how-to/'>how-to</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/27561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/27561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/27561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/27561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/27561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/27561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/27561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/27561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/27561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/27561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/27561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/27561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/27561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/27561/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=27561&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/08/26/so-you-want-to-make-a-command-line-interface/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Jakob Griffith</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/08/command.png" medium="image">
			<media:title type="html">Yes, my engine is named K-OS. I feel so clever...stealing the idea from a friend.</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/08/untitled1.png?w=122" medium="image">
			<media:title type="html">I can only hope you guys loved my variable names. </media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/08/untitled2.png?w=122" medium="image">
			<media:title type="html">Its just that whenever I&#039;m using in method variables, I don&#039;t care what they&#039;re named.</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/08/untitled3.png?w=122" medium="image">
			<media:title type="html">Globals I make sure to name an actual intelligent name though.</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/08/untitled4.png?w=122" medium="image">
			<media:title type="html">In the end, I pretty much use hodling or some variation for everything. Its great. </media:title>
		</media:content>
	</item>
		<item>
		<title>Texas Instruments watch claims it&#8217;s a computer mouse</title>
		<link>http://hackaday.com/2010/08/07/texas-instruments-watch-claims-its-a-computer-mouse/</link>
		<comments>http://hackaday.com/2010/08/07/texas-instruments-watch-claims-its-a-computer-mouse/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 12:13:38 +0000</pubDate>
		<dc:creator>Jakob Griffith</dc:creator>
				<category><![CDATA[pcs hacks]]></category>
		<category><![CDATA[wearable hacks]]></category>
		<category><![CDATA[chronos]]></category>
		<category><![CDATA[ez430]]></category>
		<category><![CDATA[flying]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[snap]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=26936</guid>
		<description><![CDATA[[Jack Toole] and his team [Aaron King] and [Libo He] sent in their computer interface dubbed the Chronos Flying Mouse. The video above explains the concept very thoroughly, but we&#8217;ll reiterate some of the highlights here. The project uses a Chronos EZ430 with its accelerometers to wirelessly transmit delta positions of the user&#8217;s wrist. Add [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=26936&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<span style="text-align:center; display: block;"><a href="http://hackaday.com/2010/08/07/texas-instruments-watch-claims-its-a-computer-mouse/"><img src="http://img.youtube.com/vi/TDL3JRG_zrs/2.jpg" alt="" /></a></span>
<p>[Jack Toole] and his team [Aaron King] and [Libo He] sent in their computer interface dubbed the <a href="http://processors.wiki.ti.com/index.php/Chronos_Flying_Mouse">Chronos Flying Mouse</a>. The video above explains the concept very thoroughly, but we&#8217;ll reiterate some of the highlights here. The project uses a <a href="http://processors.wiki.ti.com/index.php/EZ430-Chronos">Chronos EZ430</a> with its accelerometers to wirelessly transmit delta positions of the user&#8217;s wrist. Add a little open source software and you have a regular PC mouse, a video game joystick, a game wheel, and a few other different devices in one. We just love the suave feeling of snapping to click.</p>
<br />Filed under: <a href='http://hackaday.com/category/pcs-hacks/'>pcs hacks</a>, <a href='http://hackaday.com/category/wearable-hacks/'>wearable hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/26936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/26936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/26936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/26936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/26936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/26936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/26936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/26936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/26936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/26936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/26936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/26936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/26936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/26936/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=26936&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/08/07/texas-instruments-watch-claims-its-a-computer-mouse/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Jakob Griffith</media:title>
		</media:content>
	</item>
		<item>
		<title>Nexus one gets Linux</title>
		<link>http://hackaday.com/2010/07/07/nexus-one-gets-linux/</link>
		<comments>http://hackaday.com/2010/07/07/nexus-one-gets-linux/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 17:00:13 +0000</pubDate>
		<dc:creator>Jakob Griffith</dc:creator>
				<category><![CDATA[android hacks]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vnc]]></category>
		<category><![CDATA[x11]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=25671</guid>
		<description><![CDATA[Considering how hackable the Nexus One is already, we can only imagine a whole new host of interesting things thanks to Ubuntu running on the device. [Max Lee] set his heart out on getting not just Ubuntu on the Nexus One, but also Debian, and he wrote a perfect install guide to help out those [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=25671&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<span style="text-align:center; display: block;"><a href="http://hackaday.com/2010/07/07/nexus-one-gets-linux/"><img src="http://img.youtube.com/vi/3wQ9XogfjRU/2.jpg" alt="" /></a></span>
<p>Considering how hackable the Nexus One is already, we can only imagine a whole new host of interesting things thanks to <a href="http://nexusonehacks.net/nexus-one-hacks/ubuntu-on-nexus-one-android/">Ubuntu running on the device</a>. [Max Lee] set his heart out on getting not just Ubuntu on the Nexus One, but also Debian, and he wrote a perfect install guide to help out those wanting to give it a shot.</p>
<p>He cheated a little bit by having Ubuntu run in the background while the X11 interface is simply VNCed, but he still did an awesome job with <a href="http://nexusonehacks.net/nexus-one-hacks/how-to-install-ubuntu-on-your-nexus-oneandroid/">plenty of pictures and details</a> to help you achieve Ubuntu on your Nexus One.</p>
<br />Filed under: <a href='http://hackaday.com/category/android-hacks/'>android hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/25671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/25671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/25671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/25671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/25671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/25671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/25671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/25671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/25671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/25671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/25671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/25671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/25671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/25671/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=25671&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/07/07/nexus-one-gets-linux/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Jakob Griffith</media:title>
		</media:content>
	</item>
		<item>
		<title>1-Wire LAN with an LCD</title>
		<link>http://hackaday.com/2010/03/23/1-wire-lan-with-an-lcd/</link>
		<comments>http://hackaday.com/2010/03/23/1-wire-lan-with-an-lcd/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 13:10:36 +0000</pubDate>
		<dc:creator>Jakob Griffith</dc:creator>
				<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[peripherals hacks]]></category>
		<category><![CDATA[1-wire]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[fonera]]></category>
		<category><![CDATA[hub]]></category>
		<category><![CDATA[hvac]]></category>
		<category><![CDATA[ibutton]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[microlan]]></category>
		<category><![CDATA[OWFS]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=22652</guid>
		<description><![CDATA[[Viktor], one of our favorite avid hackers, has been playing around with 1-wire systems all this month. What started out as a MicroLAN Fonera has turned into an iButton interface, to a 1-wire powered hub, and finally a 1-wire character driven LCD. Anyone looking at 1-wire systems or OWFS could surely benefit from his testing. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=22652&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-22653" title="lcdbrd" src="http://hackadaycom.files.wordpress.com/2010/03/lcdbrd.jpg" alt="" width="470" height="268" /></p>
<p>[Viktor], one of our favorite avid hackers, has been playing around with 1-wire systems all this month. What started out as a <a href="http://www.karosium.com/2010/03/fonera-1-wire-microlan-extension.html">MicroLAN Fonera</a> has turned into an <a href="http://hackaday.com/2009/07/09/hacking-an-ibutton/">iButton interface</a>, to a 1-wire <a href="http://www.karosium.com/2010/03/fonera-1-wire-continued-hub.html">powered hub</a>, and finally a 1-wire <a href="http://www.karosium.com/2010/03/fonera-1-wire-continued-display.html">character driven LCD</a>. Anyone looking at 1-wire systems or OWFS could surely benefit from his testing.</p>
<p>However, if you still haven&#8217;t gotten your fill of 1-wire goodness, let us remind you of the 1-wire <a href="http://hackaday.com/2009/07/29/1-wire-hvac-monitoring-system/">HVAC</a> and <a href="http://hackaday.com/2009/12/02/ipv6-to-1-wire-protocol-translator/">IPv6 to 1-wire protocol translator</a>.</p>
<p>[Thanks Juan]</p>
<br />Filed under: <a href='http://hackaday.com/category/misc-hacks/'>misc hacks</a>, <a href='http://hackaday.com/category/peripherals-hacks/'>peripherals hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/22652/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/22652/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/22652/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/22652/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/22652/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/22652/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/22652/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/22652/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/22652/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/22652/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/22652/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/22652/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/22652/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/22652/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=22652&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/03/23/1-wire-lan-with-an-lcd/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Jakob Griffith</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/03/lcdbrd.jpg" medium="image">
			<media:title type="html">lcdbrd</media:title>
		</media:content>
	</item>
		<item>
		<title>Virtual pool, real-world interface</title>
		<link>http://hackaday.com/2009/09/21/virtual-pool-real-world-interface/</link>
		<comments>http://hackaday.com/2009/09/21/virtual-pool-real-world-interface/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 23:00:43 +0000</pubDate>
		<dc:creator>Phil Burgess</dc:creator>
				<category><![CDATA[classic hacks]]></category>
		<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[ball]]></category>
		<category><![CDATA[billiards]]></category>
		<category><![CDATA[cue]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[infrared]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[physical]]></category>
		<category><![CDATA[pool]]></category>
		<category><![CDATA[stick]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=15932</guid>
		<description><![CDATA[Sunday we saw robots playing pool and an augmented reality pool game. Today we’ll complete the pool trifecta: virtual pool using a real cue stick and ball in another vintage video from Hack a Day’s secret underground vault. The video is noteworthy for a couple of reasons: First is the year it was made: 1990. There’s been much buzz lately over real-world [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=15932&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<span style="text-align:center; display: block;"><a href="http://hackaday.com/2009/09/21/virtual-pool-real-world-interface/"><img src="http://img.youtube.com/vi/2Wc_DXGe2fQ/2.jpg" alt="" /></a></span>
<p>Sunday we saw <a href="http://hackaday.com/2009/09/20/pool-playing-robot-arpool/">robots playing pool and an augmented reality pool game.</a> Today we’ll complete the pool trifecta: <em>virtual</em> pool using a <em>real</em> cue stick and ball in another <a href="http://hackaday.com/2009/09/18/vintage-video-computing-across-america/">vintage video</a> from Hack a Day’s secret underground vault. The video is noteworthy for a couple of reasons:</p>
<p>First is the year it was made: 1990. There’s been much buzz lately over real-world gaming interfaces like the Nintendo Wii <a href="http://hackaday.com/2009/06/23/wii-motionplus-arduino/">motion controller</a> or Microsoft’s Project Natal. Here we’re seeing a much simpler but very effective physical interface nearly twenty years prior.</p>
<p>Second: the middle section of the video reveals the trick behind it all, and it turns out to be surprisingly simple. No complex sensors or computer vision algorithms; the ball’s speed and direction are calculated by an 8-bit processor and a clever arrangement of four infrared emitter/detector pairs.</p>
<p>The visuals may be dated, but the interface itself is ingenious and impressive even today, and the approach is easily within reach of the casual garage tinkerer. What could you make of this? Is it just a matter of time before we see a reader’s <em>Mini-Golf Hero III</em> game here?</p>
<br />Posted in classic hacks, misc hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/15932/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/15932/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/15932/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/15932/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/15932/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/15932/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/15932/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/15932/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/15932/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/15932/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/15932/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/15932/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/15932/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/15932/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=15932&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/09/21/virtual-pool-real-world-interface/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">philburgess</media:title>
		</media:content>
	</item>
		<item>
		<title>Mud Tub: a tactile computer interface</title>
		<link>http://hackaday.com/2009/05/11/mud-tub-a-tactile-computer-interface/</link>
		<comments>http://hackaday.com/2009/05/11/mud-tub-a-tactile-computer-interface/#comments</comments>
		<pubDate>Mon, 11 May 2009 16:26:56 +0000</pubDate>
		<dc:creator>Caleb Kraft</dc:creator>
				<category><![CDATA[multitouch hacks]]></category>
		<category><![CDATA[peripherals hacks]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[mud]]></category>
		<category><![CDATA[mud tub]]></category>
		<category><![CDATA[multitouch]]></category>
		<category><![CDATA[projection]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=11125</guid>
		<description><![CDATA[[Tom Gerhardt] has made this very interesting mud interface for a computer.  Follow the link to see a video of it in action. It appears as though he&#8217;s using a laser grid of some kind to establish elevation. We might be way off on that though, there aren&#8217;t any details on the construction. He does [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=11125&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-11126" title="mud" src="http://hackadaycom.files.wordpress.com/2009/05/mud.jpg" alt="mud" width="450" height="282" /></p>
<p>[Tom Gerhardt] has made this very interesting <a href="http://dirtycomputing.com/">mud interface for a computer</a>.  Follow the link to see a video of it in action. It appears as though he&#8217;s using a laser grid of some kind to establish elevation. We might be way off on that though, there aren&#8217;t any details on the construction. He does mention that it is an open source hardware and software project, so maybe the details are available on request. In the video you can see it running as a projection surface where people are interacting with items directly on the mud. You can also see it being used as an external input device. People play Tetris using it in that example.</p>
<p><strong>UPDATE: </strong>[Moon] reports from the ITP show that the tub has a 16&#215;12 grid of generic pressurs sensors on the bottom. These feed into a MacBook Pro which is projecting on the surface. Despite the sparse grid, [Tom] says he gets good resolution by interpolating between sensors; it can detect a resting hand pivoting on the surface.</p>
<br />Posted in multitouch hacks, peripherals hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/11125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/11125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/11125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/11125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/11125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/11125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/11125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/11125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/11125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/11125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/11125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/11125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/11125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/11125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=11125&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/05/11/mud-tub-a-tactile-computer-interface/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Caleb Kraft</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/05/mud.jpg" medium="image">
			<media:title type="html">mud</media:title>
		</media:content>
	</item>
		<item>
		<title>Parts: Programmable gain amplifier (MCP6S26)</title>
		<link>http://hackaday.com/2009/03/30/parts-programmable-gain-amplifier-mcp6s26/</link>
		<comments>http://hackaday.com/2009/03/30/parts-programmable-gain-amplifier-mcp6s26/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 17:00:38 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[digital audio hacks]]></category>
		<category><![CDATA[parts]]></category>
		<category><![CDATA[bus pirate]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[MCP6S26]]></category>
		<category><![CDATA[programmable gain amplifier]]></category>
		<category><![CDATA[spi]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=8944</guid>
		<description><![CDATA[Microchip&#8217;s MCP6S21/2/6/8 are programmable gain amplifiers that multiply an input voltage by a factor of 1, 2, 4, 5, 8, 10, 16, and 32. The MCP6S22/6/8 also have selectable input channels for working with different signal sources. The multiplication factor and input channel are configured through an SPI interface. This chip is useful for multiplying [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=8944&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-8947" title="mcp6s26" src="http://hackadaycom.files.wordpress.com/2009/03/mcp6s26.jpg" alt="mcp6s26" width="450" height="339" /></p>
<p>Microchip&#8217;s <span><a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010485">MCP6S21/2/6/8</a> are programmable gain amplifiers that multiply an input voltage by a factor of 1, 2, 4, 5, 8, 10, 16, and 32. The MCP6S22/6/8 also have selectable input channels for working with different signal sources. The multiplication factor and input channel are configured through an <a href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus">SPI</a> interface. This chip is useful for multiplying a small input signal, and selecting among several analog input sources. We demonstrate the six channel MCP6S26 below.<br />
</span></p>
<p><span id="more-8944"></span><img class="alignnone size-full wp-image-8945" title="mcp6s26" src="http://hackadaycom.files.wordpress.com/2009/03/mcp6s26.png" alt="mcp6s26" width="452" height="218" /></p>
<p><strong><a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010485">MCP6S26</a> programmable gain amplifier (<a href="http://www.mouser.com/Search/Refine.aspx?Keyword=MCP6S26">Mouser search</a>, <a href="http://octopart.com/search?q=MCP6S26">Octopart search</a>, $2.56) <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/21117a.pdf">Datasheet</a> (PDF).</strong></p>
<p>We tested the chip in the circuit shown above with a 3.3volt power supply. A resistor voltage divider (R1-4) outputs a fraction of the supply on channels 0, 2, and 4. We used 5K resistors, but the value isn&#8217;t critical. The divider outputs 2.4volts on channel 0, 1.6volts on channel 2, and 0.8volts on channel 4.</p>
<table border="0">
<tbody>
<tr>
<td><strong>Bus Pirate</strong></td>
<td><strong>DS1801 (pin #)</strong></td>
</tr>
<tr>
<td>ADC</td>
<td>VOUT (1)</td>
</tr>
<tr>
<td>GND</td>
<td>VREF (8)</td>
</tr>
<tr>
<td>GND</td>
<td>VSS (9)</td>
</tr>
<tr>
<td>CS</td>
<td>CS (10)</td>
</tr>
<tr>
<td>MOSI</td>
<td>SI (11)</td>
</tr>
<tr>
<td>MISO</td>
<td>SO (12)</td>
</tr>
<tr>
<td>CLOCK</td>
<td>SCK (13)</td>
</tr>
<tr>
<td>+3.3V</td>
<td>VDD (13)</td>
</tr>
</tbody>
</table>
<p>We used our <a href="http://www.buspirate.com">Bus Pirate universal serial interface</a> to demonstrate this chip, but the transaction sequence will be the same for any microcontroller implementation. We connected the Bus Pirate to the MCP6S26 as shown in the table above. We setup the Bus Pirate for raw3wire mode (M, 8) with normal outputs, and enabled the on-board power supply (capital &#8216;W&#8217;).</p>
<blockquote><p>RAW3WIRE&gt;[0b01000001 0] d<br />
CS ENABLED <strong>&lt;&#8211;begin SPI transaction</strong><br />
WRITE: 0&#215;41 <strong>&lt;&#8211;change input channel command</strong><br />
WRITE: 0&#215;00 <strong>&lt;&#8211;change to channel 0</strong><br />
CS DISABLED <strong>&lt;&#8211;end SPI transaction</strong><br />
VOLTAGE PROBE: 2.4VOLTS <strong>&lt;&#8211;Vout voltage measurement</strong><br />
RAW3WIRE&gt;</p></blockquote>
<p>Writing 0b01000001 (0&#215;41) followed by a channel number changes the active MCP6S26 input. &#8216;[' lowers the chip select line to start an SPI transaction. We send the change channel command (0x41) followed by 0 to select input 0.  ']&#8216; raises the chip select line to end the SPI transaction. &#8216;d&#8217; takes a voltage measurement and shows that input 0 with 0 gain is 2.4volts.</p>
<p>We can&#8217;t amplify the input voltage beyond the power supply (2.4volts * 2 = 4.8, 4.8volts &gt; 3.3volts), so we need to change to a lower channel to play with the gain features.</p>
<blockquote><p>RAW3WIRE&gt;[0b01000001 4] d<br />
CS ENABLED<br />
WRITE: 0&#215;41<strong> &lt;&#8211;change input channel command</strong><br />
WRITE: 0&#215;04 <strong>&lt;&#8211;change to channel 4</strong><br />
CS DISABLED<br />
VOLTAGE PROBE: 0.8VOLTS <strong>&lt;&#8211;Vout voltage measurement</strong><br />
RAW3WIRE&gt;</p></blockquote>
<p>A measurement on channel 4 shows an output of just 0.8volts, plenty of room to test the gain features of the chip.</p>
<blockquote><p>RAW3WIRE&gt;[0b01000000 0b00000001] d<br />
CS ENABLED<br />
WRITE: 0&#215;40 <strong>&lt;&#8211;change gain command</strong><br />
WRITE: 0&#215;01 <strong>&lt;&#8211;gain setting (x2)</strong><br />
CS DISABLED<br />
VOLTAGE PROBE: 1.6VOLTS <strong>&lt;&#8211;Vout is now 0.8volts * 2</strong><br />
RAW3WIRE&gt;</p></blockquote>
<p>A two-byte sequence sets the amount of gain. The command 0b01000000 (0&#215;40) addresses the gain register, the second byte sets the multiplication factor (0&#215;01= gain of 2). Setting the gain to 2 multiplies the output voltage by 2, 0.8volts * 2 = 1.6volts.</p>
<blockquote><p>RAW3WIRE&gt;[0b01000000 0b00000010] d<br />
CS ENABLED<br />
WRITE: 0&#215;40 <strong>&lt;&#8211;change gain command</strong><br />
WRITE: 0&#215;02 <strong>&lt;&#8211;gain setting (x4)</strong><br />
CS DISABLED<br />
VOLTAGE PROBE: 3.2VOLTS <strong>&lt;&#8211;Vout is now 0.8volts * 4</strong><br />
RAW3WIRE&gt;</p></blockquote>
<p>This time we set a gain of 4, 0.8volts * 4 = 3.2volts.</p>
<blockquote><p>RAW3WIRE&gt;[0b01000000 0b00000011] d<br />
CS ENABLED<br />
WRITE: 0&#215;40 <strong>&lt;&#8211;change gain command</strong><br />
WRITE: 0&#215;03 <strong>&lt;&#8211;gain setting (x5)</strong><br />
CS DISABLED<br />
VOLTAGE PROBE: 3.3VOLTS <strong>&lt;&#8211;not enough headroom to reach 0.8volts * 5</strong><br />
RAW3WIRE&gt;</p></blockquote>
<p>The maximum output voltage is the chip&#8217;s power supply voltage. If we set the gain to 5, the output voltage can&#8217;t exceed the power supply of 3.3volts  (0.8volts * 5 = 4volts, 4volts &gt; 3.3volts).</p>
<blockquote><p>RAW3WIRE&gt;[0b00100000 0] d<br />
CS ENABLED<br />
WRITE: 0&#215;20 <strong>&lt;&#8211;sleep command</strong><br />
WRITE: 0&#215;00 <strong>&lt;&#8211;don&#8217;t care byte</strong><br />
CS DISABLED<br />
VOLTAGE PROBE: 0.0VOLTS <strong>&lt;&#8211;output is disabled</strong><br />
RAW3WIRE&gt;</p></blockquote>
<p>The MCP6S26 has a power-saving sleep mode. Shutdown the chip with the command 0&#215;20, followed by any byte value. Leave sleep by sending any valid command.</p>
<p>Like this post? Check out the <a href="http://hackaday.com/category/parts/">parts posts</a> you may have missed. Want to request a part post? Please leave your suggestions in the comments.</p>
<br />Posted in digital audio hacks, parts  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/8944/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/8944/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/8944/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/8944/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/8944/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/8944/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/8944/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/8944/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/8944/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/8944/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/8944/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/8944/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/8944/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/8944/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=8944&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/03/30/parts-programmable-gain-amplifier-mcp6s26/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Ian</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/03/mcp6s26.jpg" medium="image">
			<media:title type="html">mcp6s26</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/03/mcp6s26.png" medium="image">
			<media:title type="html">mcp6s26</media:title>
		</media:content>
	</item>
		<item>
		<title>How-to: Bus Pirate v1, improved universal serial interface</title>
		<link>http://hackaday.com/2009/01/22/how-to-bus-pirate-v1-improved-universal-serial-interface/</link>
		<comments>http://hackaday.com/2009/01/22/how-to-bus-pirate-v1-improved-universal-serial-interface/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 02:43:56 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[tool hacks]]></category>
		<category><![CDATA[bus pirate]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[i2c]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[interface tools]]></category>
		<category><![CDATA[jtag]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[pc at keyboard]]></category>
		<category><![CDATA[scancode]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[serial port]]></category>
		<category><![CDATA[spi]]></category>
		<category><![CDATA[uart]]></category>
		<category><![CDATA[universal interface]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=7361</guid>
		<description><![CDATA[We use the Bus Pirate to interface a new chip without writing code or designing a PCB. Based on your feedback, and our experience using the original Bus Pirate to demonstrate various parts, we updated the design with new features and cheaper components. There&#8217;s also a firmware update for both Bus Pirate hardware versions, with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=7361&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-8068" title="front450a" src="http://hackadaycom.files.wordpress.com/2009/01/front450a.jpg" alt="front450a" width="450" height="269" /></p>
<p>We use the Bus Pirate to interface a new chip without writing code or designing a PCB. Based on your feedback, and our experience using <a href="http://hackaday.com/2008/11/19/how-to-the-bus-pirate-universal-serial-interface/">the original Bus Pirate</a> to demonstrate various <a href="http://hackaday.com/category/parts/">parts</a>, we updated the design with new features and cheaper components.</p>
<p>There&#8217;s also a firmware update for both Bus Pirate hardware versions, with bug fixes, and a PC AT keyboard decoder. Check out the new <a href="http://hackaday.com/the-bus-pirate-universal-serial-interface/">Hack a Day Bus Pirate page</a>, and browse the Bus Pirate source code in our <a href="http://code.google.com/p/the-bus-pirate/source/browse/">Google code SVN repository</a>.</p>
<p>We cover the design updates and interface a digital to analog converter below.</p>
<p><span id="more-7361"></span></p>
<p><strong>Concept overview</strong></p>
<p><strong><img class="alignnone size-full wp-image-8067" title="overview-diagram1" src="http://hackadaycom.files.wordpress.com/2009/01/overview-diagram1.png" alt="overview-diagram1" width="450" height="212" /><br />
</strong></p>
<p>The Bus Pirate started as a collection of code fragments we used to test new chips without endless compile-program-run development cycles. We released it in a how-to and used it to demonstrate a bunch of serial interface ICs in our <a href="http://hackadaycom.wordpress.com/category/parts/">parts posts</a>. This article introduces an updated design with new features and a bunch of improvements.</p>
<ul>
<li>Surface mount design</li>
<li>Pull-up resistors on all bus lines with external voltage source</li>
<li>Software resettable 3.3volt and 5volt power supplies</li>
<li>Voltage monitoring of all power supplies</li>
<li>An external voltage measurement probe</li>
<li>Cheaper parts</li>
</ul>
<p><img class="alignnone size-full wp-image-7996" title="top" src="http://hackadaycom.files.wordpress.com/2009/01/top.jpg" alt="top" width="450" height="254" /></p>
<p><strong>Hardware</strong></p>
<p><strong><img class="alignnone size-full wp-image-8001" title="cct-450" src="http://hackadaycom.files.wordpress.com/2009/01/cct-450.jpg" alt="cct-450" width="450" height="140" /></strong></p>
<p><a href="http://hackadaycom.files.wordpress.com/2009/01/cct1.png">Click for a full size schematic image</a><strong> </strong>(PNG). The circuit and PCB are designed using the freeware version of <a href="http://www.cadsoft.de/">Cadsoft Eagle</a>. All the files for this project are included in the project archive linked at the end of the article.</p>
<p><em>Microcontroller</em></p>
<p>We used a Microchip <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en026374">PIC24FJ64GA002</a> 28pin SOIC microcontroller (IC1) in this project. The power pins have 0.1uF bypass capacitors to ground (C1,2). The 2.5volt internal regulator requires a 10uF tantalum capacitor (C20). The chip is programmed through a five pin header (ICSP). A 2K pull-up resistor (R1) is required for the MCLR function on pin 1. Read more about this chip in our <a href="http://hackaday.com/2008/09/18/web-server-on-a-business-card-part-1/">PIC24F introduction</a>.</p>
<p><em>RS-232 transceiver<br />
</em></p>
<p>An inexpensive <a href="http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1068">MAX3232CSE</a> RS232 transceiver (IC2) interfaces the PIC to a PC serial port. This chip replaces the expensive through-hole <a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=MAX3223EEPP%2B-ND">MAX3223EEPP+</a> used in the previous version of the Bus Pirate. The serial interface will work with a USB-&gt;serial adapter.</p>
<p><em>Bus pull-up resistors</em></p>
<p><em><img class="alignnone size-full wp-image-8006" title="cct-pu450" src="http://hackadaycom.files.wordpress.com/2009/01/cct-pu450.png" alt="cct-pu450" width="450" height="137" /><br />
</em></p>
<p>The original Bus Pirate has 3.3volt pull-up resistors on 2 pins, but most of our tests required additional external resistors. The updated design has pull-up resistors (R20-23) on the three main bus signals (data in, data out, clock) and the chip select (CS) pin.</p>
<p>A row of jumpers (SV5) connects each resistor to an external voltage supplied through the Vext terminal (X4). Through-hole resistors are used like jumper-wires to make the PCB easier to etch at home.</p>
<p>We couldn&#8217;t find an elegant way to control an arbitrary voltage pull-up resistor array from a 3.3volt microcontroller. If you have any ideas, please share them in the comments.</p>
<p><em>Power supply</em></p>
<p>VR1 is a 3.3volt supply for the microcontroller and RS232 transceiver. VR2 is a 5volt supply. Both require two 0.1uF bypass capacitors (C3-C6). J1 is a power supply jack for a common <a href="http://en.wikipedia.org/wiki/DC_connector">2.1mm DC barrel plug</a>. 7-10volts DC is probably the ideal power supply range.</p>
<p><img class="alignnone size-full wp-image-8008" title="cct-vr4" src="http://hackadaycom.files.wordpress.com/2009/01/cct-vr4.png" alt="cct-vr4" width="450" height="230" /></p>
<p>The original Bus Pirate had dual power supplies, 3.3volts and 5volts, so most ICs could be interfaced without an additional power supply. A major annoyance was the lack of a power reset for connected chips. If a misconfigured IC needed to be power-cycled, we had to disconnect a wire. We got so tired of this routine that we added a software controlled reset to the updated design.</p>
<p>VR3 (3.3volts) and VR4 (5volts) are TI <a href="http://focus.ti.com/docs/prod/folders/print/tps79650.html">TPS796XX</a> voltage regulators with an enable switch. A high level on pin 1 enables the regulator. A pull-down resistor (R13,R12) ensures that the regulators are off when the PIC isn&#8217;t actively driving the line, such as during power-up initialization. The datasheet specifies a hefty capacitor on the input (C23, C21) and output (C24, C22) pins, we used the same 10uF tantalum we use everywhere. An additional, optional, 0.1uF capacitor (C12,C11) can improve regulation.</p>
<p>The switchable regulators are powered by VR2, a 5volt supply.  We did this because the maximum input for VR3 and VR4 is 6volts, leaving the device with a narrow 5.2-6volt power supply range. VR2 will work well above 10volts, and provides an adequate supply for the other regulators.</p>
<p>VR3 (3.3volts) has plenty of headroom to operate from a 5volt supply. VR4 (5volts) will lose about 0.2volts, but 4.8volts remains well within the acceptable range for most 5volt chips. In practice, and under light loads, we see less than 0.1volts drop-out from VR4.</p>
<p><em>Voltage monitoring</em></p>
<p><em><img class="alignnone size-full wp-image-8003" title="cct-adcin" src="http://hackadaycom.files.wordpress.com/2009/01/cct-adcin.png" alt="cct-adcin" width="373" height="76" /><br />
</em></p>
<p>Voltage monitoring is a new feature we&#8217;re really excited about. Has your project ever mysteriously stopped responding because of an accidental short circuit? The Bus Pirate&#8217;s power supplies are equipped with voltage monitoring that can detect a change in power levels.</p>
<p>Each monitored signal is connected to an <a href="http://en.wikipedia.org/wiki/Analog-to-digital_converter">analog to digital converter</a> (ADC) through a resistor voltage divider. Two 10K resistors (R10,R11 above) divide the input voltage in half, making it possible to measure up to 6.6volts with the 3.3volt PIC microcontroller.</p>
<p>The Bus Pirate has four voltage monitors. The 3.3volt and 5volt power supplies are monitored, as is the external voltage fed to the pull-up resistors. A fourth monitor is connected to pin 9 of the output header to make a voltage probe.</p>
<p><strong>PCB</strong></p>
<p><strong><img class="alignnone size-large wp-image-8134" title="brd450alt" src="http://hackadaycom.files.wordpress.com/2009/01/brd450alt.png?w=450&#038;h=330" alt="brd450alt" width="450" height="330" /><br />
</strong></p>
<p><a href="http://hackadaycom.files.wordpress.com/2009/01/brd.png">Click for a full size placement diagram</a> (PNG). The board is a quasi single-sided design, we etched ours in the lab on a single-sided photo-resist PCB. At the top, near C13, two jumper wires meet at a single via; we soldered one jumper wire to the other on the back of the board.</p>
<p><em>Part list</em></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>Part</td>
<td>Value</td>
</tr>
<tr>
<td>IC1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=V/yyTCAHA4D/h5r3CRQDtA==">PIC24FJ64GA002</a> (SOIC)</td>
</tr>
<tr>
<td>IC2</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=SN75C3232EDvirtualkey59500000virtualkey595-SN75C3232ED">MAX3232CSE</a> (SOIC-N)</td>
</tr>
<tr>
<td>VR1</td>
<td><a href="https://www.mouser.com/Search/ProductDetail.aspx?R=LD1117S33CTRvirtualkey51120000virtualkey511-LD1117S33C">LD1117S33</a> 3.3volt regulator (SOT223)</td>
</tr>
<tr>
<td>VR2</td>
<td><a href="https://www.mouser.com/Search/ProductDetail.aspx?R=LD1117S50TRvirtualkey51120000virtualkey511-LD1117S50">LD1117s50</a> 5volt regulator (SOT223)</td>
</tr>
<tr>
<td>VR3</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMsGz1a6aV8DcPXeWoVS0Fnzr3zi8%252bAr99Q%3d">TPS79633</a> 3.3volt regulator (SOT223-6)</td>
</tr>
<tr>
<td>VR4</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=TPS79650DCQRvirtualkey59500000virtualkey595-TPS79650DCQR">TPS79650</a> 5volt regulator (SOT223-6)</td>
</tr>
<tr>
<td>C1-13</td>
<td><a href="https://www.mouser.com/Search/ProductDetail.aspx?R=C0805C104M5RACTUvirtualkey64600000virtualkey80-C0805C104M5R">0.1uF capacitor</a> (0805)</td>
</tr>
<tr>
<td>C20-24</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=293D106X96R3A2TE3virtualkey61320000virtualkey74-293D106X96R3A2TE3">10uF tantalum capacitor</a> (SMC A)</td>
</tr>
<tr>
<td>R1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=jBethxrBxZb5NLDetw123g%3d%3d">2000 ohm resistor</a> (0805)</td>
</tr>
<tr>
<td>R2,3</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=2BMLUTrrT4P7Xm58YbKmPg==">390 ohm resistor</a> (0805)</td>
</tr>
<tr>
<td>R4-13</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMtlubZbdhIBIADEshVnklemK%252bhrLNEuMe8%3d">10000 ohm resistor</a> (0805)</td>
</tr>
<tr>
<td>R20-23</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=8tsW7z%2fc78pkoLNVKn1xoQ%3d%3d">2.2K</a>-<a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMtMTfExsNintTsTnthYiOMx%2fND7UkWzrMM%3d">10K</a> ohm resistor (through-hole)</td>
</tr>
<tr>
<td>LED1,2</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=7JStj%2fjQ2SElGv%2fp7IzKlg%3d%3d">LED</a> (0805)</td>
</tr>
<tr>
<td>J1</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=8xMK%2bwDsXhcfMNb/YnnwLQ==">2.1mm power jack</a></td>
</tr>
<tr>
<td>X2,X4</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=wjes1ZhMGKfGv3iS94oZ%252bQ%3d%3d">screw clamp (2 terminals)</a> *untested</td>
</tr>
<tr>
<td>X3</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=nAEW9fCjKd%2fyLNwP2ItddQ%3d%3d"></a><a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=nAEW9fCjKd%2fyLNwP2ItddQ%3d%3d">db9 female serial port connector</a> *untested</td>
</tr>
<tr>
<td>ICSP</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=9-146278-0virtualkey57100000virtualkey571-9-146278-0">0.1&#8243; pin header, straight</a></td>
</tr>
<tr>
<td>SV4</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=9-146278-0virtualkey57100000virtualkey571-9-146278-0">0.1&#8243; pin header</a> or shrouded header</td>
</tr>
<tr>
<td>SV5</td>
<td><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=9-146278-0virtualkey57100000virtualkey571-9-146278-0">0.1&#8243; pin header, straight</a></td>
</tr>
</tbody>
</table>
<p><strong>Firmware</strong></p>
<p>The firmware is written in C using the free demonstration version of the <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en010065">PIC C30 compiler</a>. Learn all about working with this PIC in our <a href="http://hackaday.com/2008/09/18/web-server-on-a-business-card-part-1/">introduction to the PIC 24F series</a>.</p>
<p>The latest firmware is posted on the <a href="http://hackaday.com/the-bus-pirate-universal-serial-interface/">Hack a Day Bus Pirate page</a>. The latest source is in our <a href="http://code.google.com/p/the-bus-pirate/source/checkout">Google Code SVN repository</a>.</p>
<p><strong>Using it</strong></p>
<p><strong><img class="alignnone size-full wp-image-8004" title="cct-pinout450" src="http://hackadaycom.files.wordpress.com/2009/01/cct-pinout450.png" alt="cct-pinout450" width="450" height="179" /><br />
</strong></p>
<p>The diagram above shows the Bus Pirate pinout.</p>
<p>We made a cable with alligator clips on the end, and added labels to each wire so we don&#8217;t have to refer to this table every time we interface a new chip.</p>
<p>If you know of any cool connectors or cables, please link to them in the comments.</p>
<p><img class="alignnone size-full wp-image-8066" title="ltc2640" src="http://hackadaycom.files.wordpress.com/2009/01/ltc2640.jpg" alt="ltc2640" width="450" height="354" /></p>
<p><em>LTC2640 SPI digital to analog voltage converter</em></p>
<p>The Linear Technology <a href="http://www.linear.com/pc/productDetail.jsp?navId=H0,C1,C1155,C1005,C1156,P85250">LTC2640-LZ8</a> is an 8bit <a href="http://en.wikipedia.org/wiki/Digital-to-analog_converter">digital to analog converter</a> (DAC) programmed over <a href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus">SPI</a>. A DAC is essentially a programmable voltage divider. They&#8217;re useful for recreating waveforms, such as audio signals. An 8bit DAC has 255 even intervals between 0 and the reference voltage, the L part we used has an internal 2.5volt reference.</p>
<p>The LTC2640 only comes in a small SOT223-8 package, so we made a breadboard adapter in the profile of a DIP-8 chip.  Our LTC2640 footprint is included in the project archive attached at the end of this article.</p>
<p><img class="alignnone size-large wp-image-8019" title="ltc2640450" src="http://hackadaycom.files.wordpress.com/2009/01/ltc2640450.png?w=450&#038;h=218" alt="ltc2640450" width="450" height="218" /></p>
<p>The schematic above shows our test circuit for the LTC2640. It requires a 2.7-5volt power supply, we used the Bus Pirate&#8217;s 3.3volt supply. C1 is a bypass capacitor between the power pin and ground. Pin 8 is an active-low reset pin, tie it high for normal operation. Pin 7 is the DAC output, connect the Bus Pirate voltage measurement probe (ADC) here.</p>
<table border="0">
<tbody>
<tr>
<td><strong>Bus Pirate</strong></td>
<td><strong>LTC2640 (pin #)</strong></td>
</tr>
<tr>
<td>MOSI</td>
<td>SDI (3)</td>
</tr>
<tr>
<td>CLOCK</td>
<td>SCK (2)</td>
</tr>
<tr>
<td>CS</td>
<td>CS/LD (1)</td>
</tr>
<tr>
<td>ADC</td>
<td>VOUT (7)</td>
</tr>
<tr>
<td>+3.3volts</td>
<td>CLR (8 )</td>
</tr>
<tr>
<td>+3.3volts</td>
<td>VDD (5)</td>
</tr>
<tr>
<td>GND</td>
<td>GND (4)</td>
</tr>
</tbody>
</table>
<p>We connected the Bus Pirate to the LTC2640 as shown in the table. The LTC2640 doesn&#8217;t have a data output pin, this SPI connection remains unused.</p>
<p>The Bus Pirate&#8217;s hardware SPI library and software RAW3WIRE library are compatible with the LTC2640&#8242;s SPI interface. We used the SPI library; if you use the RAW3WIRE library be sure to choose <em>normal pin output</em>.</p>
<blockquote><p>HiZ&gt;m<strong>&lt;&#8211;select mode</strong><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 AT KEYBOARD<br />
MODE&gt;5<strong>&lt;&#8211;SPI or RAW3WIRE</strong><br />
900 MODE SET<br />
Set speed:<br />
1. 30KHz<br />
2. 125KHz<br />
3. 250KHz<br />
4. 1MHz<br />
SPEED&gt;1 <strong>&lt;&#8211;test at low speed</strong><br />
&#8230;<br />
102 SPI READY<br />
SPI&gt;</p></blockquote>
<p>Press M for the Bus Pirate mode menu, choose 5 for SPI mode. There are a bunch of configuration options for the SPI module, use the default options for all of them. After SPI mode is ready we need to configure the power supply.</p>
<blockquote><p>SPI&gt;p<strong>&lt;&#8211;power supply setup</strong><br />
W/w toggles 3.3volt supply?<br />
1. NO<br />
2. YES<br />
MODE&gt;2<strong>&lt;&#8211;use 3.3volt supply</strong><br />
W/w toggles 5volt supply?<br />
1. NO<br />
2. YES<br />
MODE&gt;1<strong>&lt;&#8211;don&#8217;t use 5volt supply</strong><br />
9xx SUPPLY CONFIGURED, USE W/w TO TOGGLE<br />
9xx VOLTAGE MONITOR: 5V: 0.0 | 3.3V: 0.0 | VPULLUP: 0.0 |<br />
SPI&gt;</p></blockquote>
<p>p opens the Bus Pirate power supply menu. We use the 3.3volt supply but not the 5volt supply. The voltage monitor verifies that the power supplies are off.</p>
<blockquote><p>SPI&gt;W<strong>&lt;&#8211;capital W (<a href="http://www.w3.org/TR/CSS2/text.html#caps-prop">silly CSS</a>) enables power supply</strong><br />
9xx 3.3VOLT SUPPLY ON<br />
SPI&gt;v<strong>&lt;&#8211;voltage monitor</strong><br />
9xx VOLTAGE MONITOR: 5V: 0.0 | 3.3V: 3.3 | VPULLUP: 0.0 |<br />
SPI&gt;</p></blockquote>
<p>Capital &#8216;W&#8217; enables any power supplies selected in the previous menu, a small &#8216;w&#8217; disables them. V displays the supply voltage monitor, which now shows 3.3volts output from the 3.3volt supply.</p>
<p>Now that configuration is finished, we can send commands to the LTC2640 over the SPI bus. The LTC2640 has a 24bit (3byte) interface protocol. The first byte is a command, followed by two data bytes. The LTC2640 is available in 8,10, and 12bit versions; the 8bit version uses the first byte to set the DAC value, and ignores the second byte.</p>
<blockquote><p>SPI&gt;[0b00110000 255 0]<strong>&lt;&#8211;set DAC to full</strong><br />
110 SPI CS ENABLED<br />
120 SPI WRITE: 0&#215;30<strong>&lt;&#8211;write DAC command</strong><br />
120 SPI WRITE: 0xFF<strong>&lt;&#8211;DAC value</strong><br />
120 SPI WRITE: 0&#215;00<strong>&lt;&#8211;don&#8217;t care</strong><br />
140 CS DISABLED<br />
SPI&gt;</p></blockquote>
<p>Every SPI command begins by enabling the chip select pin ([). The first byte is the command to update the DAC (0b00110000), followed by the value to output (255), and a third byte that's ignored (0). The command ends by disabling chip select (]).</p>
<p>We used an 8bit DAC with 255 even voltage steps, output set to 255 is 100%. We can use the Bus Pirate voltage probe to measure the output.</p>
<blockquote><p>SPI&gt;d<strong>&lt;&#8211;measure voltage</strong><br />
9xx VOLTAGE PROBE: 2.5VOLTS<strong>&lt;&#8211;DAC output</strong><br />
SPI&gt;</p></blockquote>
<p>D triggers a voltage measurement. The DAC output voltage is 100% (255/255) of the internal reference, 2.5volts.</p>
<blockquote><p>SPI&gt;[0b00110000 0 0] d<br />
110 SPI CS ENABLED<br />
120 SPI WRITE: 0&#215;30<strong>&lt;&#8211;write DAC command</strong><br />
120 SPI WRITE: 0&#215;00<strong>&lt;&#8211;DAC value</strong><br />
120 SPI WRITE: 0&#215;00<strong>&lt;&#8211;don&#8217;t care</strong><br />
140 CS DISABLED<br />
9xx VOLTAGE PROBE: 0.0VOLTS<strong>&lt;&#8211;DAC output</strong><br />
SPI&gt;</p></blockquote>
<p>The same command with a DAC value of 0 outputs 0% (0/255) of 2.5volts; 0volts.</p>
<blockquote><p>SPI&gt;[0b00110000 128 0] d<br />
110 SPI CS ENABLED<br />
120 SPI WRITE: 0&#215;30<strong>&lt;&#8211;write DAC command</strong><br />
120 SPI WRITE: 0&#215;80<strong>&lt;&#8211;DAC value</strong><br />
120 SPI WRITE: 0&#215;00<strong>&lt;&#8211;don&#8217;t care</strong><br />
140 CS DISABLED<br />
9xx VOLTAGE PROBE: 1.2VOLTS<strong>&lt;&#8211;DAC output</strong><br />
SPI&gt;</p></blockquote>
<p>A DAC value of 128 is about 50% (128/255) of the reference voltage, 1.2volts.</p>
<blockquote><p>SPI&gt;[0b01000000 0 0] d<br />
110 SPI CS ENABLED<br />
120 SPI WRITE: 0&#215;40<strong>&lt;&#8211;power down command</strong><br />
120 SPI WRITE: 0&#215;00<strong>&lt;&#8211;don&#8217;t care</strong><br />
120 SPI WRITE: 0&#215;00<strong>&lt;&#8211;don&#8217;t care</strong><br />
140 CS DISABLED<br />
9xx VOLTAGE PROBE: 0.0VOLTS<strong>&lt;&#8211;DAC off</strong><br />
SPI&gt;</p></blockquote>
<p>The LTC2640 has a low power mode, triggered by the command 0b01000000 and two bytes that are ignored. After the power down command we can verify that there&#8217;s output from the DAC. Write any DAC value to exit low power mode.</p>
<p><strong>Taking it further</strong></p>
<p>What&#8217;s the next step for the Bus Pirate? We&#8217;ll eventually make a final update to the design that includes USB on a professionally made, double-sided PCB. Power supply indicator LEDs were slated for this version, but didn&#8217;t get included. It would also be handy to have an AT  keyboard connector for debugging without a PC. Check out the roadmap and wishlists on the <a href="http://hackaday.com/the-bus-pirate-universal-serial-interface/">Hack a Day Bus Pirate page</a>.</p>
<p><strong>Download: <a href="http://blog.mahalo.com/hackaday/howto/buspirate.v1a.zip">buspirate.v1a.zip</a></strong></p>
<br />Posted in hardware, how-to, tool hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/7361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/7361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/7361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/7361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/7361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/7361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/7361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/7361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/7361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/7361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/7361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/7361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/7361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/7361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=7361&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/01/22/how-to-bus-pirate-v1-improved-universal-serial-interface/feed/</wfw:commentRss>
		<slash:comments>65</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Ian</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/front450a.jpg" medium="image">
			<media:title type="html">front450a</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/overview-diagram1.png" medium="image">
			<media:title type="html">overview-diagram1</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/top.jpg" medium="image">
			<media:title type="html">top</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cct-450.jpg" medium="image">
			<media:title type="html">cct-450</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cct-pu450.png" medium="image">
			<media:title type="html">cct-pu450</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cct-vr4.png" medium="image">
			<media:title type="html">cct-vr4</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cct-adcin.png" medium="image">
			<media:title type="html">cct-adcin</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/brd450alt.png?w=450" medium="image">
			<media:title type="html">brd450alt</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/cct-pinout450.png" medium="image">
			<media:title type="html">cct-pinout450</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/ltc2640.jpg" medium="image">
			<media:title type="html">ltc2640</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/01/ltc2640450.png?w=450" medium="image">
			<media:title type="html">ltc2640450</media:title>
		</media:content>
	</item>
		<item>
		<title>Bus Pirate firmware update (v.0c), JTAG and more</title>
		<link>http://hackaday.com/2008/12/01/bus-pirate-firmware-update-v0c-jtag-and-more/</link>
		<comments>http://hackaday.com/2008/12/01/bus-pirate-firmware-update-v0c-jtag-and-more/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 20:37:35 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[classic hacks]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[tool hacks]]></category>
		<category><![CDATA[bench tools]]></category>
		<category><![CDATA[bus]]></category>
		<category><![CDATA[bus pirate]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[i2c]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[jtag]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://hackadaycom.wordpress.com/?p=6457</guid>
		<description><![CDATA[Download: buspirate.v0c.zip A few weeks ago we wrote about our Bus Pirate universal serial interface tool. We used the recent holiday to add some new features, like a JTAG programmer, macros, frequency measurement, and more. A major code reorganization makes everything easier to read and update. Check out the a demonstration of the new features [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=6457&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-6496" title="stat" src="http://hackadaycom.files.wordpress.com/2008/12/stat.jpg" alt="stat" width="450" height="323" /></p>
<p><strong>Download:</strong> <a href="http://blog.mahalo.com/hackaday/howto/buspirate.v0c.zip">buspirate.v0c.zip</a></p>
<p>A few weeks ago we wrote about our <a href="http://hackaday.com/2008/11/19/how-to-the-bus-pirate-universal-serial-interface/">Bus Pirate universal serial interface tool</a>. We used the recent holiday to add some new features, like a JTAG programmer, macros, frequency measurement, and more. A major code reorganization makes everything easier to read and update.</p>
<p>Check out the a demonstration of the new features below. We&#8217;re compiling a roadmap and wish list, so share your ideas in the comments. You can also see how we used the Bus Pirate to <a href="http://hackaday.com/2008/11/25/how-to-read-a-fedex-kinkos-smart-card-sle4442/">read a smart card</a> and <a href="http://hackaday.com/2008/11/28/parts-133mhz-162khz-programmable-oscillator-ds1077/">test-drive an I2C crystal oscillator</a>.</p>
<p><span id="more-6457"></span><strong>New protocols<br />
</strong></p>
<blockquote><p>I2C&gt;m <strong>&lt;&#8211;setup mode</strong><br />
1. HiZ <strong>&lt;&#8211; high impedance pins (safe mode)</strong><br />
2. 1-WIRE <strong>&lt;&#8211; not ready for this release</strong><br />
3. UART<br />
4. I2C<br />
5. SPI<br />
6. JTAG <strong>&lt;&#8211; interface and programmer</strong><br />
7. RAW2WIRE<br />
8. RAW3WIRE<br />
MODE&gt;1<br />
900 MODE SET<br />
HiZ&gt;</p></blockquote>
<p>This firmware release lists three new protocols.</p>
<p>Hi-Z makes all pins <a href="http://en.wikipedia.org/wiki/High_impedance">high impedance</a>/input, a safe state that won&#8217;t damage an attached circuit. To be safe, the Bus Pirate now starts in this mode.</p>
<p>1-Wire is listed, but we couldn&#8217;t include it in this release because we still don&#8217;t have any parts to test with our library. This is just a placeholder for now, but it will be added as soon as we get a 1-Wire part to test.</p>
<p>We wrote a simplified JTAG interface that includes a XSVF player for programming JTAG device chains.</p>
<p>**We included a hardware I2C library, but according to the device errata <a href="http://forum.microchip.com/tm.aspx?m=271183&amp;mpage=1">there&#8217;s a bug in the 24FJ64GA002 rev3 I2C module</a>. This will work with a different chip (e.g. a 28pin dsPIC33).</p>
<p><em>Connection table</em></p>
<table border="0">
<tbody>
<tr>
<td>
<div><strong>PIN</strong></div>
</td>
<td><strong>1-Wire</strong></td>
<td>
<div><strong>I2C*</strong></div>
</td>
<td>
<div><strong>SPI</strong>**</div>
</td>
<td>
<div><strong>RS232</strong></div>
</td>
<td><strong>JTAG</strong></td>
</tr>
<tr>
<td>
<div><strong>B9</strong></div>
</td>
<td>SDA</td>
<td>
<div>SDA</div>
</td>
<td>
<div>MOSI</div>
</td>
<td>
<div>-</div>
</td>
<td>TDI</td>
</tr>
<tr>
<td>
<div><strong>B8</strong></div>
</td>
<td>-</td>
<td>
<div>SCL</div>
</td>
<td>
<div>CLK</div>
</td>
<td>
<div>-</div>
</td>
<td>TCK</td>
</tr>
<tr>
<td>
<div><strong>B7</strong></div>
</td>
<td>-</td>
<td>
<div>-</div>
</td>
<td>
<div>MISO</div>
</td>
<td>
<div>RX</div>
</td>
<td>TDO</td>
</tr>
<tr>
<td>
<div><strong>B6</strong></div>
</td>
<td>-</td>
<td>
<div>-</div>
</td>
<td>
<div>CS</div>
</td>
<td>
<div>TX</div>
</td>
<td>TMS</td>
</tr>
<tr>
<td>
<div><strong>B5</strong></div>
</td>
<td>AUX</td>
<td>
<div>AUX</div>
</td>
<td>
<div>AUX</div>
</td>
<td>
<div>AUX</div>
</td>
<td>AUX</td>
</tr>
<tr>
<td>
<div><strong>Ground</strong></div>
</td>
<td>GND</td>
<td>
<div>GND</div>
</td>
<td>
<div>GND</div>
</td>
<td>
<div>GND</div>
</td>
<td>GND</td>
</tr>
</tbody>
</table>
<p>*also raw 2 wire. **also raw 3 wire.</p>
<p>The new modes connect to the Bus Pirate as outlined in the table.</p>
<p><strong>New features and settings</strong></p>
<p><em>Frequency measurement</em></p>
<blockquote><p>HiZ&gt;F <strong>&lt;&#8211; do a frequency count</strong><br />
9xx FREQ COUNT ON AUX: 22199552Hz (22MHz)<br />
HiZ&gt;</p></blockquote>
<p>As seen in the <a href="http://hackaday.com/2008/11/28/parts-133mhz-162khz-programmable-oscillator-ds1077/">DS1077 demonstration</a>, we added a frequency counter to the Bus Pirate&#8217;s AUX pin.  &#8216;F&#8217; measures frequency, maximum of about 50MHz.</p>
<p><em>Assign axillary control</em></p>
<blockquote><p>HiZ&gt;c <strong>&lt;&#8211; menu c</strong><br />
AUX PIN<br />
1. AUX (DEFAULT)<br />
2. CS/TMS<br />
MODE&gt;1 <strong>&lt;&#8211; set AUX control mode</strong><br />
9xx AUX: DEFAULT SETTING (AUX PIN)<br />
HiZ&gt;</p></blockquote>
<p>Sometimes we need to control the chip select (CS) /JTAG state machine (TMS) pins manually. &#8216;c&#8217; toggles the pin control between the axillary pin and the chip select pin.</p>
<p><em>Set terminal speed</em></p>
<blockquote><p>HiZ&gt;b <strong>&lt;&#8211; menu b</strong><br />
Set serial port speed: (bps)<br />
1. 300<br />
&#8230;<br />
9. 115200<br />
SPEED&gt;9 <strong>&lt;&#8211; set speed</strong><br />
Adjust your terminal and press space to continue<br />
HiZ&gt;</p></blockquote>
<p>&#8216;b&#8217; adjusts the PC-side serial port speed.</p>
<p><strong>Macros</strong></p>
<p>A new syntax addition, &#8216;(#)&#8217;, triggers protocol dependent macros.</p>
<blockquote><p>JTAG&gt;(0) <strong>&lt;&#8211;macro 0</strong><br />
0.Macro menu<br />
1.Reset chain<br />
2.Probe chain<br />
3.XSVF player<br />
JTAG&gt;</p></blockquote>
<p>In any mode, use the macro (0) to display a menu of available macros.</p>
<p><em>I2C address search </em></p>
<blockquote><p>I2C&gt;(1) <strong>&lt;&#8211;scan I2C addresses macro</strong><br />
xxx Searching 7bit I2C address space.<br />
Found devices at:<br />
0xB0 0xB1 <strong>&lt;&#8211;DS1077 responds to write and read address</strong><br />
I2C&gt;</p></blockquote>
<p>The I2C library includes a macro to automatically search the I2C address range for devices. Helpful when you work with an unknown chip.</p>
<p><em>Raw2wire smart card ISO 7813-3 ATR</em></p>
<blockquote><p>RAW2WIRE&gt;(1)<strong>&lt;&#8211;ATR and decode macro</strong><br />
ISO 7813-3 ATR<br />
950 AUX LOW<br />
951 AUX HIGH<br />
4xx RAW2WIRE 0&#215;01 CLOCK TICKS<br />
950 AUX LOW<br />
ISO 7813-3 reply: 0xA2 0&#215;13 0&#215;10 0&#215;91<strong>&lt;&#8211;ATR bytes</strong><br />
Protocol: 2 wire <strong>&lt;&#8211;decoded ATR data</strong><br />
Read type: to end<strong>&lt;&#8211;</strong><br />
Data units: 256 <strong>&lt;&#8211;</strong><br />
Data unit length: 8 bits <strong>&lt;&#8211;</strong><br />
RAW2WIRE&gt;</p></blockquote>
<p>Macro 1 resets and identifies a smart card. For more about the ISO7813-3 ATR, see how we <a href="http://hackaday.com/2008/11/25/how-to-read-a-fedex-kinkos-smart-card-sle4442/">used the Bus Pirate to read a smart card</a>.</p>
<p><strong>JTAG</strong></p>
<p><a href="http://www.fpga4fun.com/JTAG.html">JTAG</a> is a debugging and programming interface for all kinds of electronics. The raw hardware interface can be accessed with the Bus Pirate&#8217;s raw 3 wire library, but we added a few features to make it much easier.</p>
<p><strong><img class="alignnone size-full wp-image-6468" title="jtagstate" src="http://hackadaycom.files.wordpress.com/2008/12/jtagstate.png" alt="jtagstate" width="450" height="312" /></strong></p>
<p>JTAG has different modes where data entry does different things. Modes are navigated with the JTAG TMS signal; there are a <a href="http://www.fpga4fun.com/JTAG2.html">bunch of JTAG modes</a>, called states.The Bus Pirate&#8217;s JTAG library is just the raw 3 wire library, enhanced to help with JTAG state changes.</p>
<p>We only implemented the JTAG states we need to get data in and out of a JTAG device chain: reset, idle, data register, and instruction register. Macro (1) issues a JTAG chain reset, and initializes the chain to the idle state. { puts the JTAG chain in data register mode. [ puts the chain in instruction register mode. ] or } return the chain to the idle state. The Bus Pirate has an internal state machine tracker that is smart enough to manage the chain without explicitly returning the chain to idle; in other words, you don&#8217;t have to close your tags. The state machine tracker reports every state change to help debug problems.</p>
<blockquote><p>JTAG&gt;[0xfe {rrrr} <strong>&lt;-- same as [0xfe]{rrrr}</strong><br />
xxx JTAGSM: ALREADY IDLE<br />
xxx JTAGSM: IDLE-&gt;Instruction Register (DELAYED ONE BIT FOR TMS)<br />
610 JTAG READY TO WRITE IR <strong>&lt;&#8211; JTAG chain instruction register</strong><br />
620 JTAG WRITE: 0xFE <strong>&lt;&#8211; request ID</strong><br />
xxx JTAGSM: (WROTE DELAYED BIT) IR-&gt;IDLE<strong> &lt;&#8211;back to IDLE</strong><br />
xxx JTAGSM: IDLE-&gt;Data Register <strong>&lt;&#8211;IDLE to data register</strong><br />
611 JTAG READY TO READ/WRITE DR<br />
630 JTAG READ: 0&#215;93 <strong>&lt;&#8211;device ID</strong><br />
630 JTAG READ: 0&#215;40<br />
630 JTAG READ: 0&#215;60<br />
630 JTAG READ: 0&#215;59<br />
xxx JTAGSM: DR-&gt;IDLE <strong>&lt;&#8211;back to idle</strong><br />
640 JTAG IDLE<br />
JTAG&gt;</p></blockquote>
<p>Here is a short interaction with a <a href="http://www.xilinx.com/products/xc9500xl/index.htm">Xilinx XC9572 CPLD</a>. We go to the instruction register ( [ ), and send the device ID request command (0xfe). Then, we go the the data register( { ), read four bytes (rrrr, or r:4 shorthand), and return to idle ( } ).</p>
<p><em>What are delayed bit writes?</em></p>
<p>JTAG requires that the last data bit written to the instruction register be entered at the same time as the state change. Since the Bus Pirate has no way of predicting when we'll actually change states, it delays the last bit of each byte write until one of three things happens:</p>
<ul>
<li>Exit the instruction register with a }, ], or { command</li>
<li>Write another byte value</li>
<li>A read command</li>
</ul>
<p>Pending bits are not cleared by bitwise operations (like ! or ^). Do these before writing your last byte, or change the code. We haven&#8217;t implemented pending writes to the data register, but it&#8217;s probably needed. You might need to implement this if you&#8217;re writing the data register, rather just reading, like we did.</p>
<p><em>JTAG Macros</em></p>
<blockquote><p>JTAG&gt;(1) <strong>&lt;&#8211;macro 1</strong><br />
xxx JTAGSM: RESET<br />
xxx JTAGSM: RESET-&gt;IDLE<br />
JTAG&gt;</p></blockquote>
<p>JTAG macro (1) resets the JTAG chain and then advances it to the idle state.</p>
<blockquote><p>JTAG&gt;(2) <strong>&lt;&#8211;macro 2</strong><br />
xxx JTAG INIT CHAIN<br />
xxx JTAGSM: RESET<br />
xxx JTAGSM: RESET-&gt;IDLE<br />
xxx JTAGSM: IDLE-&gt;Instruction Register (DELAYED ONE BIT FOR TMS)<br />
xxx JTAGSM: IR-&gt;IDLE<br />
xxx JTAGSM: IDLE-&gt;Data Register<br />
xxx JTAGSM: DR-&gt;IDLE<br />
xxx JTAGSM: RESET<br />
xxx JTAGSM: RESET-&gt;IDLE<br />
xxx JTAGSM: IDLE-&gt;Data Register<br />
xxx JTAG CHAIN REPORT: <strong>&lt;&#8211;start of report</strong><br />
0&#215;01 DEVICE(S)<br />
#0&#215;01 : 0&#215;93 0&#215;40 0&#215;60 0&#215;59 <strong>&lt;&#8211;device IDs</strong><br />
xxx JTAGSM: DR-&gt;IDLE<br />
JTAG&gt;</p></blockquote>
<p>Macro (2) resets the chain, counts the devices, and reports all the device IDs.</p>
<p><img class="alignnone size-full wp-image-6470" title="xsfv" src="http://hackadaycom.files.wordpress.com/2008/12/xsfv.png" alt="xsfv" width="450" height="350" /></p>
<blockquote><p>JTAG&gt;(3) <strong>&lt;&#8211;macro 3</strong><br />
6xx JTAG XSVF PLAYER<br />
xxx XON/XOFF FLOW CONTROL REQUIRED <strong>&lt;&#8211;required!</strong><br />
xxx PRESS z TO CONTINUE <strong>&lt;&#8211; press z</strong><br />
xxx BEGIN XSVF UPLOAD <strong>&lt;&#8211; upload the file</strong><br />
6&#215;0 XSVF OK <strong>&lt;&#8211; result or error</strong><br />
YOUR PC DRIBBLED MAX 0&#215;05 BYTES AFTER XOFF (THAT&#8217;S OK)<br />
6xx PRESS z 5 TIMES TO CONTINUE <strong>&lt;&#8211; continue</strong><br />
JTAG&gt;</p></blockquote>
<p>Macro 3 is an XSVF player/programmer using code from Xilinx. XSVF is byte format <a href="http://www.asset-intertech.com/support/svf.html">SVF</a>, <a href="http://www.xilinx.com/support/documentation/application_notes/xapp058.pdf">as described by Xilinx</a> (pdf). XSVF files can be compiled for any chain with the correct <a href="http://www.xilinx.com/products/design_resources/config_sol/isp_standards_specs.htm">generic JTAG definition files</a>, even non-Xilinx devices. We successfully used the <em>binary</em> transfer features in <a href="http://www.hw-group.com/products/hercules/index_en.html">Hercules</a> and <a href="http://www.ayera.com/teraterm/">Tera Term</a> to send XSVF files to the programmer.</p>
<p>JTAG sometimes pauses longer than it takes the PC to transfer a byte of data, so we implemented <a href="http://en.wikipedia.org/wiki/XON">XON/XOFF software flow control</a> for the XSVF player. Your terminal must be in XON/XOFF flow control mode before you upload the XSVF file, or the programmer will fail. Even with software flow control, a modern PC has already send several bytes through the layers of operating system before it receives the flow control signals. We deal with this by catching these bytes before moving on, this is reported as the maximum number of bytes &#8220;dribbled&#8221;.</p>
<p>If there&#8217;s an error in the upload, the PC will probably continue to spit bytes at the Bus Pirate. To keep error messages visible, and prevent garbage in the terminal, the XSVF player waits for five lower case z&#8217;s before it returns to the prompt. We chose this sequence because it will never occur in an XSVF file.</p>
<p>*Note that the XSVF player does not respect the JTAG Hi-Z pin setting. Went it does, it fails. Be careful mixing voltages without a buffer.</p>
<p><strong>Better code structure</strong></p>
<p>The biggest difference between the version 0b and 0c firmware is a massive improvement in code structure. The Bus Pirate existed in many incarnations before we packaged it for the initial article. v.0c harmonizes the code libraries and makes it easier to add new protocols.</p>
<p><em>How to add a custom protocol</em></p>
<p>The Bus Pirate code handles the user interface, and passes two variables to the active protocol library. The first variable is a command, such as CMD_READ, CMD_READBULK, or CMD_WRITE. The entire command set is defined in base.h. The second variable is an optional value. A simple CMD_READ command passes no value, a bulk read command passes the number of bytes to read, a write command passes the value to write to the bus, etc. At minimum, a custom protocol needs a function to receive these variables and translate them to bus actions.</p>
<p>We used three different techniques to link commands to bus actions. Simple code can go directly in a giant switch statement, like SPI.c. External libraries use an single linking function, like I2C.c, and m_i2c_1.c. More complicated protocols use the switch statement to call functions included in the library (raw2wire.c, raw3wire.c, jtag.c UART.c). Helpful functions for terminal IO are included in base.h/c.</p>
<p>Due to massive code improvements, it&#8217;s now only mildly confusing to register a new protocol with the Bus Pirate:</p>
<p><em>base.h</em> &#8211; Create a definition for the protocol. The last entry is currently &#8220;#define RAW3WIRE 7&#8243;, so the next entry could be &#8220;#define MYCUSTOMWIRE 8&#8243;.</p>
<p><strong>busPirate.c</strong> &#8211; Include a header file with that gives access to the processing function.  Add a menu entry in the <em>char* mode[]  =</em> variable list. The menu entry <em>must</em> be in the same position on the list as the number assigned in the base.h define. If MYCUSTOMWIRE is number 8, it must be the eight entry in the mode variable. Finally, add an additional switch to the bpProcess() function that calls the custom library processing routine when the mode is set to &#8220;MYCUSTOMWIRE&#8221;.</p>
<p><strong>Taking it further: a Hack a Day wish list</strong></p>
<p>We compiled the feedback we&#8217;ve gotten into three wish lists: protocols, features, and macros.</p>
<p><em>Protocols</em></p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/1-Wire">1-Wire</a>, with enumeration (*ready as soon as we have parts to test it)</li>
<li><a href="http://www.elmelectronics.com/obdic.html">OBD-II</a> (thanks [<a href="http://hackaday.com/2008/11/19/how-to-the-bus-pirate-universal-serial-interface/#comment-51551">Shadyman</a>])</li>
<li><a href="http://en.wikipedia.org/wiki/Controller-area_network">CAN</a></li>
<li><a href="http://www.ucapps.de/">MIDI</a> (<a href="http://en.wikipedia.org/wiki/General_MIDI">Wikipedia</a>)</li>
<li><a href="http://en.wikipedia.org/wiki/DMX512-A">DMX512-A</a></li>
<li><a href="http://en.wikipedia.org/wiki/Irda">IRDA</a>, <a href="http://hackaday.com/2008/10/30/how-to-usb-remote-control-receiver/">RC5x</a>, etc.</li>
</ul>
<p>Some protocols will require an external transceiver.</p>
<p><em>Features</em></p>
<ul>
<li>Pulse-width modulator, frequency generator</li>
<li>&#8220;Wait until interrupt&#8221; command</li>
<li>Convert frequency measurement to input capture peripheral</li>
<li>Allow frequency measurement on any pin</li>
<li>Show a report of the current configuration settings and pin states.</li>
<li>Integer repeat values for bulk read, clock ticks, delays, etc.</li>
<li>A CRC generator</li>
</ul>
<p><em>Macros</em></p>
<ul>
<li>Transparent UART bridge</li>
<li>SD card initialization, meta data extract, and dump</li>
<li>EEPROM program/dump (I2C/SPI)</li>
<li>Nokia 6100 LCD initialization, control</li>
<li>NMEA GPS data decoder</li>
</ul>
<p>Do you have anything to add to the list?</p>
<p>Firmware download: <a href="http://blog.mahalo.com/hackaday/howto/buspirate.v0c.zip">buspirate.v0c.zip</a></p>
<br />Posted in classic hacks, hardware, news, tool hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/6457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/6457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/6457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/6457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/6457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/6457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/6457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/6457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/6457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/6457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/6457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/6457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/6457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/6457/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=6457&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2008/12/01/bus-pirate-firmware-update-v0c-jtag-and-more/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Ian</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2008/12/stat.jpg" medium="image">
			<media:title type="html">stat</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2008/12/jtagstate.png" medium="image">
			<media:title type="html">jtagstate</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2008/12/xsfv.png" medium="image">
			<media:title type="html">xsfv</media:title>
		</media:content>
	</item>
		<item>
		<title>TISCH, multitouch framework</title>
		<link>http://hackaday.com/2008/11/23/tisch-multitouch-framework/</link>
		<comments>http://hackaday.com/2008/11/23/tisch-multitouch-framework/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 04:47:29 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[classic hacks]]></category>
		<category><![CDATA[multitouch hacks]]></category>
		<category><![CDATA[peripherals hacks]]></category>
		<category><![CDATA[floe]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[gesture]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[multitouch]]></category>
		<category><![CDATA[thesis]]></category>
		<category><![CDATA[tisch]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://hackadaycom.wordpress.com/?p=6229</guid>
		<description><![CDATA[[floe] wrote in to tell us about his multitouch based thesis work. While many projects have focused on the hardware side of multitouch, TISCH is designed to promote the software side. TISCH is a multiplatform library that features hardware abstraction and gesture recognition. This takes a lot of weight off of widget developers since they [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=6229&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-6230" title="multitouch" src="http://hackadaycom.files.wordpress.com/2008/11/multitouch.jpg" alt="multitouch" width="450" height="325" /></p>
<p>[floe] wrote in to tell us about his <a title="TISCH - Tangible Interactive Surfaces for Collaboration between Humans" href="http://tisch.sourceforge.net/">multitouch based thesis work</a>. While many projects have focused on the <a title="Multitouch project roundup  - Hack a Day" href="http://hackaday.com/2008/05/20/multitouch-project-roundup/">hardware side of multitouch</a>, TISCH is designed to promote the software side. TISCH is a multiplatform library that features hardware abstraction and gesture recognition. This takes a lot of weight off of widget developers since they can specify known library gestures instead of writing the exact motions from scratch. Using TISCH also means a standard set of gestures across multiple widgets, so the learning curve will be much easier when a user tries out a new app. If you&#8217;re researching multitouch, check out this project and help improve the codebase.</p>
<br />Posted in classic hacks, multitouch hacks, peripherals hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/6229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/6229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/6229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/6229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/6229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/6229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/6229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/6229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/6229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/6229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/6229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/6229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/6229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/6229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=6229&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2008/11/23/tisch-multitouch-framework/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">RobotSkirts</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2008/11/multitouch.jpg" medium="image">
			<media:title type="html">multitouch</media:title>
		</media:content>
	</item>
		<item>
		<title>g-speak spatial operating environment</title>
		<link>http://hackaday.com/2008/11/17/g-speak-spatial-operating-environment/</link>
		<comments>http://hackaday.com/2008/11/17/g-speak-spatial-operating-environment/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 03:41:04 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[multitouch hacks]]></category>
		<category><![CDATA[peripherals hacks]]></category>
		<category><![CDATA[2d]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[cintiq]]></category>
		<category><![CDATA[g-speak]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[interaction]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[minority report]]></category>
		<category><![CDATA[multitouch]]></category>

		<guid isPermaLink="false">http://hackadaycom.wordpress.com/?p=5991</guid>
		<description><![CDATA[Our fascination with multitouch is fairly well known, but it expands even further to cover all sorts of man machine interaction. Embedded above is a tech demo of g-speak, a spatial operating environment. The user combines gestures and spatial location to interact with on screen objects. If it seems familiar, it&#8217;s because one of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=5991&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class='embed-vimeo' style='text-align:center;'><iframe src='http://player.vimeo.com/video/2229299' width='400' height='300' frameborder='0'></iframe></div>
<p>Our fascination with <a title="multitouch  - Hack a Day" href="http://hackaday.com/tag/multitouch/">multitouch</a> is fairly well known, but it expands even further to cover all sorts of man machine interaction. Embedded above is a tech demo of <a title="oblong industries, inc." href="http://oblong.com/">g-speak</a>, a spatial operating environment. The user combines gestures and spatial location to interact with on screen objects. If it seems familiar, it&#8217;s because one of the company&#8217;s founders advised on Minority Report. We doubt all this hand waving is going to catch on very quickly though. Our bet is on someone developing a multitouch <a title="YouTube - Wacom Cintiq 21ux in action" href="http://www.youtube.com/watch?v=oE2APo_EORQ">Cintiq</a> style device for people to use as a secondary monitor. It would bridge the gap between between our standard 2D interactions and gestures without making a full leap to 3D metaphors.</p>
<p>[via <a title="Create Digital Motion » Don’t Call it Minority Report; Call g-speak a Spatial, Gestural Operating Environment" href="http://createdigitalmotion.com/2008/11/17/dont-call-it-minority-report-call-g-speak-a-spatial-gestural-operating-environment/">Create Digital Motion</a>]</p>
<br />Posted in misc hacks, multitouch hacks, peripherals hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/5991/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/5991/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/5991/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/5991/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/5991/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/5991/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/5991/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/5991/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/5991/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/5991/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/5991/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/5991/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/5991/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/5991/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=5991&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2008/11/17/g-speak-spatial-operating-environment/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">RobotSkirts</media:title>
		</media:content>
	</item>
		<item>
		<title>Open source neural activity monitors</title>
		<link>http://hackaday.com/2008/09/19/open-source-neural-activity-monitors/</link>
		<comments>http://hackaday.com/2008/09/19/open-source-neural-activity-monitors/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 15:35:43 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Medical hacks]]></category>
		<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[roundup]]></category>
		<category><![CDATA[brain waves]]></category>
		<category><![CDATA[eeg]]></category>
		<category><![CDATA[electrodes]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[neural interface]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[openeeg]]></category>
		<category><![CDATA[sensors]]></category>

		<guid isPermaLink="false">http://hackadaycom.wordpress.com/?p=3429</guid>
		<description><![CDATA[Yesterday we linked to an OCZ Neural Acutator Interface teardown. Several in the comments wanted to know more about the sensor electrodes. Check out the OpenEEG project and OpenEEG mailing list for information on sensing, amplifying, and recording brain activity (EEG). The OpenEEG project maintains an open source Simple ModularEEG design. Two other open source [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=3429&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-3433" title="diy_electrodes" src="http://hackadaycom.files.wordpress.com/2008/09/diy_electrodes.jpg" alt="" width="450" height="389" /></p>
<p>Yesterday we linked to an <a href="http://hackaday.com/2008/09/18/ocz-neural-impulse-actuator-teardown/">OCZ Neural Acutator Interface teardown</a>. Several in the comments wanted to know more about the sensor electrodes. Check out the <a href="http://openeeg.sourceforge.net/doc/index.html">OpenEEG project</a> and <a href="https://lists.sourceforge.net/lists/listinfo/openeeg-list">OpenEEG mailing list</a> for information on sensing, amplifying, and recording brain activity (<a href="http://en.wikipedia.org/wiki/Electroencephalography">EEG</a>).  The OpenEEG project maintains an open source <a href="http://openeeg.sourceforge.net/doc/SimpleEEG/">Simple ModularEEG</a> design. Two other open source variants of the ModularEEG are the <a href="http://freenet-homepage.de/moosec/projekte/simpleeeg/index-Dateien/MonolithEEG13_e.htm">MonolithEEG</a> and [Joshua Wojnas'] <a href="http://pceeg.sourceforge.net/">Programmable Chip EEG BCI</a>. All three projects use <a href="http://www.atmel.com/">Atmel</a> microcontrollers, with designs in <a href="http://www.cadsoft.de/">Cadsoft Eagle</a>.</p>
<p>Brain activity is measured using <a href="http://openeeg.sourceforge.net/doc/hw/electrodes/passive/">passive</a> or <a href="http://openeeg.sourceforge.net/doc/hw/ae.html">active</a> electrodes. Passive electrodes require a conductive paste to make proper contact with the skin (examples: <a href="http://openeeg.sourceforge.net/buildeeg/electrodes.php">1</a>, <a href="http://openeeg.sourceforge.net/doc/gallery/joe/index.html">2</a>). Active EEG sensors don&#8217;t need conductive goop because they have an amplifier directly on the electrode (examples: <a href="http://openeeg.sourceforge.net/doc/hw/joe_ae/">1</a>, <a href="http://uazu.net/eeg/ae.html">2</a>, <a href="http://www.dcc.uchile.cl/~peortega/ae/">3</a>).</p>
<p>[via anonymous reader, comments]</p>
<br />Posted in Medical hacks, misc hacks, roundup  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/3429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/3429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/3429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/3429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/3429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/3429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/3429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/3429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/3429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/3429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/3429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/3429/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/3429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/3429/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=3429&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2008/09/19/open-source-neural-activity-monitors/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Ian</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2008/09/diy_electrodes.jpg" medium="image">
			<media:title type="html">diy_electrodes</media:title>
		</media:content>
	</item>
		<item>
		<title>Burning in the Siftables</title>
		<link>http://hackaday.com/2008/08/13/burning-in-the-siftables/</link>
		<comments>http://hackaday.com/2008/08/13/burning-in-the-siftables/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 20:15:00 +0000</pubDate>
		<dc:creator>Caleb Kraft</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[peripherals hacks]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[modular]]></category>
		<category><![CDATA[physicalinterfacce]]></category>
		<category><![CDATA[siftables]]></category>
		<category><![CDATA[tangibleinterface]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://hackaday.iheartcashews.com:8181/2008/08/13/burning-in-the-siftables/</guid>
		<description><![CDATA[[Curiouslee] put up some pictures of his Siftables burn in. He got them in the mail with all their accessories and decided to make a special box to carry it all. He started with an ArtBin parts box and cut out dividers where necessary to make everything fit nice and tidy. The Siftables are quite [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=2432&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img width="450" vspace="4" hspace="4" height="330" border="0" src="http://hackadaycom.files.wordpress.com/2008/08/siftables.jpg?w=450&#038;h=330" alt="" /><br />[Curiouslee] put up some pictures of his <a href="http://www.flickr.com/photos/curiouslee/2747425303/in/pool-69453349@N00">Siftables burn in</a>. He got them in the mail with all their accessories and decided to make a special box to carry it all. He started with an ArtBin parts box and cut out dividers where necessary to make everything fit nice and tidy.</p>
<p>The <a href="http://web.media.mit.edu/%7Edmerrill/siftables.html">Siftables</a> are quite interesting. They are an information interface that is supposed to be more physical and natural. The analogy they use is a container of nuts and bolts can be sifted through quite easily using your hands. They envision us being able to sift through data similarly. They also mention that it could be used as a gestural interface as well.</p>
<p><span id="more-2432"></span></p>
<p><img width="450" vspace="4" hspace="4" height="185" border="0" src="http://hackadaycom.files.wordpress.com/2008/08/siftable_explode.jpg?w=450&#038;h=185" alt="" /><br /> Each unit is a small device with a screen, wireless communication, and IR sensors. There are some pictures of the units in action as well as a video on their site. </p>
<p>[via <a href="http://www.flickr.com/photos/curiouslee/2747425303/in/pool-69453349@N00">Make Flickr Pool</a>]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hackadaycom.wordpress.com/2432/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hackadaycom.wordpress.com/2432/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/2432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/2432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/2432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/2432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/2432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/2432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/2432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/2432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/2432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/2432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/2432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/2432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/2432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/2432/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=2432&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2008/08/13/burning-in-the-siftables/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Caleb Kraft</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2008/08/siftables.jpg" medium="image" />

		<media:content url="http://hackadaycom.files.wordpress.com/2008/08/siftable_explode.jpg" medium="image" />
	</item>
		<item>
		<title>Custom modular control interfaces</title>
		<link>http://hackaday.com/2008/07/09/custom-modular-control-interfaces/</link>
		<comments>http://hackaday.com/2008/07/09/custom-modular-control-interfaces/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 01:15:00 +0000</pubDate>
		<dc:creator>Caleb Kraft</dc:creator>
				<category><![CDATA[digital audio hacks]]></category>
		<category><![CDATA[buglabs]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[midibox]]></category>
		<category><![CDATA[modular]]></category>
		<category><![CDATA[monome]]></category>
		<category><![CDATA[rapidprototyping]]></category>
		<category><![CDATA[stribe]]></category>

		<guid isPermaLink="false">http://hackaday.iheartcashews.com:8181/2008/07/09/custom-modular-control-interfaces/</guid>
		<description><![CDATA[Machinecollective.org is bringing rapid prototyping to every day artists and hackers. We&#8217;ve covered similar interfaces like the monome, MIDIbox, and Stribe. Machinecollective allows you to make your own input system using multiple blocks to get exactly what you want. The setup allows you to fit pretty much anything in a block that you can think [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=2228&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img width="450" vspace="4" hspace="4" height="113" border="0" alt="" src="http://hackadaycom.files.wordpress.com/2008/07/photocomp2.jpg?w=450&#038;h=113" /><br />Machinecollective.org is bringing rapid prototyping to every day artists and hackers. We&#8217;ve covered similar interfaces like the <a href="http://www.hackaday.com/2006/04/22/mf2006-monome/">monome</a>, <a href="http://www.hackaday.com/2008/06/05/building-a-midibox-sid/">MIDIbox</a>, and <a href="http://www.hackaday.com/2008/05/05/maker-faire-2008-stribe-music-controller/">Stribe</a>. Machinecollective allows you to make your own input system using multiple blocks to get exactly what you want. The setup allows you to fit pretty much anything in a block that you can think of. They&#8217;re developing potentiometers, slide potentiometers, button grids, toggle switches, LCD&#8217;s, FSR/LDR&#8217;s, velocity sensitive pads, and touch screens. </p>
<p>Currently, they support software enviroments like: <a href="http://processing.org/">Processing</a>, <a href="http://www.cycling74.com/">Max/MSP</a>, <a href="http://www.vvvv.org/tiki-index.php">VVVV</a>, and <a href="http://www.adobe.com/products/flash/">Adobe Flash</a>. That list will undoubtedly grow as the community plays with it. They envision the hardware connecting via MIDI, OSC, RS232, TCP/UDP, DMX, or USB.</p>
<p>They encourage others to design their own inputs. Community members can share modifications and designs, though there isn&#8217;t a forum or store yet. If you design a setup that you really like, they can even fabricate a single unit for you. Keep your eyes on this one, it could be a real hit.</p>
<p>A similar idea for general gadgetry can be seen over at <a href="http://www.buglabs.net/">Bug Labs</a>. Starting with a base unit, you can add different input and output modules to create various useful functions. They currently offer GPS, a camera, a display, and motion sensing. Mix and match to make your dream gadget.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hackadaycom.wordpress.com/2228/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hackadaycom.wordpress.com/2228/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/2228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/2228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/2228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/2228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/2228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/2228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/2228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/2228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/2228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/2228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/2228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/2228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/2228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/2228/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=2228&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2008/07/09/custom-modular-control-interfaces/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Caleb Kraft</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2008/07/photocomp2.jpg" medium="image" />
	</item>
	</channel>
</rss>
