<?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>Arduinoos</title>
	<atom:link href="http://www.arduinoos.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arduinoos.com</link>
	<description>Get the most out of the least</description>
	<lastBuildDate>Mon, 20 May 2013 22:09:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Flash news</title>
		<link>http://www.arduinoos.com/2013/05/flash-news/</link>
		<comments>http://www.arduinoos.com/2013/05/flash-news/#comments</comments>
		<pubDate>Wed, 15 May 2013 13:37:57 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Information]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4940</guid>
		<description><![CDATA[Siegfried BURGEOT, Project Manager at the CRIJ &#8211; Poitou Charente invites the fans of high tech, open source, hackers, geeks at a &#8230; Meeting at the EESI (École Européene Supérieure de l&#8217;Image) Espace Scénique 1st floor 21 May from 13:00 to 18:00 26 Rue Jean Alexandre, 86000 Poitiers &#8211; France / +33.5.45.92.66.02 (In case of [...]]]></description>
				<content:encoded><![CDATA[<p>Siegfried BURGEOT, Project Manager at the CRIJ &#8211; Poitou Charente invites the fans of high tech, open source, hackers, geeks at a &#8230;</p>
<p><strong>Meeting at the EESI (École Européene Supérieure de l&#8217;Image) Espace Scénique 1st floor</strong></p>
<p><strong>21 May from 13:00 to 18:00</strong></p>
<p>26 Rue Jean Alexandre, 86000 Poitiers &#8211; France / +33.5.45.92.66.02</p>
<p>(In case of trouble, call Siegfried +33.6.80.62.76.61)</p>
<p><strong>Program, workshops</strong> :</p>
<ul>
<li>3D Printers / Guillaume Brunet from PING</li>
<li>Arduino / Julien Rat from Les Petits débrouillards</li>
<li>Makey Makey / Espace Mendès France (to be confirmed)</li>
<li>Processing / Hervé Jolly from the EESI</li>
</ul>
<p><a href="https://docs.google.com/forms/d/1to7yHZXkWiXIgiunTyMq4w5kfiTaSAY3QAA7NR64i0o/edit?usp=drive_web">Register </a>(2 workshops each, 10 participants max. per workshop)</p>
<p><strong>Agenda</strong>:</p>
<p>13h00 &#8211; 13h30 &#8211; Welcome<br />
13h30 &#8211; 15h00 &#8211; Workshops<br />
15h00 &#8211; 15h30 &#8211; Break/Tchat/Cigarettes/Coffee<br />
15h30 &#8211; 17h00 - Workshops<br />
17h00 &#8211; 17h30 &#8211; Tchat/Tidyup<br />
18h00 &#8211; End</p>
<p>Bring your computers and download the following software</p>
<div>
<ul>
<li><a href="http://www.processing.org/download/">http://www.processing.org/download/</a></li>
<li><a href="http://scratch.mit.edu/">http://scratch.mit.edu/</a></li>
<li><a href="http://web.media.mit.edu/~silver/drawdio/">http://web.media.mit.edu/~silver/drawdio/</a></li>
<li><a href="http://singingfingers.com/">http://singingfingers.com/</a></li>
</ul>
<p>Ressources:</p>
<p>- <a href="http://www.arduino.cc/fr/">http://www.arduino.cc/fr/</a><br />
- <a href="http://www.arduinoos.com/">http://www.arduinoos.com/</a></p>
</div>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/05/flash-news/&text=Flash news" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/05/flash-news/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PlainDSP (Part 3)</title>
		<link>http://www.arduinoos.com/2013/05/plaindsp-part-3/</link>
		<comments>http://www.arduinoos.com/2013/05/plaindsp-part-3/#comments</comments>
		<pubDate>Wed, 01 May 2013 19:51:35 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Data acquisition]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Sensors]]></category>
		<category><![CDATA[Sound]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Measuring instruments]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Sound capture]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4926</guid>
		<description><![CDATA[Part 1, 2, 3 This post contains an application of the data acquisition and analysis from the PlainDSP library. The credit of the idea goes to Preston who is currently busy at deadening his truck. In his mail of PlainDSP library request, Preston explained to me his current project, and I found it fun and for some reasons, it [...]]]></description>
				<content:encoded><![CDATA[<p>Part <a href="http://www.arduinoos.com/?p=4894">1</a>, <a href="http://www.arduinoos.com/?p=4905">2</a>, <a href="http://www.arduinoos.com/?p=4926">3</a></p>
<p>This post contains an application of the data acquisition and analysis from the <strong><a href="http://www.arduinoos.com/?p=4894">PlainDSP </a></strong>library.</p>
<p>The credit of the idea goes to <strong>Preston</strong> who is currently busy at deadening his truck. In his mail of PlainDSP <strong><a href="http://www.arduinoos.com/code_requests/">library request</a></strong>, Preston explained to me his current project, and I found it fun and for some reasons, it is related to one of my current domains of interest (from the pro side). So&#8230; here it is. Enjoy and have fun!</p>
<p>Preston needs a simple, affordable and portable real time Sound Level Meter in order to perform relative measurements of noise levels inside the cabin of his truck, before and after installing damping material or replacing parts which are suspected to contribute to the noise.</p>
<p>Although PlainDSP could allow much more sophisticated measurements (e.g. Performing targeted measurements at certain frequencies), I decided to stick to Preston&#8217;s request. Let&#8217;s firstly talk about the electronics. As I have no real idea about the noise level of Preston&#8217;s truck (I understand that is significantly above the noise from inside a Cadillac <img src='http://www.arduinoos.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ), I decided to design an autoranging preamplifier. The first stage will raise the level from the microphone to 21 times its original level. Two more amplifying stages are cascaded in order to achieve gains of  336 (21 * 16)  up to 5276 (21 * 16 * 16). To the cost of some resolution loss at high gains, this design boosts the original 10 bits analog to digital converter to an equivalent 18 bits adc!</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/05/MicroSND_MTR.jpg"><img class="alignnone size-medium wp-image-4929" alt="MicroSND_MTR" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/05/MicroSND_MTR-300x162.jpg" width="300" height="162" /></a></p>
<p>The autoranging preamplifier is built around a <strong><a href="http://goo.gl/EpYWr">TS924 </a></strong>quad op amp. IC1C is wired as a voltage follower which copies the voltage on its non inverting pin (10) to its buffered output pin (8). The input signal is taken from the midpoint of the voltage divider bridge R1 R2 (20k each)  which is decoupled by C3 (10µF). The output voltage (half 3.3V) is used as a virtual ground for the three amplifying stages (IC1A, B and D).</p>
<p>R7 (1k) biases D1 and D2, and this reference voltage is decoupled by C2 (2.2µF). The microphone cell (electret type) is biased from this reference voltage through R8 (1k). The signal from the microphone is decoupled by C1 (1µF) and the gain of the first amplifying stage is set by R3 (1k) and R4 (20k). Then two identical amplifying stages are mounted in series with the first stage, each of them having a gain of 16 set by R5 and R10 (1k each) and R6 and R9 (15k each)</p>
<p><strong>Note</strong>:  The gain values can be changed, but you will have to change the gain settings in the code.</p>
<p>The signal from each amplifying stage is wired to the analog ports of Arduino: IC1A pin 1 goes to A0, IC1B pin 7 goes to A1, IC1D pin 14 goes to A2. Connect VCC to the 3.3V <span style="text-decoration: underline;">AND</span> to Vref of Arduino and GND to GND. That&#8217;s it.</p>
<p>Here is an illustration of the prototype that I built using an Arduino Nano and a middle size breadboard</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/05/MicroSND_MTR_01.jpg"><img class="alignnone size-medium wp-image-4931" alt="MicroSND_MTR_01" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/05/MicroSND_MTR_01-300x174.jpg" width="300" height="174" /></a></p>
<p>&nbsp;</p>
<p>I am using a lot preassembled passive components which allow to &#8220;cable as you think&#8221;.</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/05/MicroSND_MTR_02.jpg"><img class="alignnone size-medium wp-image-4932" alt="MicroSND_MTR_02" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/05/MicroSND_MTR_02-300x234.jpg" width="300" height="234" /></a></p>
<p>Thanks to some minimal normalization (e.g. Diodes use yellow wires and the live tip is the cathode), the chances of mixing up components is very low. In addition to quick wiring, the use of insulated extension wires prevents short circuits and allows compact wiring. In the present case, keeping wire lengths short is mandatory for avoiding to pick up noise. In the same spirit, if the microphone is to be used out of the board, consider using a shielded extension cable.</p>
<p>Time for coding. Here is the sketch which will allow repetitive prints of some interesting information:</p>
<ul>
<li>Selected overall gain (for information)</li>
<li>Pic to pic noise (in mV)</li>
<li>Root Mean  Square of noise (in mV)</li>
<li>Sound Pressure Levels (in dB)</li>
</ul>
<p><strong>Note</strong>: Although the three first results were enough for Preston, I think that adding the SPL gives an additional interesting information that one can relate to the following table which gives examples of sound sources (noise)</p>
<ul>
<li> Jet aircraft, 50 m away: 140 <em id="__mceDel">dB</em></li>
<li><em id="__mceDel">Threshold of pain: 130 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Threshold of discomfort: 120 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Chainsaw, 1 m distance: 110 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Disco, 1 m from speaker: 100 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Diesel truck, 10 m away: 90 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Kerbside of busy road, 5 m: 80 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Vacuum cleaner, distance 1 m: 70 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Conversational speech, 1 m: 60 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Average home: 50 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Quiet library: 40 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Quiet bedroom at night: 30 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Background in TV studio: 20 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Rustling leaves in the distance: 10 <em id="__mceDel">dB</em></em></li>
<li><em id="__mceDel">Hearing threshold: 0 <em id="__mceDel">dB</em></em></li>
</ul>
<p>For those who want to learn more about measurement of sounds, please check this <strong><a href="http://goo.gl/06hSn">excellent site</a></strong> (English version available)</p>
<pre class="brush:cpp">/*

	Micro_DB_MTR: Micro dB meter
	Exemple of use of the PlainDSP library
	Tested with ATmega328 powered Arduino
	Copyright (C) 2012-2013 Didier Longueville

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.

*/

#include &lt;PlainDSP.h&gt;

/* Create objects */
PlainDSP DSP; 

/* Acquisition parameters */
const uint16_t _samples = 128; /* Max value depends upon available memory space */
const double _samplingFrequency = 22100.0; /* From 0.125 Hz to 80 kHz */
const uint16_t _defAdcChannel = 0; /* From 0 to 5 on ATmega328 powered Arduinos */
const uint16_t _refVoltage = DSP_REF_VOL_EXTERNAL; /* External: 3.3V */
const uint8_t _options = (DSP_OPT_DIS_TIM_0 | DSP_OPT_DIS_TIM_2 | DSP_OPT_NOI_CANCELLER);
uint8_t _adcChannel;
const float _refPressure = 20E-6;
/* Custom data */
const float _vGains[] = {21.0, 16.0, 16.0}; /* gain of first stage on first place and so on */
const float _microphoneSensitivity = 2.5; /* unit Pa/mV, read from microphone datasheet */

/* Control led parameters */
#define LED_PORT &amp;PORTB
#define LED_PIN PINB5

void setup()
{
	/* Initialize serial comm port */
	Serial.begin(115200); 
	/* Set data acquisition parameters */
	DSP.SetAcquisitionEngine(_defAdcChannel, _refVoltage,  _samplingFrequency, _samples, _options);	
	/* Mark event */
	BlinkLed(3);
};

void loop() 
{		
	/* Start reading the most amplified signal from 3d stage */
	_adcChannel = 3;
	uint8_t saturated = 1;
	/* Reads preamlifier stages sequentially, starting from the highest gain */
	do  {
		/* Set channel */
		_adcChannel -= 1;
		/* Set channel */
		DSP.Channel(_adcChannel);
		/* Acquire data */
		DSP.GetScanData();
		/* Check signal */
		if ((DSP.Min() &gt;= 1.0) &amp;&amp; (DSP.Max() &lt;= 1023.0)) {
			saturated = 0;
		}
	} while ((saturated == 1) &amp;&amp; (_adcChannel != 0));
	float gain = 1.0;
	for (uint8_t i = 0; i &lt;= _adcChannel; i++) {
		gain *= _vGains[i];
	}
	/* Compute scaling factor for mV */
	float scalingFactor = (3.3 / (1.024 * gain));
	/* Reset offset */
	DSP.ResetOffset();
	/* Rescale data */
	DSP.Gain(scalingFactor);
	/* Compute and print statictics */
	float rmsSignal = DSP.RMS();
	float rmsPressure = (20 * log10(rmsSignal / (_refPressure * _microphoneSensitivity)));
	Serial.print("G: ");
	Serial.print(uint16_t(gain));
	Serial.print(", ");
	Serial.print("P/P: ");
	Serial.print((DSP.Max() - DSP.Min()), 3);
	Serial.print(" mV");
	Serial.print(", ");
	Serial.print("RMS: ");
	Serial.print(rmsSignal, 3);
	Serial.print(" mV");
	Serial.print(", ");
	Serial.print("SPL: ");
	Serial.print(int16_t(rmsPressure));
	Serial.print(" dB");
	Serial.println();
	/* Print raw data */
	// PrintData(); /* Uncomment as appropriate */
	/* Mark event */
	BlinkLed(1);
	/* Uncomment next lines as appropriate */
	// while(true); /* Run Once */
	delay(1000); /* Repeat after delay */
};

void PrintData() 
{
	for (uint16_t i = 0; i &lt; _samples; i++) {
		double abscissa = (i / _samplingFrequency);
		Serial.print(abscissa, 6);
		Serial.print("\t");
		double ordinate = DSP.ReadData(i);
		Serial.print(ordinate , 6);
		Serial.println();
	}
	Serial.println();
}

void BlinkLed(uint16_t cycles) 
/* Blink control led */
{
	/* Make the led pin an output pin */
	*(LED_PORT - 1) |= (1 &lt;&lt; LED_PIN);
	/* Reset pin state */
	*LED_PORT &amp;= ~(1 &lt;&lt; LED_PIN); /* Turn control led off */
	for (uint8_t i = 0; i &lt; (cycles &lt;&lt; 1); i++)	{
		delay(200);
		*LED_PORT ^= (1 &lt;&lt; LED_PIN);
	}
};</pre>
<p>Except for the SPL calculation, PlainDSP contains all the functions required to make this application work.</p>
<p>Do not expect to get down to 0dB using a breadboard assembled module! The measured noise on the illustrated assembly shows a background RMS noise of 0.006 mV, leading to 40dB SPL!</p>
<p><strong>Important</strong>: Please do not test the equipment next to loud noises without ear protections. I will accept no complains from those who will try it next to a rocket launch pad. <img src='http://www.arduinoos.com/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Coming next: same as before with LCD for portable applications.</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/05/plaindsp-part-3/&text=PlainDSP (Part 3)" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/05/plaindsp-part-3/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>PlainDSP (Part 2)</title>
		<link>http://www.arduinoos.com/2013/04/plaindsp-part-2/</link>
		<comments>http://www.arduinoos.com/2013/04/plaindsp-part-2/#comments</comments>
		<pubDate>Mon, 08 Apr 2013 21:42:51 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[FFT]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Data acquisition]]></category>
		<category><![CDATA[Measuring instruments]]></category>
		<category><![CDATA[Serial comm ports]]></category>
		<category><![CDATA[Sound capture]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4905</guid>
		<description><![CDATA[Part 1, 2, 3 The next lines of code illustrate how PlainDSP simplifies the combination of data acquisition and data analysis. You no longer need to worry about the vectors of data. PlainDSP creates dynamically  and transparently the required vectors. On the other hand you must keep in mind that they exist and take 8 times the number [...]]]></description>
				<content:encoded><![CDATA[<p>Part <a href="http://www.arduinoos.com/?p=4894">1</a>, <a href="http://www.arduinoos.com/?p=4905">2</a>, <a href="http://www.arduinoos.com/?p=4926">3</a></p>
<p>The next lines of code illustrate how <strong>PlainDSP</strong> simplifies the combination of data acquisition and data analysis. You no longer need to worry about the vectors of data. <strong>PlainDSP</strong> creates dynamically  and transparently the required vectors. On the other hand you must keep in mind that they exist and take 8 times the number of samples&#8230; So that no more that 128 samples shall be used when <strong>PlainDSP</strong> is running on an arduino UNO.</p>
<p>The first part of the code contains the instruction for including PlainDDS library and the creation of the DSP object. Then come the data acquisition parameters. Note that <strong>PlainDSP</strong> allows you to selectively deactivate the unused timers in order to improve the sampling rate stability, along with the activation of the noise canceler function. The sampling rate is now limited to 80kHz, which is the price to pay for the simplification of use of the library. On the other hand, this limit is far above the 44.1kHz sampling rate required for achieving CD sound quality</p>
<pre class="brush:cpp">#include &lt;PlainDSP.h&gt;
/* Create objects */
PlainDSP DSP; /* Create DSP object */
/* Acquisition parameters */
const uint16_t _samples = 128; /* Max value depends upon available memory space */
const float _samplingFrequency = 2000.0; /* From 0.125 Hz to 80 kHz */
const uint16_t _adcChannel = 0; /* From 0 to 5 on ATmega328 powered Arduinos */
const uint16_t _refVoltage = DSP_REF_VOL_DEFAULT; /* VCC: 5V */
const uint8_t _options = (DSP_OPT_DIS_TIM_0 | DSP_OPT_DIS_TIM_2 | DSP_OPT_NOI_CANCELLER);
const float _targetPeakFrequency = 10000.0;
/* Local scale constants */
#define SCL_INDEX 0x00
#define SCL_TIME 0x01
#define SCL_FREQUENCY 0x02</pre>
<p>The second part deals with the set up section of the code. This is where the data acquisition parameters are set: adc channel index (0 to 5 for arduino UNO), reference voltage, sampling rate frequency (0.125Hz to 80kHz), samples (1 to 128 for arduino UNO) and noise reduction options.</p>
<pre class="brush:cpp">void setup()
{
	/* Initialize serial comm port */
	Serial.begin(115200); 
	/* Set data acquisition parameters and get memory location of data */
	DSP.SetAcquisitionEngine(_adcChannel, _refVoltage, _samplingFrequency, _samples, _options);	
};</pre>
<p>The third part deals with the loop section of the code. This is where the data acquisition and data analysis take place. Acquiring data is as simple as <strong>GetScanData()</strong>. Once executed, data can be read using the<strong> ReadData()</strong> function. Again, no need to care about where and how data is strored. In the example, some additional functions are used prior to applying FFT: <strong>ResetOffset()</strong> which nulls the offset of a periodic (e.g. sinusoidal) signal. The <strong>Rescale()</strong> function converts the ordinate scale so that 1024 counts translate to 5V. Use the  <strong>PrintVector()</strong> function in order to visualize the signal on completion of the successive steps. The <strong>ClearVector()</strong> function must be used to erase the content of the vector which contains the imaginary data. Failing to do so may lead to unexpected results.</p>
<p><strong>Note</strong>: This vector is not automatically cleared in order to allow the reversal use of FFT, in the context of denoising function.</p>
<p>Use the <strong>ComputeFFT()</strong>  function with appropriate argument, depending upon the the nature of the original signal. Finally execute the Complex to real function in order to get the frequency domain data, so as to say, the frequency spectrum.</p>
<p>Both <strong>MajorPeak()</strong> and <strong>TargetPeak()</strong> which perform automatic peak picking and peak quantification (apex location, interpolated peak apex location, peak height). Once again, you do not have to worry about the location of data</p>
<p>&nbsp;</p>
<pre class="brush:cpp">void loop() 
{
	/* Acquire data */
	DSP.GetScanData();
	/* Null offset */
	DSP.ResetOffset();
	/* Rescale signal */
	DSP.Rescale((5.0 / 1024.0), 0);
	/* Print raw data */
	PrintVector(SCL_TIME); /* Comment line if not needed */
	/* Weigh data */
	DSP.Windowing(DSP_WIN_TYP_HANN, DSP_FORWARD);	
	PrintVector(SCL_TIME); /* Comment line if not needed */
	/* Compute FFT */
	DSP.ClearVector(DSP_IMG_DATA);
	DSP.ComputeFFT(DSP_FORWARD);	
	/* Print real and imag data */
	PrintVector(SCL_INDEX); /* Comment line if not needed */
	/* Compute magnitudes */
	DSP.ComplexToReal(DSP_SCL_TYP_AMPLITUDE);
	/* Print frequency spectrum */
	PrintVector(SCL_FREQUENCY); /* Comment line if not needed */
	/* Find major peak */
	struct strPeakProperties majorPeak;
	DSP.MajorPeak(_targetPeakFrequency - (_targetPeakFrequency * .5), _targetPeakFrequency + (_targetPeakFrequency * .5), &amp;majorPeak);
	Serial.print("Major peak ");
	Serial.print("bin: ");
	Serial.print(majorPeak.bin);	
	Serial.print(", feq.: ");
	Serial.print(majorPeak.position, 6);	
	Serial.print(", height: ");
	Serial.print(majorPeak.height, 6);	
	Serial.println();
	/* Find target peak */
	struct strPeakProperties targetPeak;
	DSP.TargetPeak(_targetPeakFrequency, (_targetPeakFrequency * 0.1), &amp;targetPeak);
	Serial.print("Target peak ");
	Serial.print("bin: ");
	Serial.print(targetPeak.bin);	
	Serial.print(", feq.: ");
	Serial.print(targetPeak.position, 6);	
	Serial.print(", height: ");
	Serial.print(targetPeak.height, 6);	
	Serial.println();
	/* Mark event */
	BlinkLed(1);
	while(true); /* Run Once */
	// delay(3000); /* Repeat after delay */
};</pre>
<p>Ultimately, the <strong>PrintVector()</strong> function allows the export of abscissa and ordinate data taken from the time domain and frequency domain.</p>
<pre class="brush:cpp">void PrintVector(uint8_t scaleType)
{	
	uint16_t bufferSize = _samples;
	if (scaleType == SCL_FREQUENCY) {
		bufferSize &gt;&gt;= 1;
	}
	for (uint16_t i = 0; i &lt; bufferSize; i++) {
		float abscissa;
		/* Print abscissa value */
		switch (scaleType) {
		case SCL_INDEX:
			abscissa = float(i);
			break;
		case SCL_TIME:
			abscissa = (i / _samplingFrequency);
			break;
		case SCL_FREQUENCY:
			abscissa = ((i * _samplingFrequency) / _samples);
			break;
		}
		Serial.print(abscissa, 6);
		Serial.print('\t');
		/* Print ordinate */
		Serial.print(DSP.ReadData(i), 6);
		Serial.println();
	}
	Serial.println();
};</pre>
<p>&nbsp;</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/04/plaindsp-part-2/&text=PlainDSP (Part 2)" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/04/plaindsp-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>April fool !  Really ?</title>
		<link>http://www.arduinoos.com/2013/04/april-fool-really/</link>
		<comments>http://www.arduinoos.com/2013/04/april-fool-really/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 07:34:03 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Information]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4883</guid>
		<description><![CDATA[I cannot resist to the temptation of reproducing this letter that I picked up from the blog of a veteran analog guru, fan of oscilloscopes and vintage electronics. &#160; I was just a project in the sparkling eyes of my parents at the time this letter was written, and I understand that computers where far from the [...]]]></description>
				<content:encoded><![CDATA[<p>I cannot resist to the temptation of reproducing this letter that I picked up from the blog of a veteran analog guru, fan of oscilloscopes and vintage electronics.</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/03/hp-letter.jpg"><img class="alignnone size-medium wp-image-4884" alt="hp-letter" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/03/hp-letter-273x300.jpg" width="273" height="300" /></a></p>
<p>&nbsp;</p>
<p>I was just a project in the sparkling eyes of my parents at the time this letter was written, and I understand that computers where far from the short term preoccupations of Bill and Dave. What&#8217;s incredible is that &#8220;02&#8243; (nickname of the &#8220;computer&#8221; division at the time I joined HP) overlapped, not to say vampirized, the whole company which was &#8220;01&#8243; mainly for years (&#8220;01&#8243; was the &#8220;measure&#8221; division). I am not sure neither Bill nor Dave were big fans of computers, except for those who were designed for driving their ultimate measuring devices.</p>
<p>I got a chance to get to Page Mill road while I was working at the &#8220;Analytical Chemistry Division&#8221; (&#8220;04&#8243;). Actually I missed my way on the first time I visited SID (Scientific Instruments Division), one road ahead in California Avenue! These times are long gone now, memories remain: the smell of hot insulation material, the hiss of crashing hard disk drives, the crackling of short circuits&#8230; That reminds me of the b&#8230;.y A26, (in)famous switching controller board which could blow up the whole boards from the first micro controlled gas chromatograph from HP. Oh noooooooooo. That happened to best of us!</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/04/april-fool-really/&text=April fool !  Really ?" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/04/april-fool-really/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PlainDSP (Part 1)</title>
		<link>http://www.arduinoos.com/2013/03/plaindsp-part-1/</link>
		<comments>http://www.arduinoos.com/2013/03/plaindsp-part-1/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 18:24:45 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[FFT]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Measuring instruments]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4894</guid>
		<description><![CDATA[Part 1, 2, 3 Among the most popular subjects covered in this blog, FFT is far ahead any other subject (22%!), followed by data acquisition functions. I got many, many requests for PlainFFT and PlainADC libraries and thanks to your explicit messages, I have a quite good understanding of who is using them and for which type of [...]]]></description>
				<content:encoded><![CDATA[<p>Part <a href="http://www.arduinoos.com/?p=4894">1</a>, <a href="http://www.arduinoos.com/?p=4905">2</a>, <a href="http://www.arduinoos.com/?p=4926">3</a></p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/03/dsp.jpg"><img class="alignnone size-medium wp-image-4900" alt="dsp" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/03/dsp-300x132.jpg" width="300" height="132" /></a></p>
<p>Among the most popular subjects covered in this blog, FFT is far ahead any other subject (22%!), followed by data acquisition functions. I got many, many requests for <strong><a href="http://goo.gl/7mHmV">PlainFFT </a></strong>and <strong><a href="http://goo.gl/HCV9u">PlainADC </a></strong>libraries and thanks to your explicit messages, I have a quite good understanding of who is using them and for which type of application. It is now clear to me that most of PlainFFT and PlainADC users have an average level in math and that they do not feel comfortable with advanced DSP functions. On the other hand, these advanced functions are extremely useful for building awesome applications, mainly in the field of arts, or should I say, interactive arts.</p>
<p>Based on this review, I decided to pack all the DSP functions that you like and need the most in a single, compact, fit for purpose library. The code has been optimized in order to simplify the use of the functions, e.g. unless you wish to do so, you do not have to care about vectors of data, you just use some nicknames such as DATA, REAL or IMAGINARY to name them, if you need to do so, do you?.  The PlainDSP performances have been optimized for speed, although it is not quick enough to allow real time processing. When run on an Arduino UNO, the data acquisition engine allows 0.125Hz to 80kHz sampling rates, and it does not take any longer than 75ms to acquire data and compute a 64 bins frequency spectra out of signal captured at a sampling rate of 44.1kHz. The maximum number of samples is limited to 128 when run on the Arduino UNO which includes 2kB; under these conditions, 1k is used for data storage. How come? 128 samples for real data, 128 samples for imaginary data, 4 bytes each samples (32 bits floats) = 2 x 128 x 4 = 1024 bytes. CQFD.</p>
<p>Here is a list of the public functions from the PlainDSP library:</p>
<pre class="brush:cpp">Average();
ClearVector(dataType);
ComplexToReal(scaleType);
Compute(dir);
GetDataAddress(dataType);
GetScanData();
MajorPeak(*result);
MajorPeak(loFrequency, upFrequency, *result); 
Max(); 
Min(); 
Normalize(normalizingValue); 
ReadData(index);	
ReadData(dataType, index);	
ReleaseAcquisitionEngine();
ReleaseVector(dataType);
Rescale(offset, gain);
ResetOffset();
RMS();
SetAcquisitionEngine(adcChannel, refVoltage, samplingFrequency, samples, options);
SizeVector(dataType);
SizeVector(*vData, samples);
TargetPeak(targetPosition, tolerance, *result);
Windowing(windowType, dir); 
WriteData(index, data);
WriteData(dataType, index, data);</pre>
<p>&nbsp;</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/03/plaindsp-part-1/&text=PlainDSP (Part 1)" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/03/plaindsp-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Power Supplies (Part 1)</title>
		<link>http://www.arduinoos.com/2013/03/power-supplies-part-1/</link>
		<comments>http://www.arduinoos.com/2013/03/power-supplies-part-1/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 21:28:46 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Power supplies]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4737</guid>
		<description><![CDATA[As long as you want to blink leds, everything&#8217;s fine with the power supplied by the USB cable. Here is a nice clean shield which could help you in fulfilling most power supply requirements. &#160; The input voltage must lie in the 4.5 et 35 V range, and its output swings from 1.25 to 12V under 3A. It [...]]]></description>
				<content:encoded><![CDATA[<p>As long as you want to blink leds, everything&#8217;s fine with the power supplied by the USB cable. Here is a nice clean shield which could help you in fulfilling most power supply requirements.</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/01/power-shield-DFR01051.jpg"><img class="alignnone size-medium wp-image-4739" alt="power-shield-DFR0105" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/01/power-shield-DFR01051-300x162.jpg" width="300" height="162" /></a></p>
<p>&nbsp;</p>
<p>The input voltage must lie in the 4.5 et 35 V range, and its output swings from 1.25 to 12V under 3A. It features a simple switcher Power Converter 150kHz, 3A Step-Down VRegulator [<a href="http://www.ti.com/lit/gpn/lm2596">Datasheet</a>]. The power supply output can be redirected to the blue terminal or to the Vin pin from the Arduino board to which it is connected. The power supply can be controlled by digital pin 13 and also redirected to Analog pin 0 for voltage control. Clever. And it is affordable: less than 20€ as far as I can read from some vendors.</p>
<p>&nbsp;</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/03/power-supplies-part-1/&text=Power Supplies (Part 1)" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/03/power-supplies-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quadcopters</title>
		<link>http://www.arduinoos.com/2013/03/quadcopters-4/</link>
		<comments>http://www.arduinoos.com/2013/03/quadcopters-4/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 17:48:27 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Quadcopters]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4876</guid>
		<description><![CDATA[This post could be named at &#8220;Quadcopters and the magic wand&#8221; or &#8221;Quadcopters and the flying batons&#8221;. While watching this incredible new video, I was dreaming at a new ball game played with quadcopters, where quadcopter would flap a soft ball a little bit like volley ball, and throw it in a basket like in basket [...]]]></description>
				<content:encoded><![CDATA[<p>This post could be named at &#8220;Quadcopters and the magic wand&#8221; or &#8221;Quadcopters and the flying batons&#8221;. While watching this incredible new video, I was dreaming at a new ball game played with quadcopters, where quadcopter would flap a soft ball a little bit like volley ball, and throw it in a basket like in basket ball&#8230;</p>
<p>A must see!</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/pp89tTDxXuI?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Some more information</p>
<p><a href="http://goo.gl/GPjt0 ">http://goo.gl/GPjt0 </a></p>
<p><a href="http://goo.gl/1YIHO">http://goo.gl/1YIHO</a></p>
<p>Enjoy</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/03/quadcopters-4/&text=Quadcopters" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/03/quadcopters-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting started with the DUE (Part 2)</title>
		<link>http://www.arduinoos.com/2013/03/getting-started-with-the-due-part-2/</link>
		<comments>http://www.arduinoos.com/2013/03/getting-started-with-the-due-part-2/#comments</comments>
		<pubDate>Sat, 02 Mar 2013 09:38:12 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[FFT]]></category>
		<category><![CDATA[FIR]]></category>
		<category><![CDATA[Sound]]></category>
		<category><![CDATA[Data acquisition]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Sound capture]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4863</guid>
		<description><![CDATA[Part [-1, 0] 1, 2 I got a mail with an interesting question (Thanks Andrew!) regarding the performances of the DUE versus the UNO using PlainFFT. &#160; I built this simple sketch based on the example which comes with the PlainFFT package: #include "PlainFFT.h" #include "math.h" PlainFFT FFT; /* Create FFT object */ /* Simulation parameters */ #define TWO_PI 6.283185307179586476925286766559 const [...]]]></description>
				<content:encoded><![CDATA[<p>Part [<a href="http://www.arduinoos.com/2012/11/sold-out/">-1</a>, <a href="http://www.arduinoos.com/2013/01/here-comes-the-due/">0</a>] <a href="http://www.arduinoos.com/2013/01/">1</a>, <a href="http://www.arduinoos.com/2013/03/getting-starte…the-due-part-2/">2</a></p>
<p>I got a mail with an interesting question (Thanks Andrew!) regarding the performances of the DUE versus the UNO using PlainFFT.</p>
<p>&nbsp;</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/03/uno_vs_due.jpg"><img class="alignnone size-full wp-image-4865" alt="uno_vs_due" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/03/uno_vs_due.jpg" width="450" height="157" /></a></p>
<p>I built this simple sketch based on the example which comes with the PlainFFT package:</p>
<pre class="brush:cpp">#include "PlainFFT.h"
#include "math.h"

PlainFFT FFT; /* Create FFT object */
/* Simulation parameters */
#define TWO_PI 6.283185307179586476925286766559
const uint16_t _samples = 128;
const float _samplingFrequency = 200.0;
const float _signalFrequency = 50.0;
const float _signalIntensity = 100.0;
/* 
These are the input and output vectors 
Input vectors receive computed results from FFT
*/
float _vReal[_samples]; 
float _vImag[_samples];

void setup()
{
	Serial.begin(115200);
	// BlinkLed(3, 200);
	/* Build raw data */
	for (uint16_t i = 0; i &lt; _samples; i++) {
		float abscissa = (i / _samplingFrequency);
		_vReal[i] = (sin(abscissa * TWO_PI * _signalFrequency) * (_signalIntensity / 2.0));
		_vImag[i] = 0.0;
	}
};

void loop() 
{
	uint32_t tip = millis();
	for (uint16_t i = 0; i &lt; 100; i++) {
		/* Weigh data */
		FFT.Windowing(_vReal, _samples, FFT_WIN_TYP_HANN, FFT_FORWARD);	
		/* Compute FFT */
		FFT.Compute(_vReal, _vImag, _samples, FFT_FORWARD);	
		/* Compute magnitudes */
		FFT.ComplexToReal(_vReal, _vImag, _samples, FFT_SCL_TYP_AMPLITUDE);
	}
	uint32_t top = millis();
	Serial.println((top - tip) / 100.0, 2);
	while(true);
};</pre>
<p>Plain trivial!</p>
<p>Running this sketch on the UNO shows that each conversion lasts 62 ms, while running it on the DUE will cuts down the execution time to &#8230; 11 ms. That&#8217;s still a lot. Why? Well, the DUE is running approximately 5 times faster than the UNO (100MHz vs 16MHz). However PlainFFT is using 32 bits&#8230; floats, that the DUE&#8217;s micro-controller does not like so much. The ultimate performances would be achieved in fixed point maths&#8230;</p>
<p>Here is an other example which illustrates the situation at using an other library: PlainFIR. The lastest version that I am preparing performs real time filtering which lead me to use integer maths. The results were obtained for a 17 taps FIR filter.  Here are the results: UNO 100ms, DUE 5us! Whaow! How come! In this case, I took full advantage of the 32 bits architecture. Under these conditions, integer math on large numbers take &#8230; 4 times less  time.</p>
<p>Let&#8217;s recap: [gain of 4 (32 bits vs 8 bits)]  x [gain of 5 (100Mhz vs 16Mhz)] = bingo! The code executes 20 times faster on the DUE compared to the UNO, which is more or less the expected figure. And that makes a huge difference. Let&#8217;s consider real time processing of a signal which is sampled 44100 times per second, so as to say  in  &#8221;CD quality&#8221; conditions. This means that we have less than 25µs for: converting the analog signal to digital, storing the acquired data, executing the filtering process, setting the filtered value and converting the digital value  to an analog signal! That&#8217;s a lot of work to do in a short period of time where every µs counts! In other words, performing simple audio mods with the UNO is possible but it definitely fails to execute the least loop within the time interval between two signal samples.</p>
<p>Let&#8217;s see what we can get from the DUE. Unfortunately, the DUE suffers from a couple of drawback which drove me to use external components in order to achieve acceptable performances. Among these drawbacks, the slowness of <a href="http://arduino.cc/en/Reference/AnalogRead"><strong>analogRead</strong> </a>and of the <a href="http://arduino.cc/en/Reference/AnalogWrite"><strong>analogWrite</strong> </a>is the worst, and  <strong>DAC pins </strong>do not provide rail to rail output voltage. That&#8217;s really sad. The good news for the followers/fans of Arduinoos is that I will explain in the the next weeks how to overcome these problems to the cost of a few € (6€). So far, I managed to perform ADC and DAC within a 3.5µs time frame, which leaves quite sometime to perform additional tasks.</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/03/getting-started-with-the-due-part-2/&text=Getting started with the DUE (Part 2)" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/03/getting-started-with-the-due-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Souvenez vous!&#8221;</title>
		<link>http://www.arduinoos.com/2013/02/souvenez-vous/</link>
		<comments>http://www.arduinoos.com/2013/02/souvenez-vous/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 09:15:01 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Information]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4860</guid>
		<description><![CDATA[Rest in peace Stéphane Hessel. The author of the now famous &#8220;Indignez-vous!&#8221; passed away last night. http://goo.gl/A2DPG]]></description>
				<content:encoded><![CDATA[<p>Rest in peace Stéphane Hessel. The author of the now famous &#8220;Indignez-vous!&#8221; passed away last night. http://goo.gl/A2DPG</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/02/indignez_vous.jpg"><img class="alignnone size-full wp-image-4861" alt="indignez_vous" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/02/indignez_vous.jpg" width="185" height="299" /></a></p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/02/souvenez-vous/&text="Souvenez vous!"" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/02/souvenez-vous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog of the day</title>
		<link>http://www.arduinoos.com/2013/02/blog-of-the-day-11/</link>
		<comments>http://www.arduinoos.com/2013/02/blog-of-the-day-11/#comments</comments>
		<pubDate>Thu, 21 Feb 2013 10:33:09 +0000</pubDate>
		<dc:creator>Didier</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Sound]]></category>
		<category><![CDATA[Sound capture]]></category>

		<guid isPermaLink="false">http://www.arduinoos.com/?p=4852</guid>
		<description><![CDATA[Open music labs is a real source of  high quality information and amazing products. The ADC page and its subsidiaries are of particular interest for those who try to challenge the performances of their ATMEGAs. A must visit. I am currently evaluating their Audio Codec Shield which &#8220;sounds&#8221; great! &#160; &#160;]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/02/open_music_labs.jpg"><img class="alignnone size-medium wp-image-4853" alt="open_music_labs" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/02/open_music_labs-300x45.jpg" width="300" height="45" /></a></p>
<p>Open music labs is a real source of  high quality information and amazing products. The <strong><a href="http://goo.gl/DmIw3">ADC page</a></strong> and its subsidiaries are of particular interest for those who try to challenge the performances of their ATMEGAs. A must visit.</p>
<p>I am currently evaluating their Audio Codec Shield which &#8220;sounds&#8221; great!</p>
<p><a href="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/02/audio_codec_shield.jpg"><img class="alignnone size-medium wp-image-4854" alt="audio_codec_shield" src="http://www.arduinoos.com/wordpress/wp-content/uploads/2013/02/audio_codec_shield-293x300.jpg" width="293" height="300" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="twttr_button">
					<a href="http://twitter.com/share?url=http://www.arduinoos.com/2013/02/blog-of-the-day-11/&text=Blog of the day" target="_blank" title="Click here if you like this article.">
						<img src="http://www.arduinoos.com/wordpress/wp-content/plugins/twitter-plugin/images/twitt.gif" alt="Twitt" />
					</a>
				</div>]]></content:encoded>
			<wfw:commentRss>http://www.arduinoos.com/2013/02/blog-of-the-day-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
