<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fenestration and Debauchery &#187; Electronics</title>
	<atom:link href="http://blog.wingedvictorydesign.com/category/electronics/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.wingedvictorydesign.com</link>
	<description>Hold my beer while I try something.</description>
	<lastBuildDate>Fri, 09 Jul 2010 16:47:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Rev13 of the Arduino DMX Reception Software Released</title>
		<link>http://blog.wingedvictorydesign.com/2009/07/10/rev13-of-the-arduino-dmx-reception-software-released/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/07/10/rev13-of-the-arduino-dmx-reception-software-released/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 17:33:59 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Lighting]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=867</guid>
		<description><![CDATA[New in this version: Tested and working with IDE version 0016. The number of channels to receive is now easily user-configurable. Replaced static variables with #define statements for RAM optimization (+48 bytes, woot!). You can grab it here or mosey on over to the original post for the instructions.]]></description>
			<content:encoded><![CDATA[<p class="majuscule">New in this version:</p>
<ul>
<li>Tested and working with IDE version 0016.</li>
<li>The number of channels to receive is now easily user-configurable.</li>
<li>Replaced static variables with <span class="inlinecode">#define</span> statements for RAM optimization (+48 bytes, woot!).</li>
</ul>
<p>You can grab it <a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/03/receiver_rev13.zip">here</a> or mosey on over to the <a href="http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/">original post</a> for the instructions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/07/10/rev13-of-the-arduino-dmx-reception-software-released/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Arduino Theremin/Synth Final Walkthrough</title>
		<link>http://blog.wingedvictorydesign.com/2009/06/20/arduino-thereminsynth-final-walkthrough/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/06/20/arduino-thereminsynth-final-walkthrough/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 04:29:13 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=752</guid>
		<description><![CDATA[It&#8217;s Done! I gave it to my sister last weekend and she really liked it.  If you&#8217;re just tuning in now, I have posts about the hardware development, waveform crafting, an early demonstration, and the software algorithm.  The final version has the following features: Four octaves of continuous pitch variation by moving your hand nearer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/P1000478DNG.jpg" rel="lightbox[752]"><!--pagetitle:Part I: Demonstration--><img class="aligncenter size-full wp-image-754" title="P1000478DNG" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/P1000478DNG.jpg" alt="P1000478DNG" width="1000" height="750" /></a></p>
<p><span class="majuscule">It&#8217;s Done!</span> I gave it to my sister last weekend and she really liked it.  If you&#8217;re just tuning in now, I have posts about the <a href="http://blog.wingedvictorydesign.com/2009/06/04/arduino-thereminsynth-update-ii/" target="_blank">hardware development</a>, <a href="http://blog.wingedvictorydesign.com/2009/05/26/arduino-thereminsynthesizer-update/">waveform crafting</a>, an <a href="http://blog.wingedvictorydesign.com/2009/05/20/arduino-audio-output-from-a-capacitive-input/">early demonstration</a>, and the <a href="http://blog.wingedvictorydesign.com/2009/05/29/generate-real-time-audio-on-the-arduino-using-pulse-code-modulation/">software algorithm</a>.  The final version has the following features:</p>
<ul>
<li>Four octaves of continuous pitch variation by moving your hand nearer or farther from an ultrasound sensor</li>
<li>Digital volume control</li>
<li>Continuous waveform variation&#8211;can generate a pure sine tone like a classic theremin, or one with overtones, which sounds like an 80&#8242;s synth organ.</li>
<li>Spectral glide&#8211;similar to a Wah pedal or the instrument used in Peter Frampton&#8217;s &#8216;Do You Feel Like I Do&#8217;</li>
<li>Decay/Sustain&#8211;envelope shaping to play notes</li>
<li>Distortion&#8211;sounds like the guitar effect.</li>
</ul>
<p class="majuscule">Listen to the Tone of the Future:</p>
<p><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/Theremin-Synth-Rev1.mp3">Download audio file (Theremin-Synth-Rev1.mp3)</a></p>
<ol>
<li>0:00-0:00 Pure tone, no effects</li>
<li>0:45 Waveform selection&#8211; no overtones</li>
<li>1:05 Decay effects</li>
<li>1:37 Wah</li>
<li>2:45 Distortion</li>
</ol>
<p>And here is a video with me demonstrating the operation (and also explaining several key features completely incorrectly):</p>
<p>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/WZS85tdsmSQ&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/WZS85tdsmSQ&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object>
</p>
<p><br class="spacer_" /></p>
<p><a href="http://blog.wingedvictorydesign.com/?p=752&amp;page=2"><em><strong>Keep reading for a walkthrough of the hardware and software&#8230;</strong></em></a></p>
<p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/06/20/arduino-thereminsynth-final-walkthrough/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/Theremin-Synth-Rev1.mp3" length="3447443" type="audio/mpeg" />
		</item>
		<item>
		<title>Arduino Theremin/Synth Update II</title>
		<link>http://blog.wingedvictorydesign.com/2009/06/04/arduino-thereminsynth-update-ii/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/06/04/arduino-thereminsynth-update-ii/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 03:13:23 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=715</guid>
		<description><![CDATA[The Hardware, Oh the Hardware. I&#8217;ve been making some great progress on shaping the generated tone and getting some more musicality &#8212; I&#8217;ve programmed a decay function and that&#8217;s made a huge difference, depending on the input values I&#8217;ve got a pretty good harp simulacrum, and also something that sounds like an early 1980&#8242;s analog [...]]]></description>
			<content:encoded><![CDATA[<p><span class="majuscule">The Hardware, Oh the Hardware.</span> I&#8217;ve been making some great progress on shaping the generated tone and getting some more musicality &#8212; I&#8217;ve programmed a decay function and that&#8217;s made a huge difference, depending on the input values I&#8217;ve got a pretty good harp simulacrum, and also something that sounds like an early 1980&#8242;s analog synth piano, which I &lt;3.  I&#8217;ll try to get a demo up of where I&#8217;m at with tonality.  Mainly, I&#8217;ve been trying to figure out the analog inputs to control the tone sensing, as well as volume, attack, decay, echo, etc.  This is really two separate problems.  For the frequency control, I want to detect distance from 2&#8243;-3&#8242; with good precision, stability, and ideally linearity.  For the volume and effects control, I want a 0-5V analog input over about 1-1.5&#8243; of travel, that can be operated with a single finger.  Here&#8217;s what I&#8217;ve looked at:</p>
<ul>
<li><span class="majuscule">Capacitance Sensing,</span> which is what&#8217;s shown in the demo video from my last post.  One digital output pin on the Arduino charges up a foil plate, and then discharges it.  Another high-impedance input pin detects how long it takes for the plate voltage to cross the threshold from HIGH to LOW, or vice versa.  As you move your hand towards the plate, it increases the capacitance of the system, increasing the charge/discharge time.  My original plan was to use this method, but it wasn&#8217;t stable or accurate, and also since my enclosure is a metal box, the capacitance between the enclosure and the plate was much larger than that introduced by my hand, so I scrapped it.</li>
<li><span class="majuscule">Heterodyne Sensing</span>, like a traditional Theremin.  In this getup, you have two RC oscillator circuits.  The capacitor part of one oscillator is connected to an antenna, and as you bring your hand nearer it increases the capacitance of the system, which reduces the oscillation frequency minutely.  Then, you use a NAND gate to heterodyne, or subtract out the matching frequencies of the two oscillators, leaving the mismatch.  From what I&#8217;ve gathered, there&#8217;s a lot of art involved in building a good Theremin sensor circuit, and in any case it&#8217;s not linear.  I played around with this some, but I couldn&#8217;t really get it to do what I wanted it to.</li>
<li><span class="majuscule">Light Detection with a Phototransistor.</span> An infrared LED bounces light off your hand, which is detected by a phototransistor of matched spectrum sensitivity.  I tried this, but I couldn&#8217;t get much more than a binary sense input a few inches away from the sensor.  Sharp makes a line of infrared rangefinders (the GP2D12, e.g.) that use a linear ccd sensor to do angle detection rather than amplitude sensing, which can apparently detect objects accurately up to 6&#8242; away.  Plus, they&#8217;re cheap and they output a simple 0-3V output.  However, I couldn&#8217;t source one locally.</li>
<li><span class="majuscule">Ultrasound.</span> After trying and failing with the above, I ponied up $35 for a Parallax Ping.  They output distance as pulse length.  Not cheap, but I can&#8217;t argue with the results&#8211; It&#8217;s accurate, stable, and even linear.  I&#8217;m using it for the frequency control, as it can go out to 3&#8242; without breaking a sweat.</li>
<li><span class="majuscule">Light Detection with a CDS Photoresistor.</span> This is what I&#8217;m using for the volume and effects sensors, detailed below.</li>
</ul>
<p><span class="majuscule">Goddamn Photoresistors: </span>CDS photoresistors are cheap and easily available, but getting them to go through their resistance range smoothly is a real challenge.  Early on, I discovered that if I moved a green LED closer or farther away from the sensor, it gave a much smoother response than if I tried to modulate the ambient light.  So in my first attempt at creating a control, I used the humble toggle bolt.  I mounted it up with the led on top and the photoresistor on the bottom, like so:</p>
<div style="width: 100%;"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/toggle-bolt.jpg" rel="lightbox[715]"><img class="galleryfloat" title="toggle-bolt" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/toggle-bolt-150x150.jpg" alt="toggle-bolt" width="150" height="150" /></a><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/lever1.jpg" rel="lightbox[715]"><img class="galleryfloat" title="lever1" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/lever1-150x150.jpg" alt="lever1" width="150" height="150" /></a><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/lever2.jpg" rel="lightbox[715]"><img class="galleryfloat" title="lever2" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/lever2-150x150.jpg" alt="lever2" width="150" height="150" /></a><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/lever3.jpg" rel="lightbox[715]"><img class="galleryfloat" title="lever3" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/lever3-150x150.jpg" alt="lever3" width="150" height="150" /></a></div>
<p>This worked okay in near or complete darkness, but not so much during the day&#8211;even ambient skylight is larger than the LED output by a few orders of magnitude.  Which is a pity, because it would have looked cool, with all four levers mounted on the box and the wires coming out of them it had sort of a steampunk prosthetic hand look.  It&#8217;s possible that I could have improved it by mounting the photocell on the lever and the LED below, but it had other problems as well&#8211; the levers needed some kind of extension on them to keep your fingers from slipping off them, and the whole assembly was kind of fussy.</p>
<p>Next, I tried the hollow expansion bolts, with the LED and photocell mounted inside, like so:</p>
<div style="width: 100%;"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button.jpg" rel="lightbox[715]"><img class="galleryfloat" title="push-button" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button-150x150.jpg" alt="push-button" width="150" height="150" /></a><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button-2.jpg" rel="lightbox[715]"><img class="galleryfloat" title="push-button-2" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button-2-150x150.jpg" alt="push-button-2" width="150" height="150" /></a><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button-3.jpg" rel="lightbox[715]"><img class="galleryfloat" title="push-button-3" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button-3-150x150.jpg" alt="push-button-3" width="150" height="150" /></a><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button-4.jpg" rel="lightbox[715]"><img class="galleryfloat" title="push-button-4" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/push-button-4-150x150.jpg" alt="push-button-4" width="150" height="150" /></a></div>
<p>This works smoothly over a dynamic range of about 700 with the default analogRead() function.  I&#8217;m thinking that I can put a tab on top of them to make them look like organ stops, which would be hot.  I&#8217;m going to try manually configuring the Arduino ADC for 8-bit mode to try and squeeze a little more speed out of them&#8211; five sensors x 100μS + processing time with the default analogRead() function may make the loop too slow, and an 8-bit data format would be more convenient for processing anyway.  The mechanism is going to be good for set-and-hold controls, but for the volume control I wanted something a little more dynamic, so prototype #3:</p>
<p><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/dome-sensor-1.jpg" rel="lightbox[715]"><img class="aligncenter size-full wp-image-744" title="dome-sensor-1" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/dome-sensor-1.jpg" alt="dome-sensor-1" width="1000" height="750" /></a><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/dome-sensor-2.jpg" rel="lightbox[715]"><img class="aligncenter size-full wp-image-745" title="dome-sensor-2" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/06/dome-sensor-2.jpg" alt="dome-sensor-2" width="1000" height="750" /></a></p>
<p>The ping pong ball does a excellent job of diffusing the ambient light so that the response is smooth.</p>
<p>I&#8217;ve made a number of unneccesary holes in the enclosure, and also scratched it up some.  I&#8217;m not happy about that, and the lesson here is when you do a project that&#8217;s this complex, do a prototype.  But I&#8217;m kind of enjoying working fast and sloppy, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/06/04/arduino-thereminsynth-update-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generate Real-time Audio on the Arduino using Pulse Code Modulation</title>
		<link>http://blog.wingedvictorydesign.com/2009/05/29/generate-real-time-audio-on-the-arduino-using-pulse-code-modulation/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/05/29/generate-real-time-audio-on-the-arduino-using-pulse-code-modulation/#comments</comments>
		<pubDate>Sat, 30 May 2009 03:17:42 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=666</guid>
		<description><![CDATA[So. There are a bewildering variety of options for generating sound via the Arduino, but I&#8217;m trying to make a real-time synthesizer, with the following features: Arbitrary waveform shape, including the ability to add harmonics for a more musical sound Generate any frequency dependent on sensor input Efficient processor usage to allow for effects such [...]]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Part I: Features--></p>
<div id="attachment_922" class="wp-caption aligncenter" style="width: 676px"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/waveform-oscilloscope1.jpg" rel="lightbox[666]"><img class="size-large wp-image-922" title="waveform-oscilloscope" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/waveform-oscilloscope1-666x500.jpg" alt="TEK-434 1973-2009 RIP :(" width="666" height="500" /></a><p class="wp-caption-text">TEK-434 1973-2009 RIP :(</p></div>
<p><span class="majuscule">So.</span> There are a bewildering variety of <a href="http://www.arduino.cc/playground/Code/PCMAudio">options</a> for generating sound via the Arduino, but I&#8217;m trying to make a real-time synthesizer, with the following features:</p>
<ul>
<li>Arbitrary waveform shape, including the ability to add harmonics for a more musical sound</li>
<li>Generate any frequency dependent on sensor input</li>
<li>Efficient processor usage to allow for effects such as reverb, echo, envelope shaping, etc.</li>
<li>A minimum of external hardware</li>
</ul>
<p>Audio output for the Arduino is pretty well-tilled soil, but surprisingly most of the previously published options are geared towards canned sound playback, or tone generation without a focus on musicality.  I&#8217;ve implemented an algorithm called Pulse Code Modulation, and I think it has a lot of potential.  Keep reading for an explanation of how it works and why it&#8217;s awesome.</p>
<p><a href="http://blog.wingedvictorydesign.com/2009/05/29/generate-real-time-audio-on-the-arduino-using-pulse-code-modulation/2/"><em>Continue to page 2&#8230;</em></a></p>
<p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/05/29/generate-real-time-audio-on-the-arduino-using-pulse-code-modulation/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Arduino Theremin/Synthesizer Update</title>
		<link>http://blog.wingedvictorydesign.com/2009/05/26/arduino-thereminsynthesizer-update/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/05/26/arduino-thereminsynthesizer-update/#comments</comments>
		<pubDate>Wed, 27 May 2009 02:09:05 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=636</guid>
		<description><![CDATA[An Update: I&#8217;ve made considerable progress in improving the quality of the audio output.  In the prior post, I was generating a square wave with the pulse frequency determined by an input from a capacitive sensor.  It sounded, to put it succinctly, awful.  Since I was generating it through the main loop() code, it was [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_638" class="wp-caption aligncenter" style="width: 660px"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/whiteboard-concept-1.jpg" rel="lightbox[636]"><img class="size-full wp-image-638" title="concept" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/whiteboard-concept-1.jpg" alt="Banana bread and chips were vital to the DAC processing" width="1000" height="750" /></a><p class="wp-caption-text">Banana bread and chips were vital to the DAC processing</p></div>
<p><span class="majuscule">An Update:</span> I&#8217;ve made considerable progress in improving the quality of the audio output.  In the prior post, I was generating a square wave with the pulse frequency determined by an input from a capacitive sensor.  It sounded, to put it succinctly, awful.  Since I was generating it through the main loop() code, it was also susceptible to processor load problems, i.e. when an analogRead() was done, it would stop the waveform generation and start it again for ~100mS.  I&#8217;m now using interrupt-driven Pulse Code Modulation to generate an arbitrary waveform, and it sounds surprisingly decent, actually.</p>
<p style="text-align: left;"><span class="majuscule">It&#8217;s Like This, Y&#8217;all:</span> Since with this setup I can generate an arbitrary waveform, I first spent some time investigating what makes a tone sound musical, or not.  I started by taking a recorded piano key and doing a frequency spectrum analysis of it in Audacity.  Here&#8217;s what that looks like:</p>
<div id="attachment_645" class="wp-caption aligncenter" style="width: 660px"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/piano-waveform.jpg" rel="lightbox[636]"><img class="size-full wp-image-645" title="piano-waveform" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/piano-waveform.jpg" alt="piano-waveform" width="1000" height="625" /></a><p class="wp-caption-text">The waveform of a middle C (261.626Hz) piano key</p></div>
<p>And the accompanying spectrum analysis:</p>
<p><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/piano-spectrum.jpg" rel="lightbox[636]"><img class="aligncenter size-full wp-image-647" title="piano-spectrum" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/piano-spectrum.jpg" alt="piano-spectrum" width="1000" height="601" /></a></p>
<p>You can see that the strongest tone is at the fundamental frequency of middle C, 261Hz.  But there are also spikes at the harmonics of that frequency, e.g. 523Hz, 784Hz, 1046Hz.  Interestingly enough, the strongest harmonics are those corresponding to powers of 2, i.e. <em>f</em> * 2<sup>n</sup>.  I&#8217;ve read that even-numbered harmonics are more pleasant-sounding than odd-numbered harmonics, and this would seem to support that idea.  Also, as you add in the odd-numbered harmonics, the waveform approaches a triangle wave, which is definitely less pleasant to listen to than a sine wave.</p>
<p><span class="majuscule">Thus Informed</span>, I started working to create a waveform of my own.  I set up a frequency and a bunch of multiples of it in Audacity, and played around with increasing or decreasing the amplitude of specific overtones, until I had a sound I was happy with, like so:</p>
<div id="attachment_648" class="wp-caption aligncenter" style="width: 660px"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/middle-c-tone.jpg" rel="lightbox[636]"><img class="size-full wp-image-648" title="middle-c-tone" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/middle-c-tone.jpg" alt="middle-c-tone" width="1000" height="601" /></a><p class="wp-caption-text">On the left, you can see that I&#39;ve varied the amplitude of the various overtones</p></div>
<p>From this I discovered that the undertone (1/2 * <em>f</em>) and other partials make a huge difference in the quality of the tone.  I wanted to post this file up so other people can play around with it, but apparently with the associated sample files it&#8217;s around 50Mb, so you&#8217;ll have to recreate it yourself.  I highly recommend it, it&#8217;s interesting.  For comparison, here is a recording of a piano, middle c tone:</p>
<p><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/grand-piano-fazioli-major-c-middle1.wav">grand-piano-fazioli-major-c-middle1</a></p>
<p>And here&#8217;s my generated tone:</p>
<p><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/middle-c-generated-rev1.wav">middle-c-generated-rev1</a></p>
<p>The generated version sounds different because there&#8217;s no envelope shaping on it&#8211; it&#8217;s just a constant amplitude.  However, I if you listen to both a few times the tone is somewhat similar.</p>
<p>Next, I started working at digitizing a single waveform.  I couldn&#8217;t figure out an easy way to do this directly from my generated tone, so instead I built the values in Excel:</p>
<p><br class="spacer_" /></p>
<div id="attachment_654" class="wp-caption aligncenter" style="width: 660px"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/excel-wave.jpg" rel="lightbox[636]"><img class="size-full wp-image-654" title="excel-wave" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/excel-wave.jpg" alt="handcrafted!" width="1000" height="601" /></a><p class="wp-caption-text">handcrafted!</p></div>
<p>I then copied the summed values (column N) into a 48 element char array in my Arduino sketch.  If you want this spreadsheet, <a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/frequency-chart-rev1.xls">here ya go</a>.  Finally, here&#8217;s another Unintended Comedy Amateur Hour video of me playing around with the generated sound in the Arduino:</p>
<p style="text-align: center;">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/9B815TkZ_HA&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/9B815TkZ_HA&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object>
</p>
<p>I&#8217;m going to talk a little more about the specific programming techniques I used to make the Arduino do this in a separate post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/05/26/arduino-thereminsynthesizer-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/grand-piano-fazioli-major-c-middle1.wav" length="705644" type="audio/x-wav" />
<enclosure url="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/middle-c-generated-rev1.wav" length="883814" type="audio/x-wav" />
		</item>
		<item>
		<title>Arduino audio output from a capacitive input</title>
		<link>http://blog.wingedvictorydesign.com/2009/05/20/arduino-audio-output-from-a-capacitive-input/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/05/20/arduino-audio-output-from-a-capacitive-input/#comments</comments>
		<pubDate>Thu, 21 May 2009 04:50:43 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=619</guid>
		<description><![CDATA[Lookee Lookee What I Did Today: So my sister is currently pursuing a PHD in music (theory) at the University of Chicago, and for her birthday, I thought I&#8217;d make her a sort-of theremin instrument.  Her birthday was three months ago, but whatever, right?  Today, I started playing around with how that would work using [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-630" title="2009-05-20-210118" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/2009-05-20-210118-1024x768.jpg" alt="2009-05-20-210118" width="1024" height="768" /></p>
<p><span class="majuscule">Lookee Lookee What I Did Today:</span> So my sister is currently pursuing a PHD in music (theory) at the University of Chicago, and for her birthday, I thought I&#8217;d make her a sort-of theremin instrument.  Her birthday was three months ago, but whatever, right?  Today, I started playing around with how that would work using an Arduino.  In lieu of 1,000 words, here&#8217;s a YouTube video showing the setup (and also saying um a lot.  Web 3.0!):</p>
<p style="text-align: center">
<object width="425" height="344" data="http://www.youtube.com/v/AkEv6UiLHeY&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/AkEv6UiLHeY&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object>
</p>
<p>And demonstrating the operation:</p>
<p style="text-align: center;">
<object width="425" height="344" data="http://www.youtube.com/v/9qA1T5O9TmQ&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/9qA1T5O9TmQ&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object>
</p>
<p>Right now I&#8217;m investigating capacitance for the input, but I may go for the authentic heterodyne sensing, if I can get it done in time (I&#8217;m visiting her in three weeks).</p>
<p>I based the sensor code off Paul Badger&#8217;s example <a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1171076259">here</a>.  He documents it pretty well, and this is just a starting point anyway, so I&#8217;m not going to put up a schematic or example code right now.</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/05/20/arduino-audio-output-from-a-capacitive-input/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rev12 of the Arduino DMX Reception Software Released</title>
		<link>http://blog.wingedvictorydesign.com/2009/05/12/rev12-of-the-arduino-dmx-reception-software-released/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/05/12/rev12-of-the-arduino-dmx-reception-software-released/#comments</comments>
		<pubDate>Wed, 13 May 2009 02:51:37 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Lighting]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=591</guid>
		<description><![CDATA[New in this Version: In-the-field addressing via two tact switches (works with the previously released I/O Shield, here). Address is stored in non-volatile EEPROM, so it is retained when power is lost to the Arduino. Addressing hardware allows full use of the pins (which is why I didn&#8217;t use the more conventional dip switch setup). [...]]]></description>
			<content:encoded><![CDATA[<p class="majuscule"><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/04/p1000328.jpg" rel="lightbox[591]"><img class="aligncenter size-full wp-image-553" title="p1000328" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/04/p1000328.jpg" alt="p1000328" width="1000" height="861" /></a></p>
<p class="majuscule">New in this Version:</p>
<ul>
<li>In-the-field addressing via two tact switches (works with the previously released I/O Shield, <a href="http://blog.wingedvictorydesign.com/2009/04/29/arduino-dmx-512-io-shield/" target="_blank">here</a>).</li>
<li>Address is stored in non-volatile EEPROM, so it is retained when power is lost to the Arduino.</li>
<li>Addressing hardware allows full use of the pins (which is why I didn&#8217;t use the more conventional dip switch setup).</li>
<li>Some of the variables were localized, since the sketch is now getting pretty complex.</li>
</ul>
<p>The latest software can be downloaded <a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/receiver_rev12.zip">here</a>, you may also want to check out the release notes <a href="http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/3/">here</a>.</p>
<p class="majuscule">How to Set the Address:</p>
<p>I&#8217;m going to assume you&#8217;ve built yourself a DMX I/O shield, if not, you can take a gander at the <a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/04/schematic.png" rel="lightbox[591]">schematic</a> and set it up on breadboard.</p>
<p>There are two tact switches on the shield, a &#8217;1&#8242; switch and a &#8217;0&#8242; switch.</p>
<p>If you press and hold <em>both</em> switches, then hit the reset button, the starting DMX address will be reset to dimmer 1.  The pin 13 LED (marked as &#8216;ERR&#8217; on the shield) will flash a few times in confirmation.</p>
<p>For other addresses, you&#8217;ll hold down either the 1 or 0 switch (but not both), then hit the reset switch.  The pin 13 LED will light up and stay on.  Then you&#8217;ll enter your desired address in binary, least significant digit first, by alternately hitting the 0 and 1 switch.  As you enter each bit, the LED will turn off for a moment to confirm that bit was set.  When all 9 bits are received, the ERR LED will flash a few times.  If you make a mistake, just start over by holding down one of the switches and hitting reset.</p>
<p><span class="majuscule">An Example:</span> let&#8217;s say we want a starting address of 246.  246 in binary is 011110110.  You can get this number in couple of ways.</p>
<ul>
<li>Mathematically,<br />
 246 =<span style="text-decoration: line-through;"> 0*256</span>+1*128+1*64+1*32+1*16+<span style="text-decoration: line-through;">0*8</span>+1*4+1*2+<span style="text-decoration: line-through;">0*1</span><br />
  =  <span style="text-decoration: line-through;">2<sup>9</sup></span> + 2<sup>8</sup>+2<sup>7</sup>+2<sup>6</sup>+2<sup>5</sup>+2<sup>4</sup>+<span style="text-decoration: line-through;">2<sup>3</sup></span>+2<sup>2</sup>+2<sup>1</sup>+<span style="text-decoration: line-through;">2<sup>0</sup></span> = 011110110<br />
 (Depending on how well you know your powers of 2, the above will be obvious or complete gibberish)</li>
<li>In Windows, by firing up the calculator, going to View&gt;Scientific, entering &#8220;246&#8243;, and hitting the &#8220;BIN&#8221; radio button</li>
<li>In Google, by entering &#8220;246 in binary&#8221; in the search box</li>
<li>By looking it up in your familiar DMX dip switch chart, <a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/05/dmx-address-chart.pdf">like this one here</a>.</li>
</ul>
<p>So thus far, the same process as addressing any other piece of equipment.  Now, hold down the 1 or the 0 switch, and hit reset.  The ERR LED will come on, signifying that we&#8217;re in addressing mode.</p>
<p>Now enter the above binary sequence, starting with the smallest number: hit the 0 switch, then the 1 switch, then 1, 0, 1, 1, 1, 1, 0.  The LED will briefly turn off every time you hit a switch.</p>
<p>After all 9 bits are entered, the LED will flash several times.  The board is now addressed to 246.</p>
<p><span class="majuscule">Another Example:</span> Channel 131.  Hold down the 0 or 1 switch, hit reset, enter 1, 1, 0, 0, 0, 0, 0, 1, 0.</p>
<p><span class="majuscule">Note:</span> Once the address is set, the pins 11 and 12 may be re-assigned for any other use.  That&#8217;s why I did it this way, rather than using a conventional dip switch, which would have taken up 9 pins on the board (I&#8217;d be lying if I said I wasn&#8217;t a little impressed by my own cleverness here).  The pins are configured with internal pull-ups in setup() as:</p>
<pre>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">digitalWrite(pin0, HIGH);       //turns on the internal pull-up resistor for pin 11<br />
pinMode(pin0, INPUT);           //sets pin 11 to input<br />
digitalWrite(pin1, HIGH);       //turns on the internal pull-up resistor for pin 12<br />
pinMode(pin1, INPUT);           //sets pin 11 to input</div></div>
</pre>
<p>Pressing the switches grounds them, setting the pin to LOW.  So, exercise caution when using the pins for anything that doesn&#8217;t like to be grounded, is the only caveat.</p>
<p><span class="majuscule">Known Bug:</span> for some reason, sometimes when you hit the 0 or 1 switch it doesn&#8217;t take.  I&#8217;ve programmed the LED to turn off briefly if the bit was successfully entered, so if you don&#8217;t see it go off, you&#8217;ll have to hit the switch again until it takes.  I don&#8217;t know why it&#8217;s doing this, if you have some time to wade through the logic let me know why and I&#8217;ll update the code.</p>
<p><span class="majuscule">The Astute Reader Will Wonder: </span>why we don&#8217;t enter 000000000 for the first address.  True, DMX addresses actually run from 0 to 511, so dimmer 1 is actually listening to dmx address 0.  I&#8217;ve seen gear that takes this into account and automatically adds 1 to your desired address, and gear that you subtract 1 from your desired address.  Since there doesn&#8217;t seem to be any standard, I&#8217;ve opted to let the software do it for you because it&#8217;s easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/05/12/rev12-of-the-arduino-dmx-reception-software-released/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Arduino DMX-512 I/O Shield</title>
		<link>http://blog.wingedvictorydesign.com/2009/04/29/arduino-dmx-512-io-shield/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/04/29/arduino-dmx-512-io-shield/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 21:28:43 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Lighting]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=549</guid>
		<description><![CDATA[Breadboard is Great and All, But it&#8217;s not going to survive a six week run with actors tripping over it and that kid&#8217;s show that runs on Sunday mornings.  So here&#8217;s a shield that can fit onto your Arduino and securely hold all your connections in place.  It is tested and working with the dmx [...]]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Part I: Features--></p>
<p><a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/04/p1000325.jpg" rel="lightbox[549]"><img class="aligncenter size-full wp-image-552" title="p1000325" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/04/p1000325.jpg" alt="p1000325" width="1000" height="1018" /></a></p>
<p><span class="majuscule">Breadboard is Great and All, But</span> it&#8217;s not going to survive a six week run with actors tripping over it and that kid&#8217;s show that runs on Sunday mornings.  So here&#8217;s a shield that can fit onto your Arduino and securely hold all your connections in place.  It is tested and working with the <a href="http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/" target="_blank">dmx reception software I wrote for the Arduino</a>.</p>
<p class="majuscule">Features:</p>
<ul>
<li>Same hardware be used to receive <a href="http://www.arduino.cc/playground/Learning/DMX" target="_blank">or send</a> DMX, so you only have to build one shield.</li>
<li>Onboard termination switch.</li>
<li>Reset switch brought to top of shield for easy access.</li>
<li>Pin 13 LED brought to shield for status/error messages.</li>
<li>Two tact switches allow <a href="http://blog.wingedvictorydesign.com/2009/04/29/arduino-dmx-512-io-shield/" target="_blank">in-the-field addressing</a>, without permanently disabling any pins.</li>
<li>Header sockets for easy prototyping.</li>
<li>Solder through-holes for permanent installations.</li>
</ul>
<p><span class="majuscule">Note:</span> I changed the pin assignments slightly from early versions of the software to allow easier routing.  Pins 3 and 4 in the software are now pins 2 and 3, respectively.  As of Rev11 this change has been made, get the latest version <a href="http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/3/">here</a>.</p>
<p><a href="http://blog.wingedvictorydesign.com/2009/04/29/arduino-dmx-512-io-shield/2/"><em>Continue reading for the parts and instructions&#8230;</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/04/29/arduino-dmx-512-io-shield/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Rev10 of the Arduino DMX Receiver Code Released</title>
		<link>http://blog.wingedvictorydesign.com/2009/04/01/rev10-of-the-arduino-dmx-receiver-code-released/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/04/01/rev10-of-the-arduino-dmx-receiver-code-released/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 05:32:04 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Lighting]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=485</guid>
		<description><![CDATA[New in this Release: Cleaned up and improved code commenting. Adjusted HardwareSerial.cpp (included) so the code will compile on Arduino software release 0015. If you&#8217;re still using 0014 or 0013, you&#8217;ll replace wiring_serial.c instead (also included). Replaced manual register configuration of the USART with the Arduino function Serial.Begin(250000), which apparently works just as well and [...]]]></description>
			<content:encoded><![CDATA[<p class="majuscule">New in this Release:</p>
<ul>
<li>Cleaned up and improved code commenting.</li>
<li>Adjusted HardwareSerial.cpp (included) so the code will compile on Arduino software release 0015.  If you&#8217;re still using 0014 or 0013, you&#8217;ll replace wiring_serial.c instead (also included).</li>
<li>Replaced manual register configuration of the USART with the Arduino function Serial.Begin(250000), which apparently works just as well and reduces the number of Atmega168-specific register calls considerably.</li>
<li>Moved the action() loop (what you want the Arduino to do with the received values) to its own tab, to make the code easier to use.</li>
</ul>
<p>I&#8217;ve updated the <a href="http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/2/">instructions</a>, or you can download the updated code directly <a href="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/03/receiver_rev10.zip">here</a>.</p>
<p>As always, let me know how works for you, or doesn&#8217;t.</p>
<ul>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/04/01/rev10-of-the-arduino-dmx-receiver-code-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Receive DMX-512 with an Arduino</title>
		<link>http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/</link>
		<comments>http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 08:35:59 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Lighting]]></category>

		<guid isPermaLink="false">http://blog.wingedvictorydesign.com/?p=222</guid>
		<description><![CDATA[Prologue: For Christmas, I received an Arduino.  If you&#8217;re not familiar with them, they&#8217;re like a little computer with a lot of pins to which you can connect outputs like LEDs, servos, relays, triacs, or anything you&#8217;d want to control, as well as photosensors, switches, anything you&#8217;d want to take an input from.  You write [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_390" class="wp-caption aligncenter" style="width: 624px"><img class="size-large wp-image-390 " title="arduino" src="http://blog.wingedvictorydesign.com/wp-content/uploads/2009/03/arduino-1024x768.jpg" alt="arduino" width="614" height="461" /><p class="wp-caption-text">Shiny and new out of the box!</p></div>
<p style="text-align: center;"><!--pagetitle:Part I: Prologue--></p>
<p><span class="majuscule">Prologue:</span> For Christmas, I received an <a href="http://www.arduino.cc" target="_blank">Arduino</a>.  If you&#8217;re not familiar with them, they&#8217;re like a little computer with a lot of pins to which you can connect outputs like LEDs, servos, relays, triacs, or anything you&#8217;d want to control, as well as photosensors, switches, anything you&#8217;d want to take an input from.  You write your program in the easy-to-learn Arduino environment, upload it to the Arduino board, and it&#8217;ll run your program automagically.  I&#8217;m not a programmer, but less than an hour after taking it out of the box I had it blinking an LED for me.  <a href="http://www.adafruit.com/index.php?main_page=index&amp;cPath=17&amp;sessid=1b4cce5aadc71ea504b69523c5ae0a2c">Buy one</a>, they&#8217;re <strong>perfect</strong> for all of us who are trying to create some Theater Magic with no money or hope of getting any.</p>
<p><span class="majuscule">Well, Almost Perfect</span>.  There&#8217;s been a way to send DMX with an Arduino for awhile, but when I started poking around for DMX reception code, I came up with zilch.  If you&#8217;re already savvy with microcontrollers and assembly code and avrdude and whatever-the-fuck-else, you probably know about <a href="http://www.hoelscher-hi.de/hendrik/english/demux.htm">this solution</a>.  Me, I look at assembly code and I just hear a dull screaming in my head, nevermind all that other stuff that I don&#8217;t know how to do either.</p>
<p>So I figured that a great first project would be to remedy this situation, and write a program to receive DMX on the Arduino platform.  In the way of all Works in this Vale of Tears, this ended up being much more difficult and taking much longer than I initially anticipated.  But eventually I figured it all out, and so here it is!</p>
<p class="majuscule">Features:</p>
<ul>
<li>In-the-field addressing from 1 to 512 via two tact switches (works with the previously released I/O Shield, <a href="../2009/04/29/arduino-dmx-512-io-shield/" target="_blank">here</a>).</li>
<li>Address is stored in non-volatile EEPROM, so it is retained when power is lost to the Arduino.</li>
<li>Addressing hardware allows full use of the pins.</li>
<li>Number of addresses to receive is configurable.</li>
<li>Works with controllers that send less than the full 512 address set.</li>
<li>Break detection is done correctly by detecting a Low value of &gt;88μS per ANSI E1.11-2008, rather than the frame error hack used by many devices.</li>
<li>Uses interrupt-based subroutines to eliminate processor-load related timing problems.</li>
<li>If the DMX data signal is lost, the Arduino will maintain the current state until new values are received.</li>
<li>The reception and user code run sequentially rather than at the same time, so they won&#8217;t interfere with each others&#8217; timing.</li>
</ul>
<p><a class="majuscule" href="http://blog.wingedvictorydesign.com/?p=222&amp;page=2">Continue to Page 2 for Download and Instructions&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wingedvictorydesign.com/2009/03/20/receive-dmx-512-with-an-arduino/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
	</channel>
</rss>
