<?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>PlayArduino.fr &#187; arduino</title>
	<atom:link href="http://www.playarduino.fr/tag/arduino/feed" rel="self" type="application/rss+xml" />
	<link>http://www.playarduino.fr</link>
	<description>L&#039;actualité Arduino en Français</description>
	<lastBuildDate>Thu, 25 Feb 2010 15:30:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Booster le temps de réponse de votre Arduino</title>
		<link>http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html</link>
		<comments>http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#comments</comments>
		<pubDate>Mon, 16 Nov 2009 23:53:45 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[PlayArduino.fr]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[binaire]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[hardcoding]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=173</guid>
		<description><![CDATA[Hardcoding
L&#8217;assignation d&#8217;un état LOW/HIGH sur une pin de votre Arduino, se fait couramment à l&#8217;aide de la méthode digitalWrite(pin, state). RazorConcepts nous présentait il y a quelques semaines une nouvelle méthode pour assigner des états aux pins de votre Arduino. Jugeant cette méthode très intéressante, j&#8217;ai décider d&#8217;aller aujourd&#8217;hui un peu plus loin dans l&#8217;explication [...]]]></description>
			<content:encoded><![CDATA[<h2>Hardcoding</h2>
<p>L&#8217;assignation d&#8217;un état <tt>LOW/HIGH</tt> sur une pin de votre Arduino, se fait couramment à l&#8217;aide de la méthode <a href="http://arduino.cc/en/Reference/DigitalWrite">digitalWrite(pin, state)</a>. RazorConcepts nous présentait <a href="http://www.instructables.com/id/Arduino-is-Slow-and-how-to-fix-it/">il y a quelques semaines</a> une nouvelle méthode pour assigner des états aux pins de votre Arduino. Jugeant cette méthode très intéressante, j&#8217;ai décider d&#8217;aller aujourd&#8217;hui un peu plus loin dans l&#8217;explication de cette technique.</p>
<p>La méthode consiste en effet à assigner directement des valeurs (binaires ou hexadécimal) aux variables PORTB PORTC et PORTD, correspondant au trois encarts ci-dessous.</p>
<p><img class="align:none" title="Arduino mapping" src="http://www.playarduino.fr/wordpress/wp-content/uploads/2009/10/arduino_mapping.png" alt="" width="545" height="313" /></p>
<p>Chacun de ces ports du micro-contrôleur utilisé par l&#8217;Arduino possède de 6 à 8 entrées/sorties. Ainsi, à chaque pins de la platine correspond un couple PORT / numéro d&#8217;entrée/sortie.</p>
<pre><span style="color: #777755;">// sortie 543210</span>
<span style="color: #777755;">//        ↓↓↓↓↓↓</span>
PORTC = 0b110110;</pre>
<ul>
<li><a href="http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#p1">Notation explicite</a></li>
<li><a href="http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#p2">Passer une sortie spécifique à l&#8217;état <tt>HIGH</tt></a></li>
<li><a href="http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#p3">Passer une sortie à l&#8217;état <tt>LOW</tt></a></li>
<li><a href="http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#p4">Notation groupée, basculement simultané</a></li>
<li><a href="http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#p5">Inverser l&#8217;état d&#8217;une sortie</a></li>
<li><a href="http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#p6">Gain de poids, gain de perfs</a></li>
<li><a href="http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html#p7">Conclusion</a></li>
</ul>
<h2><a name="p1" href="#"></a>Notation explicite</h2>
<p>Si vous souhaitez modifier l&#8217;ensemble des états de plusieurs sorties d&#8217;un même <tt>PORT</tt>, il est possible d&#8217;écrire explicitement la valeur (complète) de ce dernier. On souhaite par exemple définir les états des pins digitales 7, 5 et 2 de l&#8217;Arduino à HIGH, et les pins 6, 4, 3, 1 et 0 à <tt>LOW</tt>. Les pins digitales 0 à 7 de l&#8217;Arduino correspondent aux sorties 0 à 7 du <tt>PORTD</tt>.</p>
<pre><span style="color: #777755;">// sortie 76543210</span>
<span style="color: #777755;">//        ↓↓↓↓↓↓↓↓</span>
PORTD = 0b10100100;
PORTD = 0xA4; <span style="color: #777755;">// notation hexadécimale</span></pre>
<p>L&#8217;état 1, symbolise l&#8217;état <tt>HIGH</tt>, l&#8217;état 0, l&#8217;état <tt>LOW</tt>. Le numéro de sortie commence à zéro et part de la droite vers la gauche (du <abbr title="Least Significant Bit"><tt>LSB</tt></abbr> au <abbr title="Most Significant Bit"><tt>MSB</tt></abbr>). Pour la conversion binaire, hexadécimale, rien de plus simple qu&#8217;une <a href="http://www.google.com/search?q=0b10100100+to+hex">requête Google</a></p>
<p>Les assignations explicites peuvent s&#8217;avérer utile dans la méthode setup() visant à initialiser l&#8217;état de votre circuit. Il permet également de rendre votre code source plus pro, et plus légé <img src='http://www.playarduino.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2><a name="p2" href="#"></a>Passer une sortie spécifique à l&#8217;état <tt>HIGH</tt></h2>
<p>Prenons comme exemple le passage de la pin digitale 3 à <tt>HIGH</tt>. Le schéma nous montre que la pin digital 3 se trouve sur le <tt>PORT D3</tt>.</p>
<pre><span style="color: #777755;">//  sortie 76543210</span>
<span style="color: #777755;">//         ↓↓↓↓↓↓↓↓</span>
PORTD |= 0b00001000 (PORT PD3)</pre>
<p>ou encore avec l&#8217;une des notations suivantes</p>
<pre>PORTD |= 0b1000
PORTD |= 1 &lt;&lt; 3;
PORTD |= _BV(3);</pre>
<p>Le shortcut <tt>_<abbr title="Byte Value">BV</abbr></tt> est définit dans <tt>./hardware/tools/avr/avr/include/avr/sfr_defs.h</tt> de l&#8217;IDE Arduino. Contrairement à l&#8217;assignation explicite, ces opérations, utilisant la porte logique <tt>OR</tt>, <strong>ne modifie que l&#8217;état de la ou des sorties souhaitées</strong>.</p>
<h2><a name="p3" href="#"></a>Passer une sortie à l&#8217;état <tt>LOW</tt></h2>
<p>Nous souhaitons, définir l&#8217;état de la pin digitale 11 à <tt>LOW</tt>, soit le <tt>PORT B, sortie 3</tt>. C&#8217;est à l&#8217;aide des portes logiques <tt>AND</tt> et <tt>NOT</tt> que nous pouvons écrire :</p>
<pre>PORTB &amp;= ~0b0000<strong>1</strong>000</pre>
<p>Ou l&#8217;une de ces notations équivalentes :</p>
<pre>PORTB &amp;=  0b11110111
PORTB &amp;=  <span style="color: #CC0000;">B11110111</span> <span style="color: #777755;">// constante</span>
PORTB &amp;= ~(1&lt;&lt;3)
PORTB &amp;= ~_BV(PB3);
PORTB &amp;= ~_BV(3);
<span style="color: #777755;">// Ou enfin, en hexadécimal</span>
PORTB &amp;= ~0x8;
PORTB &amp;= 0xF7;</pre>
<p>Les constantes B* sont définies de B0 à B11111111</p>
<h2><a name="p4" href="#"></a>Notation groupée</h2>
<p>Si les sorties, dont on souhaite modifier l&#8217;état, se trouvent sur le même port, il est possible de grouper l&#8217;ensemble des instructions en une seule. Nous souhaitons dans notre exemple passer les pins 6, 2 et 1 à <tt>LOW</tt>. Commençons par écrire chacune des trois instructions nécessaires à cet exemple.</p>
<pre>PORTD &amp;= ~B01000000  <span style="color: #777755;">// sortie 6, port D</span>
PORTD &amp;= ~B00000100  <span style="color: #777755;">// sortie 2, port D</span>
PORTD &amp;= ~B00000010  <span style="color: #777755;">// sortie 1, port D</span></pre>
<p>L&#8217;opération étant la même (passage à <tt>LOW</tt>) et concernant les sorties d&#8217;un même port (le D), il est donc possible les additionner</p>
<pre>pin D6 =&gt; PD6  0b01000000
pin D2 =&gt; PD2  0b00000100
pin D1 =&gt; PD1  0b00000010
               __________
on additionne  0b01000110</pre>
<p>L&#8217;opération &#8220;groupée&#8221; à effectuer est donc</p>
<pre>PORTD &amp;= ~0b01000110
<span style="color: #777755;">//           ↑   ↑↑</span>
<span style="color: #777755;">//           6   21  fixe les sorties 6,2 et 1 du PORT D à LOW</span>
<span style="color: #777755;">//                   sans modifier l'état des autres sorties</span></pre>
<p>Ce type de programmation permet donc <strong>un basculement simultané (en un cycle processeur) de plusieurs sorties</strong>. Dans le meilleur des cas, 9 cycles processeurs sont nécessaires avec la méthode classique <tt>digitalWrite</tt>.</p>
<h2>Explication sur l&#8217;opération <tt>AND NOT &amp;=~..</tt></h2>
<p>gardons notre exemple du triple passage à <tt>LOW</tt> (sorties 6, 2 et 1).</p>
<p>~ est l&#8217;opérateur NOT qui permet &#8220;d&#8217;inverser&#8221; la valeur des bits<br />
<tt>~..000001000110  =  ..111110111001</tt></p>
<p>le nombre de 1 devant la notation binaire dépends de l&#8217;architecture du microprocesseur (ici 8 bits)</p>
<p>On peut donc écrire,</p>
<pre>  <span style="color: #777755;">//       7 543  0</span>
  <span style="color: #777755;">//       ↓ ↓↓↓  ↓    keep on if on</span>
PORTD &amp;= 0b10111001
  <span style="color: #777755;">//        ↑   ↑↑</span>
  <span style="color: #777755;">//        6   21     switch off if on</span></pre>
<p><strong>On renseigne enfaite ici les bits à maintenir allumé</strong>, si ils le sont déjà.</p>
<p>Ainsi, dans ce même exemple (mettre pin 6,2, et 1 à LOW) supposons, au hasard, un état du port D initial à <tt>0b01011101</tt></p>
<p>Nous appliquons l&#8217;opération <tt>PORTD &amp;= ~B01000110</tt> vu précédemment, qui peut également s&#8217;écrire :</p>
<pre>PORTD &amp;= 0b10111001
PORTD = PORTD &amp; 0b10111001
PORTD = 0b01011101 &amp; 0b10111001 

<span style="color: #777755;">//      0b01011101
//  &amp;   0b1<strong>0</strong>111<strong>00</strong>1
//      ----------
//      0b0<strong>0</strong>011<strong>00</strong>1
//        ↑↑↑↑↑↑↑↑
// sortie 7<strong>6</strong>543<strong>21</strong>0</span></pre>
<p>On applique l&#8217;opération AND sur chaque bit, (rappel : <tt>0b1 &amp; 0b1 = 0b1</tt>)</p>
<p>l&#8217;état final, <tt>0b0<strong>0</strong>011<strong>00</strong>1</tt>, montre donc bien une modification de l&#8217;état des sorties 6 et 2 à <tt>LOW</tt> (la pin 1 étant déjà à LOW).<strong> Cette opération n&#8217;a eu aucune incidence sur l&#8217;état des autres pins</strong>, comme souhaité ; <strong>le tout en un seul cycle</strong>.</p>
<h2><a name="p5" href="#"></a>Inverser l&#8217;état d&#8217;une sortie</h2>
<p><em>Exemple :</em> nous souhaitons inverser l&#8217;état de la sortie 5 et 7 du PORTD. Dans un cas concret, deux LED clignotant en alternance l&#8217;une de l&#8217;autre sur les pins digitales 5 et 7.</p>
<pre><span style="color: #996600;">int</span> state = 1;

<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>setup</strong></span>() {}
<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>loop</strong></span>() {
  <span style="color: #CC6600;">if</span>(state==1) { <span style="color: #777755;">// on réalise l'alternance à l'aide d'une variable</span>
    state = 0;
    <span style="color: #996600;">digitalWrite</span>(5, <span style="color: #CC0000;">LOW</span>);
    <span style="color: #996600;">digitalWrite</span>(7, <span style="color: #CC0000;">HIGH</span>);
  }
  <span style="color: #CC6600;">else</span> {
    state = 1;
    <span style="color: #996600;">digitalWrite</span>(5, <span style="color: #CC0000;">HIGH</span>);
    <span style="color: #996600;">digitalWrite</span>(7, <span style="color: #CC0000;">LOW</span>);
  }
  <span style="color: #996600;">delay</span>(1000); <span style="color: #777755;">// on attend 1 seconde</span>
}</pre>
<p>Avec les opérations binaires, la fonction <abbr title="eXclusive OR">XOR</abbr> nous permet d&#8217;écrire</p>
<pre><span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>setup</strong></span>() {
  PORTD = <span style="color: #CC0000;">B10000000</span>; <span style="color: #777755;">// on définit l'état initial</span>
}
<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>loop</strong></span>() {
  <span style="color: #777755;">//sorties 7 5</span>
  <span style="color: #777755;">//        ↓ ↓</span>
  PORTD ^= <span style="color: #CC0000;">B10100000</span>; <span style="color: #777755;">// ou PORTD ^= 0xA0;</span>
  <span style="color: #996600;">delay</span>(1000);
}</pre>
<p>Une fois compilée, on obtient une ROM de 550 bytes en opération binaire contre 846 bytes en écriture standard.</p>
<p>Autre avantage, si l&#8217;on souhaite modifier l&#8217;état initial (pour par exemple faire clignoter les LEDs ensembles), une seule modification suffit, l&#8217;état initial de <tt>PORTD</tt>.</p>
<h2><a name="p6" href="#"></a>Gain de poids, gain de performances</h2>
<p>Voici un exemple simple mettant en œuvre un chenillard à 8 LEDs. En écriture &#8220;binaire&#8221;</p>
<pre><span style="color: #996600;">int</span> lednum = 0;

<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>setup</strong></span>(){}
<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>loop</strong></span>() {
  PORTD = 1 &lt;&lt; lednum; <span style="color: #777755;">// un seul cycle processeur</span>
  <span style="color: #996600;">delay</span>(1000);
  lednum++;
  <span style="color: #CC6600;">if</span>(lednum==8) lednum = 0;
}</pre>
<p>Le même algorithme en écriture standard</p>
<pre><span style="color: #996600;">int</span> lednum = 0;

<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>setup</strong></span>(){}
<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>loop</strong></span>() {
  <span style="color: #996600;">digitalWrite</span>(0, <span style="color: #CC0000;">LOW</span>); <span style="color: #777755;">// on éteint l'ensemble des LED</span>
  <span style="color: #996600;">digitalWrite</span>(1, <span style="color: #CC0000;">LOW</span>);
  <span style="color: #996600;">digitalWrite</span>(2, <span style="color: #CC0000;">LOW</span>);
  <span style="color: #996600;">digitalWrite</span>(3, <span style="color: #CC0000;">LOW</span>);
  <span style="color: #996600;">digitalWrite</span>(4, <span style="color: #CC0000;">LOW</span>);
  <span style="color: #996600;">digitalWrite</span>(5, <span style="color: #CC0000;">LOW</span>);
  <span style="color: #996600;">digitalWrite</span>(6, <span style="color: #CC0000;">LOW</span>);
  <span style="color: #996600;">digitalWrite</span>(7, <span style="color: #CC0000;">LOW</span>);
  <span style="color: #996600;">digitalWrite</span>(lednum, <span style="color: #CC0000;">HIGH</span>);
  <span style="color: #996600;">delay</span>(1000);
  lednum++;
  <span style="color: #CC6600;">if</span>(lednum==8) lednum = 0;
}</pre>
<p>Une fois compilé on obtient ici un programme 588 bytes contre 886 bytes avec le premier code source.</p>
<p>Sur ces quelques exemples concrets, le gain en poids est de l&#8217;ordre de 35 %. Toutefois, si l&#8217;on soustrait à ces tailles de programme les 436 bytes occupés par un programme vide (afin de ne retenir uniquement la taille de l&#8217;espace occupé par les instructions propres au programme). On obtient une taille de 152 bytes contre 450 bytes, soit <strong>une réduction de 66% du code</strong>.</p>
<h2><a name="p7" href="#"></a>Conclusion</h2>
<p>Outre <strong>le gain de taille, crucial sur un microprocesseur de ce type</strong>, le gain en performances. <a href="http://www.instructables.com/id/S79LPX4G145RVFC">Un benchmark réalisé par RazorConcepts</a> montre <strong>des temps de réponse 10 fois supérieurs à la fonction standard digitalWrite()</strong> proposée par l&#8217;IDE Arduino.</p>
<p>Bien entendu, je vous ai présenté ici les exemples &#8220;qui vont bien&#8221; (même PORT, opérations simples,.. ). Il y a fort à parier que dans d&#8217;autre cas, plus spécifiques, les instructions binaires ne soit pas nécessairement un choix très judicieux.</p>
<p>Ainsi, à moins de frôler dangereusement la limite imposée par votre micro-contrôleur (16 ou 32K), <strong>l&#8217;utilisation de cette technique reste dédiée aux librairies, aux montages nécessitant une réactivité accrue, ou ceux nécessitant des changements d&#8217;état simultanés</strong>.</p>
<p><strong>Trois opérations à retenir :</strong></p>
<ul>
<li>le <tt>OR</tt> (<tt>|=</tt>) qui permet de modifier la valeur des bits choisi à 1, et donc de passer les sorties à l&#8217;état <tt>HIGH</tt>.</li>
<li>le <tt>AND NOT</tt> (différent de <tt>NAND</tt> !) (<tt>&amp;=~</tt>) qui permettra de &#8220;soustraire 1&#8243; aux bits choisis, et permet donc de mettre des sorties à l&#8217;état <tt>LOW</tt></li>
<li>le <tt>XOR</tt> (<tt>^=</tt>) qui permettra d&#8217;inverser l&#8217;état des sorties renseignées pas un bit positif</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/11/booster-le-temps-de-reponse-de-votre-arduino.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trouvez le mot de passe, ouvrez la porte</title>
		<link>http://www.playarduino.fr/2009/11/detecter-quelqu-un-qui-frappe-a-la-porte.html</link>
		<comments>http://www.playarduino.fr/2009/11/detecter-quelqu-un-qui-frappe-a-la-porte.html#comments</comments>
		<pubDate>Thu, 05 Nov 2009 09:09:40 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[buzzer]]></category>
		<category><![CDATA[DIY]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=160</guid>
		<description><![CDATA[


L&#8217;Arduino n&#8217;est jamais en reste lorsqu&#8217;il s&#8217;agit d&#8217;épater son public à coup d&#8217;inventions délurées. Aujourd&#8217;hui c&#8217;est Steve Hoefer qui nous propose d&#8217;entrer chez lui, sans clé. Bien loin de la reconnaissance vocale sésame ouvre toi, l&#8217;Arduino est ici mise en œuvre pour &#8220;écouter&#8221; la façon dont vous frappez la porte, décidant ensuite ou non d&#8217;actionner [...]]]></description>
			<content:encoded><![CDATA[<div class="col-left">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" 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/zE5PGeh2K9k&amp;hl=fr&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/zE5PGeh2K9k&amp;hl=fr&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div  class="col-right">
<p>L&#8217;Arduino n&#8217;est jamais en reste lorsqu&#8217;il s&#8217;agit d&#8217;épater son public à coup d&#8217;inventions délurées. Aujourd&#8217;hui c&#8217;est Steve Hoefer qui <a href="http://grathio.com/2009/11/secret-knock-detecting-door-lock.html">nous propose d&#8217;entrer chez lui</a>, sans clé. Bien loin de la reconnaissance vocale <em>sésame ouvre toi</em>, l&#8217;Arduino est ici mise en œuvre pour <strong>&#8220;écouter&#8221; la façon dont vous frappez la porte</strong>, décidant ensuite ou non d&#8217;actionner la serrure à l&#8217;aide d&#8217;un moteur.</p>
<p>Le buzzeur détecte donc le &#8220;toquage&#8221; de porte ? C&#8217;est exactement cela, un buzzeur contient une surface piezo-électrique, qui vibre lorsqu&#8217;on l&#8217;alimente en courant, et à l&#8217;inverse <strong>produit un (faible) courant lorsqu&#8217;on la fait vibrer</strong>. Très astucieux pour détecter les vibrations d&#8217;une porte.</p>
<p>La liste des courses : 2 couples résistance/LED pour informer du statut du détecteur, le trio classique pour le moteur : transistor, diode (pour l&#8217;anti-retour), résistance.</p>
</div>
<p>D&#8217;un point de vue software, le <a href="http://grathio.com/assets/secret_knock_detector.pde">code utilisé pour le projet</a> (open source, PDE) est réellement intéressant dans la mesure où<strong> la détection ne tient pas compte de la vitesse à laquelle le &#8220;motif&#8221; secret est réalisé</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/11/detecter-quelqu-un-qui-frappe-a-la-porte.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Contrôler sans fil votre Mac avec une Arduino</title>
		<link>http://www.playarduino.fr/2009/11/controler-sans-fil-votre-mac-avec-une-arduino.html</link>
		<comments>http://www.playarduino.fr/2009/11/controler-sans-fil-votre-mac-avec-une-arduino.html#comments</comments>
		<pubDate>Wed, 04 Nov 2009 10:30:26 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[IR]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=149</guid>
		<description><![CDATA[

La folie du sans fil semble s&#8217;emparer de l&#8217;Arduino ces derniers temps. Chez Instructables.com aujourd&#8217;hui, DIY Apple Remote Shield for the Arduino, un projet très intéressant pour tous les bricoleurs Mac Addict. Il s&#8217;agit en effet de reproduire les signaux infra-rouges envoyés par l&#8217;Apple Remote.
Le projet se présente sous forme d&#8217;un shield maison, 5 boutons, [...]]]></description>
			<content:encoded><![CDATA[<div class="col-left"><img class="aligncenter" title="arduino-apple-remote-shield" src="http://hackadaycom.files.wordpress.com/2009/11/arduino-apple-remote-shield.jpg?w=470&amp;h=353" alt="" width="448" height="348" /></div>
<div class="col-right">
<p>La folie du sans fil semble s&#8217;emparer de l&#8217;Arduino ces derniers temps. Chez Instructables.com aujourd&#8217;hui, <a href="http://www.instructables.com/id/DIY-Apple-Remote-Shield-for-the-Arduino/">DIY Apple Remote Shield for the Arduino</a>, un projet très intéressant pour tous les bricoleurs Mac Addict. Il s&#8217;agit en effet de <strong>reproduire les signaux infra-rouges envoyés par l&#8217;Apple Remote</strong>.</p>
<p>Le projet se présente sous forme d&#8217;un shield maison, 5 boutons, 2 LEDs infra-rouges. <strong>L&#8217;ensemble doit coûter peut-être 1 euro</strong> (en dehors de l&#8217;Arduino), le tout pourrait même simplement se récupérer d&#8217;une vielle télécommande qui traîne dans un carton au grenier.</p>
</div>
<p>La <a href="http://www.instructables.com/files/orig/FF4/1SA7/G0SD7A1L/FF41SA7G0SD7A1L.zip">librairie utilisée</a> (ZIP) (<a href="http://www.playarduino.fr/wp-content/uploads/2009/11/AppleRemoteLib.zip">mirroir</a>) est assez bien conçue. Orientée objet, <strong>elle est capable de gérer plusieurs télécommandes</strong>. Voici un exemple d&#8217;utilisation en mode single-remote :</p>
<pre>#include  <span style="color: #777755;">// lib Apple Remote</span>

AppleRemoteSender rmt = AppleRemoteSender(13); <span style="color: #777755;">// LED-IR pin 13</span>

<span style="color: #CC6600;">void</span> <span style="color: #993300;"><strong>setup</strong></span>()
{
    <span style="color: #996600;">attachInterrupt</span>(0, rmt.play, <span style="color: #CC0000;">RISING</span>); <span style="color: #777755;">// boutton sur pin 0</span>
}</pre>
<p>Avec ce code, relativement simple, à chaque impulsion sur la pin 0 de la platine Arduino, le signal play/pause est envoyé au mac, et iTunes par exemple joue / s&#8217;arrête de jouer (<a href="http://arduino.cc/en/Reference/AttachInterrupt">Documentation sur la fonction attachInterrupt</a>).</p>
<p>Avec des logiciels freeware comme <a href="http://www.iospirit.com/products/remotebuddy/">Remote Buddy</a> il vous devient <strong>possible de faire faire quasiment n&#8217;importe quoi à votre Mac</strong> avec la complicité de votre Arduino. Tâchez de vous en inspirer pour <a href="http://www.playarduino.fr/tag/concours">les concours du moment</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/11/controler-sans-fil-votre-mac-avec-une-arduino.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Communication entre deux Arduino à moins de $10</title>
		<link>http://www.playarduino.fr/2009/11/communication-entre-deux-arduino-moins-de-10-dollars.html</link>
		<comments>http://www.playarduino.fr/2009/11/communication-entre-deux-arduino-moins-de-10-dollars.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 10:57:07 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[PlayArduino.fr]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[BlueTooth]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[RF]]></category>
		<category><![CDATA[VirtualWire]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[Xbee]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=141</guid>
		<description><![CDATA[Faire communiquer 2 platines Arduino sans fil n&#8217;est pas sans frais. Plusieurs solutions existent aujourd&#8217;hui. Du module Xbee, au module Bluetooth, en passant pourquoi pas par un module Wifi ; l&#8217;ensemble de ces solutions restent très onéreuses. Un module BT par exemple coûte presque une centaine d&#8217;euro, une Arduino BT (Arduino avec BlueTooth onboard) revient [...]]]></description>
			<content:encoded><![CDATA[<p>Faire communiquer 2 platines Arduino sans fil n&#8217;est pas sans frais. Plusieurs solutions existent aujourd&#8217;hui. Du module Xbee, au module Bluetooth, en passant pourquoi pas par un module Wifi ; <strong>l&#8217;ensemble de ces solutions restent très onéreuses</strong>. Un module BT par exemple coûte presque une centaine d&#8217;euro, une Arduino BT (Arduino avec BlueTooth onboard) revient quant à elle à <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8255">150$ chez SparkFun</a>. Sans oublier qu&#8217;il vous faudra en acquérir généralement une paire.</p>
<p>Pour palier à ce problème &#8220;financier&#8221;, Hobby Robotics, nous présentait il y a environ 2 mois <a href="http://www.glacialwanderer.com/hobbyrobotics/?p=291">une solution alternative</a>, bien plus accessible, nous permettant de faire communiquer deux platines Arduino. Vendu chez SparkFun <small>[1]</small>, le module RF (<a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8945">TX</a> et <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8947">RX</a>), vous offre <strong>une connectivité unidirectionnelle à moins de $10.</strong></p>
<p>Let&#8217;s make robots nous publie aujourd&#8217;hui <a href="http://letsmakerobots.com/node/12336">un test de cette solution</a>. <strong>Les résultats semblent concluants et conformes aux promesses du fabricant</strong>. Le lien s&#8217;établit encore à <strong>150 mètres</strong> avec un débit de <strong>2400 bauds</strong> (largement suffisant selon l&#8217;application).</p>
<p><img class="aligncenter" title="RX TX arduino" src="http://letsmakerobots.com/files/imagecache/robot_fullpage_header/field_primary_image/RXTXprim1000.jpg" alt="" width="500" height="375" /></p>
<p>La librairie utilisée quant à elle, <a href="http://www.open.com.au/mikem/arduino/VirtualWire-1.4.zip">VirtualWire</a> (ZIP), développée par Mike McCauley, permet la <strong>transmission de messages avec checksum</strong> entre les deux Arduino dûment équipées. Concrètement, le checksum (somme de contrôle) <strong>permet de vérifier l&#8217;intégrité des données reçues</strong>, pour en demander une nouvelle copie en cas de transmission défaillante par exemple. En attendant livraison de votre commande, je vous conseille la documentation très détaillée sur l&#8217;<a href="http://www.open.com.au/mikem/arduino/VirtualWire.pdf">utilisation de la libraire VirtualWire</a> (PDF).</p>
<p><small>[1] ceci n&#8217;est pas un billet sponsorisé <img src='http://www.playarduino.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/11/communication-entre-deux-arduino-moins-de-10-dollars.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une pluie de cadeaux pour les créatifs Arduino</title>
		<link>http://www.playarduino.fr/2009/11/contest-arduino-concours-arduino-fun.html</link>
		<comments>http://www.playarduino.fr/2009/11/contest-arduino-concours-arduino-fun.html#comments</comments>
		<pubDate>Mon, 02 Nov 2009 09:50:38 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[concours]]></category>
		<category><![CDATA[contest]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=138</guid>
		<description><![CDATA[Je vous parlais il y a quelques temps d&#8217;un contest Arduino organisé par Instructables.com, dont la date de soumission prendra fin dans tout juste 2 semaines. C&#8217;est aujourd&#8217;hui au tour d&#8217;arduinofun.com de proposer des lots pour son propre concours. La date de soumission est fixée au 31 décembre 2009. Les résultats seront annoncés le 8 [...]]]></description>
			<content:encoded><![CDATA[<p>Je vous parlais il y a quelques temps d&#8217;un <a href="http://www.playarduino.fr/2009/10/concours-arduino-organise-par-instructables.html">contest Arduino organisé par Instructables.com</a>, dont la date de soumission prendra fin dans tout juste 2 semaines. C&#8217;est aujourd&#8217;hui au tour d&#8217;arduinofun.com de proposer des lots pour <a href="http://arduinofun.com/blog/2009/11/01/fun-with-arduino-contest/">son propre concours</a>. La date de soumission est fixée au <strong>31 décembre 2009</strong>. Les résultats seront annoncés le 8 janvier 2010. En jeu :</p>
<ul>
<li>un Arduino Mega,</li>
<li>un Arduino PRO,</li>
<li>un <a href="http://wingshieldindustries.com/products/screwshield/">screw shield</a> (pour visser votre câblage, à votre Arduino).</li>
</ul>
<p><img class="aligncenter" title="Screw shield" src="http://farm3.static.flickr.com/2453/3556248012_f7fef8e551.jpg" alt="" width="500" height="333" /></p>
<p>Cadeau de la maison, arduinofun nous indique explicitement qu&#8217;<strong>il est possible de concourir avec le même projet chez leur confrère Instructables</strong>.<br />
Objectif de ce concours :<strong> montrer les possibilités de la platine aux autres utilisateurs</strong>, la condition essentielle pour participer au concours étant d&#8217;y publier le code source utilisé. C&#8217;est ici une excellente initiative.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/11/contest-arduino-concours-arduino-fun.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser un buzzeur avec l&#8217;Arduino</title>
		<link>http://www.playarduino.fr/2009/10/utilisation-buzzer-arduino-son-syntetiser.html</link>
		<comments>http://www.playarduino.fr/2009/10/utilisation-buzzer-arduino-son-syntetiser.html#comments</comments>
		<pubDate>Mon, 26 Oct 2009 20:04:28 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[buzzer]]></category>
		<category><![CDATA[musique]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=133</guid>
		<description><![CDATA[




Un tutoriel fort intéressant chez Instructables.com, qui nous explique comment buzzer. Ce tutoriel est d&#8217;autant plus intéressant, dans la mesure où il ne se borne pas à émettre une succession de fréquences sur une durée plus ou moins longue, mais bien de simuler une sorte de vibrato rendant là chose moins &#8220;sonnerie de téléphone monophonique&#8221;, [...]]]></description>
			<content:encoded><![CDATA[<div class="col-left">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="300" 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/t2n0T5jdNA4&amp;hl=fr&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="300" src="http://www.youtube.com/v/t2n0T5jdNA4&amp;hl=fr&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object>
</div>
<div class="col-right">
<p>
Un tutoriel fort intéressant chez <a href="http://www.instructables.com/id/Play-the-French-Can-Can-Using-an-Arduino-and-Buzze/">Instructables.com</a>, qui nous explique comment buzzer. Ce tutoriel est d&#8217;autant plus intéressant, dans la mesure où il ne se borne pas à émettre une succession de fréquences sur une durée plus ou moins longue, mais bien de <strong>simuler une sorte de vibrato</strong> rendant là chose moins &#8220;sonnerie de téléphone monophonique&#8221;, et plus agréable. Enfin, à vous de juger.</p>
<p>On saluera l&#8217;originalité du montage vidéo. <strong>D&#8217;un point de vue technique rien d&#8217;exceptionnel pourtant</strong>, le matériel requis reste simple, l&#8217;Arduino toujours au coeur de l&#8217;exploit, un buzzeur et du code. L&#8217;ensemble des <a href="http://www.instructables.com/id/SU6M34XG0KQFGIG/">libraries utilisées</a> sont open-source</p>
</div>
<pre style="clear:both"><span style="color: #CC6600;">void</span> buzz(<span style="color: #996600;">int</span> targetPin, <span style="color: #996600;">long</span> frequency, <span style="color: #996600;">long</span> length) {
  <span style="color: #996600;">long</span> delayValue = 1000000/frequency/2;
  <span style="color: #996600;">long</span> numCycles = frequency * length/ 1000;
  <span style="color: #CC6600;">for</span> (<span style="color: #996600;">long</span> i=0; i &lt; numCycles; i++)
  {
    <span style="color: #996600;">digitalWrite</span>(targetPin,<span style="color: #CC0000;">HIGH</span>);
    <span style="color: #996600;">delayMicroseconds</span>(delayValue);
    <span style="color: #996600;">digitalWrite</span>(targetPin,<span style="color: #CC0000;">LOW</span>);
    <span style="color: #996600;">delayMicroseconds</span>(delayValue);
  }
}

<span style="color: #777755;">// utilisation</span>
buzz(4, 2500, 1000); <span style="color: #777755;">// buzz sur pin 4 à 2500Hz</span></pre>
<p>Voici l&#8217;une des fonctions les plus intéressantes selon moi, qui a inspiré le projet, (infos détaillées sur le <a href="http://www.faludi.com/2007/04/23/buzzer-arduino-example-code/">blog de Rob Faludi</a>) <strong>à essayer telle quelle</strong> si un buzzeur vous tombait par hasard sous la main.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/10/utilisation-buzzer-arduino-son-syntetiser.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Qui prétendait que l&#8217;iPhone n&#8217;avait pas de (vrai) clavier ?</title>
		<link>http://www.playarduino.fr/2009/10/qui-pretendait-que-liphone-navait-pas-de-vrai-clavier.html</link>
		<comments>http://www.playarduino.fr/2009/10/qui-pretendait-que-liphone-navait-pas-de-vrai-clavier.html#comments</comments>
		<pubDate>Fri, 16 Oct 2009 09:00:25 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[vnc]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=123</guid>
		<description><![CDATA[Encore un exemple aujourd&#8217;hui des innombrables possibilités offertes par l&#8217;Arduino. Ben Kurtz, consultant puis directeur en sécurité informatique (en d&#8217;autres termes, un &#8220;hacker&#8221;) s&#8217;est attaqué à l&#8217;iPhone en y apportant de quoi y connecter un clavier PS/2 (rien que ça). Sa motivation, nous explique-t-il, ses doigts &#8220;ronds&#8221;, trop &#8220;ronds&#8221; pour le téléphone d&#8217;Apple.

L&#8217;ensemble de la [...]]]></description>
			<content:encoded><![CDATA[<p>Encore un exemple aujourd&#8217;hui des innombrables possibilités offertes par l&#8217;Arduino. Ben Kurtz, consultant puis directeur en sécurité informatique (en d&#8217;autres termes, un &#8220;hacker&#8221;) <strong>s&#8217;est attaqué à l&#8217;iPhone en y apportant de quoi y connecter un clavier PS/2</strong> (rien que ça). Sa motivation, nous explique-t-il, ses doigts &#8220;ronds&#8221;, trop &#8220;ronds&#8221; pour le téléphone d&#8217;Apple.</p>
<p><a href="http://www.awgh.org/wp-content/uploads/2009/10/step9-800x600.jpg"><img class="alignnone" title="Arduino iphone ps2" src="http://www.awgh.org/wp-content/uploads/2009/10/step9-800x600.jpg" alt="" width="500" height="375" /></a></p>
<p>L&#8217;ensemble de la démarche est très détaillée, c&#8217;est <strong>un véritable how-to </strong>qu&#8217;on nous offre. Le matériel utilisé :</p>
<ul>
<li>une Arduino, naturellement</li>
<li>un clavier PS2</li>
<li>un iPhone jailbreaké</li>
<li>un serveur VNC sur l&#8217;iPhone, il serait donc possible de simuler des touchers d&#8217;écran (idée à creuser).</li>
<li>un mini client VNC qui écoute le port &#8220;série&#8221; de l&#8217;iPhone.</li>
</ul>
<p><a href="http://www.awgh.org/?p=154">Voir l&#8217;article</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/10/qui-pretendait-que-liphone-navait-pas-de-vrai-clavier.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Arduino bon pour la nature</title>
		<link>http://www.playarduino.fr/2009/10/arduino-bon-pour-la-nature.html</link>
		<comments>http://www.playarduino.fr/2009/10/arduino-bon-pour-la-nature.html#comments</comments>
		<pubDate>Wed, 14 Oct 2009 01:04:06 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[nature]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=118</guid>
		<description><![CDATA[Smart Projects, la société italienne principal fabricant de l&#8217;Arduino Duemilanove, Mega, et Mini, a signé avec le projet ZeroImpact / Lifegat afin de réduire son impact sur l&#8217;environnement et de compenser ses émissions de CO2 issues de la fabrication des boards Arduino. Cet engagement de l&#8217;entreprise vise à restaurer et à protéger 25 000 mètres [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.smartprj.com">Smart Projects</a>, la société italienne principal fabricant de l&#8217;Arduino Duemilanove, Mega, et Mini, a signé avec le projet <a href="http://zeroimpact.com/">ZeroImpact / Lifegat</a> afin de réduire son impact sur l&#8217;environnement et de compenser ses émissions de CO2 issues de la fabrication des boards Arduino. <strong>Cet engagement de l&#8217;entreprise vise à restaurer et à protéger 25 000 mètres carrés de la forêt tropicale du Costa Rica</strong>. En effet, pour chaque board Arduino fabriquée par Smart Projects, un demi mètre carré de forêt tropicale sera restauré ou protégé contre la déforestation. Mesure en vigueur depuis le début de la production de l&#8217;Arduino Mega dans un effort de protection de l&#8217;environnement.<br />
En conclusion : manger de l&#8217;Arduino, c&#8217;est bon pour la planète.</p>
<p>Source : <a href="http://arduino.cc/blog">blog Arduino</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/10/arduino-bon-pour-la-nature.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview de Tom Igoe, Arduino team</title>
		<link>http://www.playarduino.fr/2009/10/interview-de-tom-igoe-arduino-team.html</link>
		<comments>http://www.playarduino.fr/2009/10/interview-de-tom-igoe-arduino-team.html#comments</comments>
		<pubDate>Tue, 13 Oct 2009 09:30:18 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[PlayArduino.fr]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[arduino team]]></category>
		<category><![CDATA[interview]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=85</guid>
		<description><![CDATA[Voici une interview traduite de Tom Igoe, membre de la team Arduino réalisé par computerworld.

ComputerWorld : Qu&#8217;est ce qui a poussé au développement de l&#8217;Arduino ?

Tom Igoe: Il y avait une poignée d&#8217;écoles enseignant les micro-contrôleurs à des non-technologues en utilisant une méthode que nous avons appelé le calcul physique (physical computing). Nous avons tous [...]]]></description>
			<content:encoded><![CDATA[<p>Voici une interview traduite de Tom Igoe, membre de la team Arduino réalisé par computerworld.</p>
<ul>
<li><strong>ComputerWorld : Qu&#8217;est ce qui a poussé au développement de l&#8217;Arduino ?</strong></li>
</ul>
<p><strong><img class="alignleft" style="margin:10px" title="Tom igoe" src="http://cdn.idg.com.au/gim/id/20704/res/2" alt="" width="198" height="198" />Tom Igoe: </strong>Il y avait une poignée d&#8217;écoles enseignant les micro-contrôleurs à des non-technologues en utilisant une méthode que nous avons appelé le calcul physique (physical computing). Nous avons tous besoin d&#8217;outils pour enseigner qui soit plus simple que les outils d&#8217;ingénierie existant sur le marché. Le Basic Stamp, et plus tard le BX-24 de NetMedia, étaient correct mais ne correspond pas réellement non plus aux outils que nous utilisions pour enseigner la programmation (Hypercard, Director, et ensuite <a href="http://processing.org">Processing</a>). Puis, à Ivrea en 2002, ont alors été créés Programa2003, <a href="http://www.wiring.org.co">Wiring</a>, puis enfin Arduino.</p>
<ul>
<li><strong>L&#8217;équipe de développement d&#8217;Arduino était alors composée de Massimo Banzi, David Cuartielles, Gianluca Martino, David Mellis, Nicholas Zambetti &#8211; qui furent les pionniers &#8211; et vous-même. Quel rôle avez vous joué dans ce projet ?</strong></li>
</ul>
<p>Massimo à développé l&#8217;environnement Programa2003 pour micro-contrôleurs PIC, un outils simple de développement sous MacOs (la plupart des étudiants d&#8217;Ivrea étant des Mac users). L&#8217;outil a facilité l&#8217;enseignement de la programmation sur micro-contrôleurs. Cela, combiné avec l&#8217;IDE Processing (open source) a servi d&#8217;exemple à d&#8217;Hernando Barragán pour développer la platine Wiring ainsi que son environnement. Rapidement, Massimo (professeur à Ivrea), David Cuatielles (chercheur à Ivrea), et Gianluca Martino (ingénieur, recruté pour développer du matériel pour les projets des élèves) ont développé une plus petite, et moins coûteux platine, la platine Arduino. C&#8217;est avec Mellis et Zambetti (étudiants à Ivrea à l&#8217;époque), qu&#8217;ils ont amélioré la base du Wiring, et élaboré une platine et son IDE utilisable en dehors de l&#8217;université.</p>
<p>Je les ai rejoint en 2005, contribuant aux bêta tests avec une autre école, ITP (ayant une population étudiante plus importante qu&#8217;Ivrea), et plus tard, en aidant à la rédaction de la documentation. J&#8217;ai également présenté l&#8217;équipe à certains distributeurs aux États-Unis afin que nous puissions créer un marché ici, ainsi qu&#8217;en Europe. Aujourd&#8217;hui, Gianluca et Massimo s&#8217;occupent de l&#8217;essentiel de la conception matériel, Mellis Dave coordonne ou écrit la plupart des logiciels, David Cuartielles travaille sur des logiciels ainsi que des tests sur Linux et gère <a href="http://arduino.cc">le site Internet</a>, et je travaille sur la documentation ainsi que des tests, à un degré moindre.</p>
<p>Nous travaillons tous ensemble sur la direction du projet, les relations avec les fabricants et les nouveaux développements. Gianluca gère l&#8217;ensemble des distributeurs ainsi que son entreprise, Smart Projects, fabricant principal de la board. Zambetti a quitté l&#8217;équipe , mais reste un collaborateur occasionnel lorsque sa vie professionnelle le permet.</p>
<p><img class="aligncenter" title="arduino team" src="http://farm3.static.flickr.com/2106/2363657276_2f14062866.jpg" alt="" width="500" height="333" /></p>
<ul>
<li><strong>En étiez-vous à essayer de résoudre un problème en particulier ?</strong></li>
</ul>
<p>Nous voulions un outil pour enseigner l&#8217;informatique physique, particulièrement la programmation de micro-contrôleurs, aux artistes et designers, ceux à qui nous enseignons. Les aprioris de ceux qui viennent d&#8217;un milieu autre que les sciences informatiques ou en génie électrique sont très différentes, et nous voulions des outils qui correspondent à cette diversité.</p>
<ul>
<li><strong>D&#8217;où vient le nom Arduino?</strong></li>
</ul>
<p><span id="more-85"></span>Arduino a été le premier roi de la région dans laquelle est situé Ivrea, nom également employé par un bar local où les étudiants et les professeurs d&#8217;Ivrea se rassemblaient.</p>
<ul>
<li><strong>Y at-il eu des difficultés particulières, voire frustrantes à surmonter dans le développement de l&#8217;Arduino?</strong></li>
</ul>
<p>Le plus grand défi n&#8217;a pas réellement été un choix technique, mais plutôt un choix culturel. <strong>La plupart des gens</strong> en informatique ou en génie électriques que j&#8217;ai rencontrés <strong>ont une image bien forgée</strong> sur la façon d&#8217;apprendre le développement autour d&#8217;un micro-contrôleurs : apprendre en un premier temps la loi d&#8217;Ohm et la loi de Thévenin, etc. Viennent alors les circuits à transistors et des amplificateurs opérationnels, enfin les circuits intégrés les plus simples (IC). Parfois vous apprendrez à utiliser un oscilloscope ou un multimètre, si cela est nécessaire.</p>
<p>Ont vous présente alors enfin les micro-contrôleurs, à commencer par la structure interne et les registres de mémoire. Ensuite, vous découvrez le langage assembleur, et d&#8217;ici là, «bien sûr», vous connaissez le C et l&#8217;environnement en ligne de commande, si vous êtes prêt pour, disons, CCS C (sur PIC) ou AVR Studio. Et 90% de cela est fait sous Windows, parce que 90% du monde fonctionne sous Windows, il est donc logique d&#8217;y développer dessus.</p>
<p>De nos jours, <strong>un grand nombre de personnes amené à coder sur des micro-contrôleurs </strong><strong>ne viennent pas de ce contexte</strong>. Ils ont grandi en considérant que l&#8217;interface graphique de l&#8217;ordinateur était son interface principale. Ils supposent aussi que vous pouvez apprendre en copiant et modifiant le code, un peu comme ce qu&#8217;offre le navigateur internet avec le &#8216;view source&#8217;. La plupart d&#8217;entre eux <strong>ne veulent pas réellement être des programmeurs, ils veulent juste &#8220;utiliser&#8221; la programmation et les circuits pour arriver à leur fins</strong>. J&#8217;entends par là créer une œuvre d&#8217;art, alimenter automatiquement la gamelle son chat, ou concevoir un nouveau dispositif d&#8217;ergothérapie.</p>
<p>Ces gens ne sont pas officiellement formé comme des ingénieurs, mais veulent construire des choses. Nous enseignons à des étudiants. C&#8217;est en accord avec leur façon de penser que nous avons conçu l&#8217;Arduino.</p>
<ul>
<li><strong>Qu&#8217;auriez vous fait différemment dans le développement de l&#8217;Arduino, si vous aviez eu la possibilité?</strong></li>
</ul>
<p>Je pense que le principal changement que nous aurions pu faire aurait été d&#8217;uniformiser l&#8217;espace entre les pins 7 et 8! Nous avons pas mal d&#8217;ennuis à cause de cette erreur, mais nous avons maintenu le non-espacement standard pour maintenir la compatibilité ascendante des boards (<em>NDLR : et leur shield</em>).</p>
<p>Cependant, d&#8217;une manière générale, je ne pense pas qu&#8217;il y ait une réponse à &#8220;Que feriez-vous différemment&#8221;, car <strong>lorsque nous rencontrons quelque chose que nous aurions du faire différemment, nous le faisons différemment</strong>.</p>
<p>Les changements sont plus délicat, maintenant que nous avons beaucoup d&#8217;utilisateurs, mais restent encore possibles.</p>
<ul>
<li><strong>Pourquoi avoir choisi respectivement &#8216;Wiring&#8217; et &#8216;Processing&#8217; comme bases pour le langage Arduino et son environnement ?</strong></li>
</ul>
<p>Car ils avaient déjà leur place à Ivrea (et ITP) à l&#8217;époque, et parce qu&#8217;ils étaient de meilleurs dispositifs d&#8217;enseignement pour nos étudiants comparés aux autres disponibles à l&#8217;époque.</p>
<p>Processing en particulier apportait de gros changement au sein des écoles d&#8217;art et de design enseignant la programmation, car les étudiants &#8220;y arrivaient&#8221;. Il était donc logique d&#8217;offrir un environnement de développement (IDE) basé sur celui-ci. Programa2003, Wiring, et Arduino ont tous grandi à partir de Processing en succession rapide.</p>
<ul>
<li><strong>Comment comparer l&#8217;Arduino aux BASIC Stamp, PICS, etc. ? Qu&#8217;est-ce qui en fait un meilleur choix ?</strong></li>
</ul>
<p>Il existe un certain nombre de choses que nous avons essayé d&#8217;améliorer.</p>
<p><strong>Le langage Arduino est un ensemble de méthodes en C / C + + qui le rend plus facile à comprendre pour les débutants. </strong><br />
Contrairement au Stamp PBASIC, l&#8217;Arduino possède toutes les fonctions puissantes de C (passage de paramètres, variables locales, et ainsi de suite) conscrites dans une syntaxe lisible. PBASIC était lisible et facile pour les débutants, mais il était si limitée que même les débutants atteignaient rapidement ses limites</p>
<p><strong>L&#8217;expérience utilisateur de l&#8217;Arduino est plus proche de l&#8217;utilisateur &#8220;consommateur&#8221;. </strong><br />
Il n&#8217;est pas nécessaire de s&#8217;attarder sur un programmeur hardware (contrairement aux environnements PIC), il se branche directement au port USB (contrairement au STAMP). La compilation et l&#8217;upload du nouveau code à votre contrôleur est réalisé en un seul clic. Les noms de méthodes sont &#8220;verbeux&#8221;, et plus proche dans l&#8217;esprit à la langue de tous les jours que le C, l&#8217;assembleur, ou tout autre langages de bas niveau.</p>
<p>Idéalement, l&#8217;expérience utilisateur est conçue pour minimiser le temps entre l&#8217;idée et la conception sur la board, tout en maintenant la puissance et la souplesse des composantes sous-jacentes autant que possible.</p>
<p><strong>Arduino incarne ce que j&#8217;appelle &#8220;glass box encapsulation&#8221;. </strong><br />
Cela signifie que vous n&#8217;avez pas besoin de regarder le code de bas niveau qui comprend les bibliothèques si vous ne voulez pas le faire, mais vous pouvez si vous le souhaitez. <em>NDLR: c&#8217;est un peu ici l&#8217;esprit du langage python, ou plus généralement même des frameworks OS.</em></p>
<p>Les bibliothèques sont compilées uniquement lorsque vous compilez votre sketch final. Donc, si vous voulez les modifier, vous le pouvez. Si vous souhaitez inclure du C &#8220;non-Arduino-style&#8221; dans votre code, vous le pouvez. Si vous voulez inclure du code assembleur brut, vous le pouvez.  L&#8217;&#8221;<em>encapsulation box</em>&#8221; est toujours là, mais vous pouvez voir à travers si vous le voulez.</p>
<p>Les contrôleurs de niveau comme le STAMP n&#8217;inclus pas cela. Et les environnements de niveau inférieur ne réalisent pas l&#8217;abstraction au même niveau que nous le faisons.<strong><br />
La board comprend un serial bootloader sur le micro-contrôleur, et un adaptateur USB/série, vous n&#8217;avez donc pas à vous préoccuper de l&#8217;interfaçage ou de la compatibilité ordinateur/micro-contrôleur.</strong><br />
La board possède également un prise d&#8217;alimentation jack et switch automatiquement entre l&#8217;alimentation USB et l&#8217;alimentation externe, toujours dans le but de simplifier le passage ordinateur / fonctionnement stand-alone. <em>NDLR : il est également possible d&#8217;alimenter la board via les pins GND et + 5V (alimentation non régulée).</em></p>
<p><strong>Le prix de la board reste raisonnable (moins cher qu&#8217;une board STAMP) et le logiciel est gratuit.</strong><br />
Nous voulons que les gens pense développement, plutôt que de voir leur contrôleur comme une seule unité qu&#8217;ils ne peuvent pas se permettre de dupliquer.</p>
<p><strong>Le tout est open source, afin que vous puissiez faire votre propre version de celui-ci si vous avez envie de fair</strong>e.<br />
Le nombre de fork nous montre que la platine est réellement utile à certains de nos utilisateurs. La continuité des ventes de la platine officielle, elle, nous indique que d&#8217;autres ont aussi la valeur de la commodité.</p>
<p><strong>Dès le début, le logiciel a été multi-plateformes. </strong><br />
Enseigner dans les écoles où les élèves sont à 90% sous Mac, à été une énorme amélioration pour nous.</p>
<p>À ITP, nous avons réussi à &#8220;libérer&#8221; un laboratoire du support du logiciel propriétaire (Windows-only) que nous utilisions alors pour le PIC. Les étudiants apprécient de pouvoir utiliser des outils sur n&#8217;importe quel système d&#8217;exploitation avec lesquels ils sont familiers.</p>
<ul>
<li><strong>Quel impact pensez-vous que cette décision a-t-elle eu?</strong></li>
</ul>
<p>Nous pensons que l&#8217;ouverture est bénéfique à l&#8217;innovation. Le caractère open source de celui-ci a eu un impact énorme sur sa propagation, je pense. Il y a des tonnes de clones sur le marché. Beaucoup d&#8217;entre eux ne cherchent même pas une clientèle au-delà de leurs amis, étudiants, etc. Mais il y a une grande valeur d&#8217;apprentissage à faire votre propre version d&#8217;un outil que vous utilisez.</p>
<p>Je pense que beaucoup de personnes font un clone tout simplement parce qu&#8217;ils le peuvent, et qu&#8217;ils pensent que ça va être fun. Dans le processus, ils apprennent quelque chose, et ils deviennent vite accroc à en apprendre plus. Cela n&#8217;arriverait pas si la plate-forme était fermée.</p>
<ul>
<li><strong>Nous avons entendu les développeurs ont exprimé le souhait que le nom &#8220;Arduino&#8221; (ou dérivé) soit exclusif au produit officiel et ne puisse pas être utilisés pour des travaux dérivés sans autorisation. Est-ce exact et si oui, pourquoi prendre cette mesure ?</strong></li>
</ul>
<p>C&#8217;est vrai, nous avons déposé la marque. Il est assez fréquent de le faire en open source. Si vous prenez par exemple Linux, MySQL, Apache, ou Ubuntu, par exemple, ils sont tous des marques déposés, bien qu&#8217;open-source. Ainsi, ces derniers sont nos modèles. Il y a certaines raisons pour lesquelles nous avons choisi pour ce faire.</p>
<p>Premièrement, le nom porte la responsabilité. Alors que nous sommes ravi que des gens utilisent les fichiers typons ou le code que nous avons créé, nous pensons que nommer une chose devrait rester unique.</p>
<p>Quand une personne achète une Arduino, elle devrait pouvoir compter sur le constructeur derrière elle. Nous l&#8217;avons fait, pour les fabricants à qui nous avons autorisées le nom, car nous travaillons étroitement avec eux pour assurer un niveau de qualité et de facilité d&#8217;utilisation dont nous sommes fiers.</p>
<p>Si, d&#8217;autre part, quelqu&#8217;un achète une board appelée Arduino auprès d&#8217;un constructeur avec lequel nous n&#8217;avons aucun contact, et l&#8217;envoie ensuite à nous ou l&#8217;un de nos fabricants pour réparation ou remplacement, nous, ou le fabricant, ne pourraient assurer un service correct. Nous ne pouvons pas garantir un niveau de qualité avec quelqu&#8217;un qui ne travail pas avec nous.</p>
<p>Deuxièmement, les noms de produit fonctionnent un peu comme les noms de personnes: Si j&#8217;écris un article et je &#8220;cite&#8221; Trevor Clarke, vous seriez probablement satisfait, mais si j&#8217;écris et &#8220;signe&#8221; Trevor Clarke, vous n&#8217;apprécieriez probablement pas. Vous n&#8217;auriez aucun moyen de s&#8217;assurer que l&#8217;article était factuellement exacte, ou représentait vos opinions. Mais il y a votre nom dessus. Nous ressentons la même chose concernant la platine et son IDE.</p>
<p>Si vous voulez utiliser les typons Arduino ou le code source pour faire votre propre board (en citant simplement le projet) c&#8217;est parfait. Si vous voulez l&#8217;appeler &#8220;Arduino-compatibles&#8221;, c&#8217;est très bien aussi. Mais nous préférons vous voire attribuer à votre propre board son propre nom.</p>
<p>Enfin, il y a une raison financière au maintient de la marque. Le hardware rend l&#8217;entreprise commercialement autonome, mais le software (non monétisé) ne se suffit pas à lui même. Nous facturons des frais de licence à des fabricants sous licence pour chaque board qu&#8217;ils vendent. Cet argent sert à financer la maintenance et le développement du logiciel et du site Web. Il permet à chacun de nous de prendre quelques heures par semaine, hors de nos autres emplois, à maintenir les éléments du système Arduino qui ne peuvent se suffirent à eux même.</p>
<p>Vous pouvez faire des travaux dérivés sans autorisation, c&#8217;est juste le nom qui est une marque déposée. La plupart des clones n&#8217;ont pas demandé notre permission, pas plus qu&#8217;ils en ont besoin, tant qu&#8217;ils ne sont pas appelés «Arduino». Il y a des tonnes de *duinos qui sont très bien [..].</p>
<ul>
<li><strong>Vous-même, avez vous utilisé l&#8217;Arduino pour un projet ?</strong></li>
</ul>
<p>Je l&#8217;utilise tout le temps. Le premier usage que j&#8217;en ai eu s&#8217;est fait avec le reste de l&#8217;équipe, le développement d&#8217;un prototype pour une entreprise d&#8217;éclairage en Italie. Ce projet m&#8217;a montré à quel point cette plateforme pouvait être utile. Je l&#8217;utilise également dans mon enseignement.  C&#8217;est la première plateforme hardware qui puisse servir à l&#8217;enseignement des étudiants et au milieu professionnel en même temps.</p>
<p>Dans <a href="http://www.tigoe.net/projects.shtml">mes projets personnels</a>, j&#8217;ai développé une nouvelle version de mon &#8220;horloge e-mail&#8221; (<a href="http://www.tigoe.net/emailclock/clock_v2.shtml">une horloge qui fait tic tac à chaque nouveau message reçu</a>) utilisant l&#8217;Arduino. J&#8217;ai également conçu une litière à chat qui m&#8217;envoie un e-mail avec une photo du chat; un outils de mesure de la qualité de l&#8217;air.. [..] et plus encore. Je l&#8217;utilise en classe à peu près tous les jours.</p>
<ul>
<li><strong>Avez-vous déjà vu l&#8217;Arduino utilisé d&#8217;une manière que vous n&#8217;auriez pas souhaité ?</strong></li>
</ul>
<p>Eh bien, l&#8217;Arduino est destinée à être déployée dans une grande variété de cas, donc pas vraiment. J&#8217;estime que la seule chose pour laquelle je ne souhaite pas qu&#8217;il soit utilisé soit pour faire mal aux gens ou de causer des dommages. J&#8217;espère ne jamais la voir utilisé en ce sens.</p>
<ul>
<li><strong>Avez-vous des conseils pour les &#8220;up-and-coming hardware hackers&#8221;?</strong></li>
</ul>
<p>Patience. Persistance. Et douches fréquentes. Je résous la plupart de mes problèmes dans la douche. <em>(NDLR : euhh.. erreur de traduction ?)</em></p>
<ul>
<li><strong>Enfin, y&#8217;a-t-il autre chose que vous aimeriez ajouter?</strong></li>
</ul>
<p>Merci à tous ceux qui ont utilisé Arduino! Nous avons beaucoup de plaisir à travailler sur ce projet, et il est incroyablement gratifiant de voir les choses réalisées par les utilisateurs, qu&#8217;on ne pensait pas être possible grâce au fruit de notre travail.</p>
<p><a href="http://www.computerworld.com.au/article/321749/-z_programming_languages_arduino_tom_igoe"><em>interview original (en)</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/10/interview-de-tom-igoe-arduino-team.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acquérir une Arduino</title>
		<link>http://www.playarduino.fr/2009/10/acquerir-une-arduino.html</link>
		<comments>http://www.playarduino.fr/2009/10/acquerir-une-arduino.html#comments</comments>
		<pubDate>Mon, 12 Oct 2009 09:45:29 +0000</pubDate>
		<dc:creator>Michael Hurni</dc:creator>
				<category><![CDATA[Matériel]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[atmega]]></category>
		<category><![CDATA[freeduino]]></category>
		<category><![CDATA[seeeduino]]></category>

		<guid isPermaLink="false">http://www.playarduino.fr/?p=14</guid>
		<description><![CDATA[Maintenant que vous êtes convaincu, ne reste plus qu&#8217;à trouver où acheter.
Pour les moins aventuriers ou bricoleur d&#8217;entre vous, je vous conseille une platine officielle assemblée de type duemilanove, diecemila ou mega. Ces trois types de platines ont été conçues pour accueillir des shields qui s&#8217;emboîtent parfaitement afin de multiplier les possibilités de votre Arduino. [...]]]></description>
			<content:encoded><![CDATA[<p>Maintenant que vous êtes convaincu, ne reste plus qu&#8217;à trouver où acheter.</p>
<p>Pour les moins aventuriers ou bricoleur d&#8217;entre vous, je vous conseille une platine officielle assemblée de type duemilanove, diecemila ou mega. Ces trois types de platines ont été conçues pour accueillir des shields qui s&#8217;emboîtent parfaitement afin de <strong>multiplier les possibilités de votre Arduino</strong>. Comptez une vingtaine d&#8217;euros pour une duemilanove, n&#8217;hésitez pas non plus à faire un tour sur <a title="Arduino Duemilanove on Ebay" href="http://shop.ebay.fr/i.html?_nkw=arduino+duemilanove" target="_blank">Ebay</a>, c&#8217;est un l&#8217;endroit rêvé pour l&#8217;acquérir à prix mini, le prix variant généralement selon le choix du µ-contrôleur (ATMEL ATMEGA168 ou 328).</p>
<p>Les plus courageux pourraient se laisser tenter par une <a href="http://www.seeedstudio.com/blog/?page_id=110">seeeduino</a> apportant <strong>quelques améliorations à son homologue officiel</strong>. Pour les plus bricoleurs cette fois ci, la méthode – la plus économique probablement – consiste concevoir vous-même votre Arduino.</p>
<p>Plus élégant enfin, en achetant un kit à monter/souder soi-même. Je vous conseille une freeduino, la plupart des ces platines étant assez réussies (selon le fabricant). <a href="http://www.nkcelectronics.com/freeduino-arduino-diecimila-compatible-board-complete-kit.html">Kit complet disponible chez Nkcelectronics</a> avec <a href="http://mcukits.com/2009/03/12/assembling-the-freeduino-board-kit/">tutoriel détaillé</a> sur le montage.</p>
<p><img class="aligncenter" title="freeduino kit" src="http://www.active-robots.com/products/controllr/beam/28920-500.jpg" alt="" width="400" height="267" /></p>
<h2>Concevoir son <em>Arduino compatible</em></h2>
<p>Concevoir son Arduino (soi-même, sans kit) n&#8217;est pas extrêmement compliqué en soit, vous trouverez <a href="http://arduino.cc/en/Main/ArduinoBoardDuemilanove">les schémas sur le site officiel</a> (rappelons-le, le projet étant open source, de l&#8217;hardware au software). Toutefois, voici quelques pièges à éviter.</p>
<p>Le choix du micro-contrôleur en est un premier. Vous trouverez sans peine sur internet des µ-contrôleurs ATMEL ATMEGA168/328 à faible coût (1 ou 2 euros), toutefois <strong>ces derniers ne seront pas opérationnel pour l&#8217;IDE</strong> Arduino. En effet, il vous faudra y « flasher » un bootloader qui &#8220;écoutent&#8221; automatiquement à leur mise sous tension, la présence d&#8217;un nouveau programme à mettre en place. Pour flasher le bootloader, il vous faudra donc acquérir (en plus du micro-contrôleur) un AVR Programmer aux alentours de 50 euros. <strong>Je vous conseille donc vivement de prendre un ATMEGA préprogrammé</strong> à peine plus cher (4 euros) qui vous évitera l&#8217;achat d&#8217;un AVR programmer.</p>
<p>La soudure quant à elle présente un autre piège. Il vous est en effet possible de souder directement le µ-contrôleur sur votre circuit. Mais cela implique deux inconvénients majeurs :</p>
<ul>
<li> un risque lié à la surchauffe du µ-contrôleur.</li>
<li> la difficulté à le remplacer en cas de destruction liée à une mauvaise manipulation (dans le genre j&#8217;envoie 48volts entre 2 pins du circuit intégré, on ne sait jamais).</li>
</ul>
<p>Pour palier à ces deux inconvénients, je vous préconise l&#8217;utilisation d&#8217;un socket.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.playarduino.fr/2009/10/acquerir-une-arduino.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
