<?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>GJ Lab</title>
	<atom:link href="http://blog.artandgj.com/fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.artandgj.com</link>
	<description></description>
	<lastBuildDate>Sun, 11 Sep 2011 23:09:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>White Sun Improvisation #1</title>
		<link>http://blog.artandgj.com/fr/2011/09/12/white-sun-improvisation-1/</link>
		<comments>http://blog.artandgj.com/fr/2011/09/12/white-sun-improvisation-1/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 23:08:59 +0000</pubDate>
		<dc:creator>GJ</dc:creator>
				<category><![CDATA[Musique]]></category>
		<category><![CDATA[Piano]]></category>

		<guid isPermaLink="false">http://blog.artandgj.com/fr/?p=79</guid>
		<description><![CDATA[Parfois, il y a des personnes dont on aime vraiment leur travail, leur créativité et leur originalité. Kyle Landry, pianiste découvert sur Youtube, en fait définitivement parti. Je me permet ici de reprendre un de ces morceaux, White Sun (Il &#8230; <a href="http://blog.artandgj.com/fr/2011/09/12/white-sun-improvisation-1/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Parfois, il y a des personnes dont on aime vraiment leur travail, leur créativité et leur originalité. <a href="http://www.kylelandry.com/">Kyle Landry</a>, pianiste découvert sur <a href="http://www.youtube.com/user/kylelandry">Youtube</a>, en fait définitivement parti. Je me permet ici de reprendre un de ces morceaux, White Sun (Il existe trois voire quatre arrangements différents, deux sont sur Youtube et un sur son dernier album, Piano Works III), en improvisant un peu (Vidéo sans préparation, j&#8217;ai enregistré en continu pendant quelques minutes plusieurs versions, d&#8217;où les quelques fautes). En vous souhaitant &#8211; je l&#8217;espère &#8211; une bonne écoute <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><iframe src="http://www.youtube.com/embed/MGekl-sjTfY" frameborder="0" width="560" height="345"></iframe></p>

<div class="like">
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.artandgj.com%2Ffr%2F2011%2F09%2F12%2Fwhite-sun-improvisation-1%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:62px; "></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.artandgj.com/fr/2011/09/12/white-sun-improvisation-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La domotique chez soi</title>
		<link>http://blog.artandgj.com/fr/2011/09/10/la-domotique-chez-soi/</link>
		<comments>http://blog.artandgj.com/fr/2011/09/10/la-domotique-chez-soi/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 23:19:31 +0000</pubDate>
		<dc:creator>GJ</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Domotique]]></category>

		<guid isPermaLink="false">http://blog.artandgj.com/fr/?p=52</guid>
		<description><![CDATA[Je rentre d&#8217;une journée de boulot, et fatigué, je m&#8217;affale comme une masse dans le canapé. Me vient alors l&#8217;envie de regarder un épisode de &#8216; The Big Bang Theory &#8216;, je sors donc mon portable, démarre l&#8217;application DomoGJ et appuie &#8230; <a href="http://blog.artandgj.com/fr/2011/09/10/la-domotique-chez-soi/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_15.jpg"><img class="aligncenter size-medium wp-image-53" title="Domotique" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_15-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p><span id="more-52"></span></p>
<blockquote>
<p style="text-align: justify;">Je rentre d&#8217;une journée de boulot, et fatigué, je m&#8217;affale comme une masse dans le canapé. Me vient alors l&#8217;envie de regarder un épisode de &#8216; The Big Bang Theory &#8216;, je sors donc mon portable, démarre l&#8217;application DomoGJ et appuie sur quelques boutons. Le volet se ferme, les lumières s&#8217;éteignent, le vidéo projecteur s&#8217;allume, la toile descend lentement et majestueusement, et l&#8217;épisode commence enfin. Bienvenue chez moi <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
</blockquote>
<p style="text-align: justify;">Et pour pas trop cher ! Je détaillerai dans cet article le prix, la liste des composants, où acheter, et enfin je donnerai mes sources. Comme d&#8217;habitude, ce projet s&#8217;articule autour de modules arduino et un peu d&#8217;Android. Le but étant de contrôler les lumières, les volets, tout ce qui vous passe par la tête en fait, à l&#8217;aide de votre portable Android &#8211; en réalité n&#8217;importe quel matériel qui a accès à internet &#8211; , où que vous soyez (Chez vous, ou pas :p).</p>
<p style="text-align: justify;"><strong>Attention cependant avant de vous mettre à l&#8217;ouvrage, on touche à l&#8217;électricité, et on ne rigole pas avec ça, je ne suis pas responsable de l&#8217;utilisation que vous faites de ce tutorial. Veillez à toujours travailler avec le courant coupé.</strong></p>
<p>Comment ça marche ? Un petit schéma :</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-58" title="Domotique_Schema" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_Schema.jpg" alt="" width="580" height="483" />Votre portable est donc connecté en wifi à votre box, ou bien à l&#8217;internet. Il appelle une URL qui passe par votre box et ai redirigé vers le module arduino connecté en ethernet. L&#8217;URL contient des variables, que l&#8217;arduino va extraire et analyser pour envoyer un signal RF dans tout l&#8217;appartement. Celui-ci va être capté par tous les modules arduino, et bien entendu seulement un seul d&#8217;entre eux est concerné, il va donc appliquer les ordres, généralement activer &#8211; ou pas &#8211; un relais. Un relais nous sert d&#8217;interrupteurs. En faisant passer un petit courant d&#8217;un côté (5v, celui de l&#8217;arduino), il laisse passer de l&#8217;autre les 220v du gros courant servant à allumer nos ampoules.</p>
<h1 style="text-align: justify;">Module Principal</h1>
<p>J&#8217;appelle module principal la partie connectée à votre box. Elle se compose des éléments suivant :</p>
<ul>
<li><strong>Arduino</strong> (Version Uno, pro, nano, vous avez l&#8217;embarras du choix, il y en a pour une vingtaine d&#8217;euros. Personnellement, je n&#8217;utilise pas les boards officiels, j&#8217;assemble tout à la main, c&#8217;est beaucoup moins cher (8 euros en tout), lire le <a href="http://www.instructables.com/id/Build-Your-Own-Arduino/">tutorial</a>)</li>
<li><strong>Shield Ethernet</strong> pour Arduino (Vous pouvez acheter <a href="http://store.arduino.cc/ww/index.php?main_page=product_info&amp;cPath=11&amp;products_id=139">l&#8217;officiel</a>, à 31 euros, ou bien <a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;products_id=4">celui que j&#8217;ai utilisé</a>, à 15 euros, mais attention, peu de documentation et le code est un peu&#8230; Obscur ! Si j&#8217;avais à le refaire je prendrai l&#8217;officiel. On peut également ajouter qu&#8217;il est possible d&#8217;avoir <a href="http://store.arduino.cc/ww/index.php?main_page=product_info&amp;cPath=11&amp;products_id=141">un module arduino avec l&#8217;ethernet intégré</a>, mais jamais testé)</li>
<li><strong>RF Link Transmitter 434MHz</strong> (Pour envoyer sans fil les informations aux autres modules, chez <a href="http://www.sparkfun.com/products/10534">Sparkfun à moins de $4</a> !!!)</li>
</ul>
<p>Ce qui nous fait un total de 35 euros avec les composants que j&#8217;ai utilisé, on peut descendre à 25 en utilisant les solutions les moins coûteuse.</p>
<h6><a href="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_05.jpg"><img class="aligncenter size-large wp-image-70" title="Domotique Module Principal" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_05-1024x680.jpg" alt="" width="584" height="387" /></a>(Promettez-moi de ranger tout ça dans une belle boite, j&#8217;ai tout caché dans une boite noire qui s&#8217;accorde bien avec ma freebox Revolution <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</h6>
<p>Pour le cablage, il y a quatre pins sur l&#8217;émtteur RF : 5v, GND, Data et l&#8217;antenne. Dans le programme qui suivra, le pin Data est connecté au pin 3 de l&#8217;arduino.</p>
<p>Maintenant, il va falloir choisir comment on va envoyer les ordres aux différents récepteur. Comme décrit un peu plus tôt dans l&#8217;article, on utilise des URL dans lesquelles on fait passer des variables. Un ordre typique de mon installation :</p>
<p><strong>http://(IP de l&#8217;arduino)/?cmd=A-1-3-0</strong></p>
<p>La commande est &laquo;&nbsp; A-1-3-0 &laquo;&nbsp;. Nous verrons un peu plus tard ce que celle-ci signifie, pour le moment notre module principal a juste à récupérer cette commande et à l&#8217;envoyer grâce à son module RF. Le code arduino :</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div class="wphigh_titre"><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block"> Code : Arduino</a><div class="wphigh_options"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</div></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="c" style="font-family:monospace;"><span class="co2">#include &lt;VirtualWire.h&gt;</span>
<span class="co2">#include &lt;etherShield.h&gt;</span>
<span class="co2">#undef int</span>
<span class="co2">#undef abs</span>
<span class="co2">#undef double</span>
<span class="co2">#undef float</span>
<span class="co2">#undef round</span>
&nbsp;
<span class="kw4">static</span> uint8_t mymac<span class="br0">&#91;</span>6<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>0x54<span class="sy0">,</span>0x55<span class="sy0">,</span>0x58<span class="sy0">,</span>0x10<span class="sy0">,</span>0x00<span class="sy0">,</span>0x24<span class="br0">&#125;</span><span class="sy0">;</span>
<span class="kw4">static</span> uint8_t myip<span class="br0">&#91;</span>4<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>192<span class="sy0">,</span>168<span class="sy0">,</span>1<span class="sy0">,</span>15<span class="br0">&#125;</span><span class="sy0">;</span>
<span class="kw4">static</span> <span class="kw4">char</span> baseurl<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">&quot;http://192.168.1.15/&quot;</span><span class="sy0">;</span>
<span class="kw4">static</span> uint16_t mywwwport <span class="sy0">=</span><span class="nu0">80</span><span class="sy0">;</span>
&nbsp;
<span class="co2">#define BUFFER_SIZE 500</span>
<span class="co2">#define STR_BUFFER_SIZE 40</span>
<span class="kw4">static</span> uint8_t buf<span class="br0">&#91;</span>BUFFER_SIZE<span class="sy0">+</span>1<span class="br0">&#93;</span><span class="sy0">;</span>
<span class="kw4">static</span> <span class="kw4">char</span> strbuf<span class="br0">&#91;</span>STR_BUFFER_SIZE<span class="sy0">+</span>1<span class="br0">&#93;</span><span class="sy0">;</span>
<span class="kw4">int</span> cool <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw4">int</span> tprecedent <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
EtherShield es<span class="sy0">=</span>EtherShield<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
uint16_t print_webpage<span class="br0">&#40;</span>uint8_t <span class="sy0">*</span>buf<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw4">void</span> setup<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  Serial.<span class="me1">begin</span><span class="br0">&#40;</span>9600<span class="br0">&#41;</span><span class="sy0">;</span>
  vw_set_ptt_inverted<span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
  vw_setup<span class="br0">&#40;</span>2000<span class="br0">&#41;</span><span class="sy0">;</span>
  vw_set_tx_pin<span class="br0">&#40;</span>3<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>4<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>5<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>6<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_enc28j60Init</span><span class="br0">&#40;</span>mymac<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_enc28j60clkout</span><span class="br0">&#40;</span>2<span class="br0">&#41;</span><span class="sy0">;</span>
  delay<span class="br0">&#40;</span>10<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_enc28j60PhyWrite</span><span class="br0">&#40;</span>PHLCON<span class="sy0">,</span>0x880<span class="br0">&#41;</span><span class="sy0">;</span>
  delay<span class="br0">&#40;</span>500<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_enc28j60PhyWrite</span><span class="br0">&#40;</span>PHLCON<span class="sy0">,</span>0x990<span class="br0">&#41;</span><span class="sy0">;</span>
  delay<span class="br0">&#40;</span>500<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_enc28j60PhyWrite</span><span class="br0">&#40;</span>PHLCON<span class="sy0">,</span>0x880<span class="br0">&#41;</span><span class="sy0">;</span>
  delay<span class="br0">&#40;</span>500<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_enc28j60PhyWrite</span><span class="br0">&#40;</span>PHLCON<span class="sy0">,</span>0x990<span class="br0">&#41;</span><span class="sy0">;</span>
  delay<span class="br0">&#40;</span>500<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_enc28j60PhyWrite</span><span class="br0">&#40;</span>PHLCON<span class="sy0">,</span>0x476<span class="br0">&#41;</span><span class="sy0">;</span>
  delay<span class="br0">&#40;</span>100<span class="br0">&#41;</span><span class="sy0">;</span>
  es.<span class="me1">ES_init_ip_arp_udp_tcp</span><span class="br0">&#40;</span>mymac<span class="sy0">,</span>myip<span class="sy0">,</span>80<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw4">void</span> loop<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  uint16_t plen<span class="sy0">,</span> dat_p<span class="sy0">;</span>
  plen <span class="sy0">=</span> es.<span class="me1">ES_enc28j60PacketReceive</span><span class="br0">&#40;</span>BUFFER_SIZE<span class="sy0">,</span> buf<span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="kw1">if</span><span class="br0">&#40;</span>plen<span class="sy0">!=</span>0<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>es.<span class="me1">ES_eth_type_is_arp_and_my_ip</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
      es.<span class="me1">ES_make_arp_answer_from_request</span><span class="br0">&#40;</span>buf<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">return</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">if</span><span class="br0">&#40;</span>es.<span class="me1">ES_eth_type_is_ip_and_my_ip</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="br0">&#41;</span><span class="sy0">==</span>0<span class="br0">&#41;</span><span class="br0">&#123;</span>
      <span class="kw1">return</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">if</span><span class="br0">&#40;</span>buf<span class="br0">&#91;</span>IP_PROTO_P<span class="br0">&#93;</span><span class="sy0">==</span>IP_PROTO_ICMP_V <span class="sy0">&amp;&amp;</span> buf<span class="br0">&#91;</span>ICMP_TYPE_P<span class="br0">&#93;</span><span class="sy0">==</span>ICMP_TYPE_ECHOREQUEST_V<span class="br0">&#41;</span><span class="br0">&#123;</span>
      es.<span class="me1">ES_make_echo_reply_from_request</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">return</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>buf<span class="br0">&#91;</span>IP_PROTO_P<span class="br0">&#93;</span><span class="sy0">==</span>IP_PROTO_TCP_V<span class="sy0">&amp;&amp;</span>buf<span class="br0">&#91;</span>TCP_DST_PORT_H_P<span class="br0">&#93;</span><span class="sy0">==</span>0<span class="sy0">&amp;&amp;</span>buf<span class="br0">&#91;</span>TCP_DST_PORT_L_P<span class="br0">&#93;</span><span class="sy0">==</span>mywwwport<span class="br0">&#41;</span><span class="br0">&#123;</span>
      <span class="kw1">if</span> <span class="br0">&#40;</span>buf<span class="br0">&#91;</span>TCP_FLAGS_P<span class="br0">&#93;</span> <span class="sy0">&amp;</span> TCP_FLAGS_SYN_V<span class="br0">&#41;</span><span class="br0">&#123;</span>
        es.<span class="me1">ES_make_tcp_synack_from_syn</span><span class="br0">&#40;</span>buf<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw1">return</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
      <span class="kw1">if</span><span class="br0">&#40;</span>buf<span class="br0">&#91;</span>TCP_FLAGS_P<span class="br0">&#93;</span> <span class="sy0">&amp;</span> TCP_FLAGS_ACK_V<span class="br0">&#41;</span><span class="br0">&#123;</span>
        es.<span class="me1">ES_init_len_info</span><span class="br0">&#40;</span>buf<span class="br0">&#41;</span><span class="sy0">;</span>
        dat_p<span class="sy0">=</span>es.<span class="me1">ES_get_tcp_data_pointer</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span>dat_p<span class="sy0">==</span>0<span class="br0">&#41;</span><span class="br0">&#123;</span>
          <span class="kw1">if</span> <span class="br0">&#40;</span>buf<span class="br0">&#91;</span>TCP_FLAGS_P<span class="br0">&#93;</span> <span class="sy0">&amp;</span> TCP_FLAGS_FIN_V<span class="br0">&#41;</span><span class="br0">&#123;</span>
            es.<span class="me1">ES_make_tcp_ack_from_any</span><span class="br0">&#40;</span>buf<span class="br0">&#41;</span><span class="sy0">;</span>
          <span class="br0">&#125;</span>
          <span class="kw1">return</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span>strncmp<span class="br0">&#40;</span><span class="st0">&quot;GET &quot;</span><span class="sy0">,</span><span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span><span class="br0">&#40;</span>buf<span class="br0">&#91;</span>dat_p<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="sy0">!=</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
          plen<span class="sy0">=</span>es.<span class="me1">ES_fill_tcp_data_p</span><span class="br0">&#40;</span>buf<span class="sy0">,</span><span class="nu0">0</span><span class="sy0">,</span>PSTR<span class="br0">&#40;</span><span class="st0">&quot;HTTP/1.0 200 OK<span class="es1">\r</span><span class="es1">\n</span>Content-Type: text/html<span class="es1">\r</span><span class="es1">\n</span><span class="es1">\r</span><span class="es1">\n</span>&lt;h1&gt;200 OK&lt;/h1&gt;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
          <span class="kw1">goto</span> SENDTCP<span class="sy0">;</span>
        <span class="br0">&#125;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span>strncmp<span class="br0">&#40;</span><span class="st0">&quot;/ &quot;</span><span class="sy0">,</span><span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span><span class="br0">&#40;</span>buf<span class="br0">&#91;</span>dat_p<span class="sy0">+</span>4<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">,</span>2<span class="br0">&#41;</span><span class="sy0">==</span>0<span class="br0">&#41;</span><span class="br0">&#123;</span>
          plen<span class="sy0">=</span>print_webpage<span class="br0">&#40;</span>buf<span class="br0">&#41;</span><span class="sy0">;</span>
          <span class="kw1">goto</span> SENDTCP<span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
         find_key_val<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span><span class="br0">&#40;</span>buf<span class="br0">&#91;</span>dat_p<span class="sy0">+</span><span class="nu0">5</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st0">&quot;cmd&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
         <span class="kw1">if</span><span class="br0">&#40;</span>cool <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
           plen<span class="sy0">=</span>print_webpage<span class="br0">&#40;</span>buf<span class="br0">&#41;</span><span class="sy0">;</span>
         <span class="br0">&#125;</span>
         lum<span class="br0">&#40;</span>strbuf<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
         <span class="kw1">if</span><span class="br0">&#40;</span>strbuf<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st0">'B'</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="co1">//Autre module qui contrôle directement des octocoupleurs faisant le lien entre l'arduino et une télécommande</span>
           <span class="kw1">if</span><span class="br0">&#40;</span>strbuf<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st0">'0'</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
             digitalWrite<span class="br0">&#40;</span>4<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
             delay<span class="br0">&#40;</span>100<span class="br0">&#41;</span><span class="sy0">;</span>
             digitalWrite<span class="br0">&#40;</span>4<span class="sy0">,</span> LOW<span class="br0">&#41;</span><span class="sy0">;</span>
           <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>strbuf<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st0">'1'</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
             digitalWrite<span class="br0">&#40;</span>5<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
             delay<span class="br0">&#40;</span>100<span class="br0">&#41;</span><span class="sy0">;</span>
             digitalWrite<span class="br0">&#40;</span>5<span class="sy0">,</span> LOW<span class="br0">&#41;</span><span class="sy0">;</span>
           <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>strbuf<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st0">'2'</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
             digitalWrite<span class="br0">&#40;</span>6<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
             delay<span class="br0">&#40;</span>100<span class="br0">&#41;</span><span class="sy0">;</span>
             digitalWrite<span class="br0">&#40;</span>6<span class="sy0">,</span> LOW<span class="br0">&#41;</span><span class="sy0">;</span>
           <span class="br0">&#125;</span>
         <span class="br0">&#125;</span>
&nbsp;
SENDTCP<span class="sy0">:</span>  es.<span class="me1">ES_make_tcp_ack_from_any</span><span class="br0">&#40;</span>buf<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// send ack for http get</span>
          es.<span class="me1">ES_make_tcp_ack_with_data</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// send data</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw4">void</span> lum<span class="br0">&#40;</span><span class="kw4">const</span> <span class="kw4">char</span><span class="sy0">*</span> test<span class="br0">&#41;</span><span class="br0">&#123;</span>
  <span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>millis<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-</span>tprecedent<span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">200</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="co1">//Pour eviter deux ordres à la suite</span>
    <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy0">*</span>msg <span class="sy0">=</span> test<span class="sy0">;</span>
    Serial.<span class="me1">print</span><span class="br0">&#40;</span>msg<span class="br0">&#41;</span><span class="sy0">;</span>
    Serial.<span class="me1">println</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    vw_send<span class="br0">&#40;</span><span class="br0">&#40;</span>uint8_t <span class="sy0">*</span><span class="br0">&#41;</span>msg<span class="sy0">,</span> strlen<span class="br0">&#40;</span>msg<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    vw_wait_tx<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    tprecedent <span class="sy0">=</span> millis<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
uint8_t find_key_val<span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy0">*</span>str<span class="sy0">,</span><span class="kw4">char</span> <span class="sy0">*</span>key<span class="br0">&#41;</span><span class="br0">&#123;</span>
  uint8_t found<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>
  uint8_t i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>
  <span class="kw4">char</span> <span class="sy0">*</span>kp<span class="sy0">;</span>
  kp<span class="sy0">=</span>key<span class="sy0">;</span>
  <span class="kw1">while</span><span class="br0">&#40;</span><span class="sy0">*</span>str <span class="sy0">&amp;&amp;</span>  <span class="sy0">*</span>str<span class="sy0">!=</span><span class="st0">' '</span> <span class="sy0">&amp;&amp;</span> found<span class="sy0">==</span>0<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">*</span>str <span class="sy0">==</span> <span class="sy0">*</span>kp<span class="br0">&#41;</span><span class="br0">&#123;</span>
      kp<span class="sy0">++;</span>
      <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">*</span>kp <span class="sy0">==</span> <span class="st0">'<span class="es5">\0</span>'</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        str<span class="sy0">++;</span>
        kp<span class="sy0">=</span>key<span class="sy0">;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">*</span>str <span class="sy0">==</span> <span class="st0">'='</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
          found<span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
      kp<span class="sy0">=</span>key<span class="sy0">;</span>
    <span class="br0">&#125;</span>
    str<span class="sy0">++;</span>
  <span class="br0">&#125;</span>
  <span class="kw1">if</span> <span class="br0">&#40;</span>found<span class="sy0">==</span>1<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">while</span><span class="br0">&#40;</span><span class="sy0">*</span>str <span class="sy0">&amp;&amp;</span>  <span class="sy0">*</span>str<span class="sy0">!=</span><span class="st0">' '</span> <span class="sy0">&amp;&amp;</span> <span class="sy0">*</span>str<span class="sy0">!=</span><span class="st0">'&amp;'</span> <span class="sy0">&amp;&amp;</span> i<span class="sy0">&lt;</span>STR_BUFFER_SIZE<span class="br0">&#41;</span><span class="br0">&#123;</span>
      strbuf<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">=*</span>str<span class="sy0">;</span>
      i<span class="sy0">++;</span>
      str<span class="sy0">++;</span>
    <span class="br0">&#125;</span>
    strbuf<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">=</span><span class="st0">'<span class="es5">\0</span>'</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
  cool <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
  <span class="kw1">return</span><span class="br0">&#40;</span>found<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
uint16_t print_webpage<span class="br0">&#40;</span>uint8_t <span class="sy0">*</span>buf<span class="br0">&#41;</span><span class="br0">&#123;</span>
  uint16_t plen<span class="sy0">;</span>
  plen<span class="sy0">=</span>es.<span class="me1">ES_fill_tcp_data_p</span><span class="br0">&#40;</span>buf<span class="sy0">,</span><span class="nu0">0</span><span class="sy0">,</span>PSTR<span class="br0">&#40;</span><span class="st0">&quot;HTTP/1.0 200 OK<span class="es1">\r</span><span class="es1">\n</span>Content-Type: text/html<span class="es1">\r</span><span class="es1">\n</span><span class="es1">\r</span><span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  plen<span class="sy0">=</span>es.<span class="me1">ES_fill_tcp_data_p</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="sy0">,</span>PSTR<span class="br0">&#40;</span><span class="st0">&quot;&lt;form METHOD=get action=<span class="es1">\&quot;</span>&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  plen<span class="sy0">=</span>es.<span class="me1">ES_fill_tcp_data</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="sy0">,</span>baseurl<span class="br0">&#41;</span><span class="sy0">;</span>
  plen<span class="sy0">=</span>es.<span class="me1">ES_fill_tcp_data_p</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="sy0">,</span>PSTR<span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\&quot;</span>&gt;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  plen<span class="sy0">=</span>es.<span class="me1">ES_fill_tcp_data_p</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="sy0">,</span>PSTR<span class="br0">&#40;</span><span class="st0">&quot;&lt;input type=submit name=<span class="es1">\&quot;</span>cmd<span class="es1">\&quot;</span> value=<span class="es1">\&quot;</span>A-6-2-0-3-0-4-0-5-0-6-0-7-0<span class="es1">\&quot;</span>&gt;&lt;br&gt;&lt;br&gt;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  plen<span class="sy0">=</span>es.<span class="me1">ES_fill_tcp_data_p</span><span class="br0">&#40;</span>buf<span class="sy0">,</span>plen<span class="sy0">,</span>PSTR<span class="br0">&#40;</span><span class="st0">&quot;&lt;/form&gt;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
  <span class="kw1">return</span><span class="br0">&#40;</span>plen<span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="br0">&#125;</span></pre></div></div>
<p>&nbsp;</p>
<h1>Module Exécutant</h1>
<p>J&#8217;appelle module exécutant les modules qui vont recevoir les ordres du module principal et les appliquer. Les modules exécutant peuvent être très différent suivant ce que vous voulez contrôler, mais en général ils sont composés de :</p>
<ul>
<li><strong>Arduino</strong> (Toujours le même, vous pouvez peut-être envisager la version nano, ou pro mini, car ils auront souvent à se loger dans un petit endroit, à côté de l&#8217;interrupteur)</li>
<li><strong>RF Link Receiver 434MHz</strong> (Il s&#8217;agit cette fois-ci du récepteur RF, toujours <a href="http://www.sparkfun.com/products/10532">chez Sparkfun à moins de $5</a> !)</li>
<li><strong>Relais</strong> (Ils vont jouer le rôle de commutateur entre le faible courant de l&#8217;arduino et le 220v de votre électricité, <a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;cPath=7&amp;products_id=32">j&#8217;utilise ces modèles là</a>, il y&#8217;en a deux par shield et ils coûtent environ 4 euros)</li>
<li><strong>Convertisseur 220v -&gt; 5v</strong> (Pour alimenter l&#8217;arduino ! Je ne l&#8217;ai pas compté dans le module principale, car je sous entends qu&#8217;il est à côté de votre box disposant de port usb 5v, on en trouve pour 2 euros sur ebay)</li>
<li>De l&#8217;électronique diverses ! Je ne vais pas détailler mais n&#8217;oubliez pas que si vous ajoutez une commande à distance, il est préférable de laisser un interrupteur physique ! Imaginez qu&#8217;il vous arrive quelque chose dans votre appartement et que les gens voulant vous sauver perdent du temps à trouver la lumière&#8230; A méditer je crois <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p style="text-align: justify;">Le prix total, et bien par exemple avec un module qui permet de gérer six lumières, le prix est de 30 euros (8 + (4*3) + 4 + Divers). Un module pour gérer un volet électrique vous coûtera 18 euros environ.</p>
<p style="text-align: justify;">Un de mes modules de lumières (J&#8217;ai également refait le panneau des interrupteurs, un peu dans le genre cokpit d&#8217;avion) :</p>
<div id="attachment_63" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_14.jpg"><img class="size-medium wp-image-63 " title="Domotique Test" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_14-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">J&#39;utilisais des leds pour symboliser les lumières, pendant les tests <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<p>&nbsp;</p>
<div id="attachment_71" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-71" title="Domotique ancien Panneau" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_06-300x200.jpg" alt="" width="300" height="200" /><p class="wp-caption-text">Mes anciens interrupteurs... Pas très sexy (Le mur non plus d&#39;ailleurs, la peinture m&#39;attends depuis un bon bout de temps)</p></div>
<div id="attachment_53" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_15.jpg"><img class="size-medium wp-image-53" title="Domotique" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_15-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Pour rentrer tout ça là-dedans, je ne vous raconte pas la galère</p></div>
<p style="text-align: center;"><a href="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_12.jpg"><img class="aligncenter size-medium wp-image-64" title="Domotique Panneau" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_12-179x300.jpg" alt="" width="179" height="300" /></a></p>
<p style="text-align: justify;">Passons à la programmation ! Souvenez-vous en, on parlait tou à l&#8217;heure d&#8217;une commande envoyé par le module principal, qui ressemblait à :</p>
<p><strong>A-1-3-0</strong></p>
<p style="text-align: justify;">Le A signifie que je souhaite exécuter l&#8217;ordre A (Ooooh&#8230; :p), et celui-ci dans mon cas commande 6 ampoules. Le 1 qui vient juste après nous donne le nombre d&#8217;instructions (Ici, 1 :p). Je lui dit donc de mettre à l&#8217;état 0 l&#8217;ampoule n°3. On pourrait traduire par : (Identifiant de l&#8217;ordre)-(Nombre d&#8217;instructions)-(Identifiant de l&#8217;amoule)-(Etat). Et on peut ajouter d&#8217;autres ordres ! Comme par exemple :</p>
<p style="text-align: justify;">A-3-3-1-5-0-6-1 = Il y a trois ordres, allume l&#8217;ampoule 3, éteint l&#8217;amoule 5, allume l&#8217;ampoule 6.</p>
<p>Le code arduino (A adapter suivant vos modules, bien entendu) :</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div class="wphigh_titre"><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block"> Code : Arduino</a><div class="wphigh_options"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</div></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="c" style="font-family:monospace;"><span class="co2">#include &lt;VirtualWire.h&gt;</span>
<span class="co2">#undef int</span>
<span class="co2">#undef abs</span>
<span class="co2">#undef double</span>
<span class="co2">#undef float</span>
<span class="co2">#undef round</span>
&nbsp;
<span class="kw4">int</span> etat<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="br0">&#125;</span><span class="sy0">;</span>
<span class="kw4">int</span> diff<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="sy0">,</span> 0<span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
<span class="kw4">int</span> timer <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw4">int</span> ancien <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
<span class="kw4">void</span> setup<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  Serial.<span class="me1">begin</span><span class="br0">&#40;</span>9600<span class="br0">&#41;</span><span class="sy0">;</span>
  vw_set_ptt_inverted<span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
  vw_setup<span class="br0">&#40;</span>2000<span class="br0">&#41;</span><span class="sy0">;</span>
  vw_set_rx_pin<span class="br0">&#40;</span>8<span class="br0">&#41;</span><span class="sy0">;</span>
  vw_rx_start<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
  pinMode<span class="br0">&#40;</span>2<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>3<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>4<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>5<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>6<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
  pinMode<span class="br0">&#40;</span>7<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
  pinMode<span class="br0">&#40;</span>12<span class="sy0">,</span> INPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Switch ON/OFF</span>
  pinMode<span class="br0">&#40;</span>9<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//LED</span>
  pinMode<span class="br0">&#40;</span>10<span class="sy0">,</span> OUTPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//LED</span>
&nbsp;
  pinMode<span class="br0">&#40;</span>14<span class="sy0">,</span> INPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  pinMode<span class="br0">&#40;</span>15<span class="sy0">,</span> INPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  pinMode<span class="br0">&#40;</span>16<span class="sy0">,</span> INPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  pinMode<span class="br0">&#40;</span>17<span class="sy0">,</span> INPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  pinMode<span class="br0">&#40;</span>18<span class="sy0">,</span> INPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  pinMode<span class="br0">&#40;</span>19<span class="sy0">,</span> INPUT<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
&nbsp;
  digitalWrite<span class="br0">&#40;</span>12<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Switch ON/OFF</span>
&nbsp;
  digitalWrite<span class="br0">&#40;</span>14<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  digitalWrite<span class="br0">&#40;</span>15<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  digitalWrite<span class="br0">&#40;</span>16<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  digitalWrite<span class="br0">&#40;</span>17<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  digitalWrite<span class="br0">&#40;</span>18<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
  digitalWrite<span class="br0">&#40;</span>19<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//Lumiere</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw4">void</span> loop<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  digitalWrite<span class="br0">&#40;</span>9<span class="sy0">,</span>HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="kw1">if</span><span class="br0">&#40;</span>digitalRead<span class="br0">&#40;</span>12<span class="br0">&#41;</span> <span class="sy0">==</span> LOW<span class="br0">&#41;</span><span class="br0">&#123;</span>
    timer <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span>LOW<span class="br0">&#41;</span><span class="sy0">;</span>
    uint8_t buf<span class="br0">&#91;</span>VW_MAX_MESSAGE_LEN<span class="br0">&#93;</span><span class="sy0">;</span>
    uint8_t buflen <span class="sy0">=</span> VW_MAX_MESSAGE_LEN<span class="sy0">;</span>
    <span class="kw4">char</span> msg<span class="br0">&#91;</span><span class="nu0">30</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
    <span class="co1">//vw_wait_rx();</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>vw_get_message<span class="br0">&#40;</span>buf<span class="sy0">,</span> <span class="sy0">&amp;</span>buflen<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
      digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span>HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>i<span class="sy0">&lt;</span>buflen<span class="sy0">;</span>i<span class="sy0">++</span><span class="br0">&#41;</span> msg<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> <span class="br0">&#123;</span>
        <span class="kw4">int</span> i<span class="sy0">;</span>
        <span class="kw4">char</span> vBuff<span class="br0">&#91;</span><span class="nu0">30</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
        <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> buflen<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
          msg<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> buf<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        strcat<span class="br0">&#40;</span>vBuff<span class="sy0">,</span> msg<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        Serial.<span class="me1">print</span><span class="br0">&#40;</span>vBuff<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        <span class="kw4">const</span> <span class="kw4">char</span> separator<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;-&quot;</span><span class="sy0">;</span>
        <span class="kw4">char</span><span class="sy0">*</span> accum<span class="sy0">;</span>
        <span class="kw4">char</span><span class="sy0">*</span> lecture <span class="sy0">=</span> strtok_r<span class="br0">&#40;</span>vBuff<span class="sy0">,</span>separator<span class="sy0">,&amp;</span>accum<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        Serial.<span class="me1">println</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw1">if</span><span class="br0">&#40;</span>lecture<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="st0">'A'</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
          lecture <span class="sy0">=</span> strtok_r<span class="br0">&#40;</span>NULL<span class="sy0">,</span>separator<span class="sy0">,&amp;</span>accum<span class="br0">&#41;</span><span class="sy0">;</span>
          <span class="kw4">int</span> nbr <span class="sy0">=</span> atoi<span class="br0">&#40;</span>lecture<span class="br0">&#41;</span><span class="sy0">;</span>
          <span class="kw1">if</span><span class="br0">&#40;</span>nbr <span class="sy0">==</span> 10<span class="br0">&#41;</span><span class="br0">&#123;</span>
            <span class="kw4">int</span> tps <span class="sy0">=</span> atoi<span class="br0">&#40;</span>strtok_r<span class="br0">&#40;</span>NULL<span class="sy0">,</span>separator<span class="sy0">,&amp;</span>accum<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            dodo<span class="br0">&#40;</span>tps<span class="br0">&#41;</span><span class="sy0">;</span>
          <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
            <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> j <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> j <span class="sy0">&lt;</span> nbr<span class="sy0">;</span> j<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
              <span class="kw4">int</span> pin <span class="sy0">=</span> atoi<span class="br0">&#40;</span>strtok_r<span class="br0">&#40;</span>NULL<span class="sy0">,</span>separator<span class="sy0">,&amp;</span>accum<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
              <span class="kw1">if</span><span class="br0">&#40;</span>atoi<span class="br0">&#40;</span>strtok_r<span class="br0">&#40;</span>NULL<span class="sy0">,</span>separator<span class="sy0">,&amp;</span>accum<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                digitalWrite<span class="br0">&#40;</span>pin<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
              <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
                digitalWrite<span class="br0">&#40;</span>pin<span class="sy0">,</span> LOW<span class="br0">&#41;</span><span class="sy0">;</span>
              <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
          <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
      digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span>LOW<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> k<span class="sy0">=</span><span class="nu0">14</span><span class="sy0">;</span> k<span class="sy0">&lt;</span><span class="nu0">20</span><span class="sy0">;</span> k<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
&nbsp;
      <span class="kw1">if</span><span class="br0">&#40;</span>digitalRead<span class="br0">&#40;</span>k<span class="br0">&#41;</span> <span class="sy0">==</span> HIGH <span class="sy0">&amp;&amp;</span> etat<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
        diff<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>digitalRead<span class="br0">&#40;</span>k<span class="br0">&#41;</span> <span class="sy0">==</span> LOW <span class="sy0">&amp;&amp;</span> etat<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
        diff<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
&nbsp;
      <span class="kw1">if</span><span class="br0">&#40;</span>diff<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
        digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span>HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
        delay<span class="br0">&#40;</span>5<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw1">if</span><span class="br0">&#40;</span>digitalRead<span class="br0">&#40;</span>k<span class="br0">&#41;</span> <span class="sy0">==</span> HIGH<span class="br0">&#41;</span><span class="br0">&#123;</span>
          digitalWrite<span class="br0">&#40;</span><span class="br0">&#40;</span>k<span class="sy0">-</span>12<span class="br0">&#41;</span><span class="sy0">,</span>LOW<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
          digitalWrite<span class="br0">&#40;</span><span class="br0">&#40;</span>k<span class="sy0">-</span>12<span class="br0">&#41;</span><span class="sy0">,</span>HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span>LOW<span class="br0">&#41;</span><span class="sy0">;</span>
        diff<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
&nbsp;
      <span class="kw1">if</span><span class="br0">&#40;</span>digitalRead<span class="br0">&#40;</span>k<span class="br0">&#41;</span> <span class="sy0">==</span> HIGH<span class="br0">&#41;</span><span class="br0">&#123;</span>
        etat<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
        etat<span class="br0">&#91;</span>k<span class="sy0">-</span>14<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
    digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span>LOW<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>timer <span class="sy0">==</span> 10<span class="br0">&#41;</span><span class="br0">&#123;</span>
      <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> k<span class="sy0">=</span><span class="nu0">2</span><span class="sy0">;</span> k<span class="sy0">&lt;</span><span class="nu0">8</span><span class="sy0">;</span> k<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        digitalWrite<span class="br0">&#40;</span>k<span class="sy0">,</span>LOW<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
      timer<span class="sy0">++;</span>
      digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
      delay<span class="br0">&#40;</span>20<span class="br0">&#41;</span><span class="sy0">;</span>
      digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span> LOW<span class="br0">&#41;</span><span class="sy0">;</span>
      delay<span class="br0">&#40;</span>980<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span>
  delay<span class="br0">&#40;</span>50<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw4">void</span> dodo<span class="br0">&#40;</span><span class="kw4">int</span> time<span class="br0">&#41;</span><span class="br0">&#123;</span>
  ancien <span class="sy0">=</span> millis<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span>time<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span> HIGH<span class="br0">&#41;</span><span class="sy0">;</span>
    delay<span class="br0">&#40;</span>20<span class="br0">&#41;</span><span class="sy0">;</span>
    digitalWrite<span class="br0">&#40;</span>10<span class="sy0">,</span> LOW<span class="br0">&#41;</span><span class="sy0">;</span>
    delay<span class="br0">&#40;</span>980<span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
  <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> k<span class="sy0">=</span><span class="nu0">2</span><span class="sy0">;</span> k<span class="sy0">&lt;</span><span class="nu0">8</span><span class="sy0">;</span> k<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    digitalWrite<span class="br0">&#40;</span>k<span class="sy0">,</span>LOW<span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p style="text-align: justify;">(Il y a dans ce code des choses &nbsp;&raquo; en plus &laquo;&nbsp;, c&#8217;est à dire un switch qui mis sur off me laisse 10 secondes de lumières avant de tout éteindre (Très pratique quand on s&#8217;absente), ainsi qu&#8217;une fonction &nbsp;&raquo; dodo &laquo;&nbsp;, l&#8217;ordre ressemble à &nbsp;&raquo; A-10-30 &laquo;&nbsp;, où 10 signifie que l&#8217;on veut la fonction dodo, et 30 le nombre de secondes au bout duquel les lumières s&#8217;éteignent, ça laisse le temps de poser le portable et de se glisser dans son lit)</p>
<h1>Module Android</h1>
<p style="text-align: justify;">Cette partie là est plutôt cadeau, il n&#8217;y a rien de vraiment très compliqué, il faut juste sous Android créer une application avec des boutons qui appellent des url. Libre à vous de vous compliquer un peu la tâche avec une interface graphique (Ce que je n&#8217;ai toujours pas eu le temps de faire :p).</p>
<div id="attachment_72" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-72 " title="Domotique Android 01" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_Android_01-300x199.jpg" alt="" width="300" height="199" /><p class="wp-caption-text">L&#39;appli magique, au look révolutionnaire.</p></div>
<p>&nbsp;</p>
<div id="attachment_73" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-73" title="Domotique Android 02" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Domotique_Android_02-300x199.jpg" alt="" width="300" height="199" /><p class="wp-caption-text">Test lointain d&#39;une interface graphique, que je finirai bien un jour, notez le système de navigation par onglet <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<p>&nbsp;</p>
<p style="text-align: justify;">Cet article touche à sa fin, j&#8217;ajouterai que bien entendu, les ajouts et variantes existent par millier, on peut imaginer le volet qui s&#8217;ouvre et se ferme en fonction de l&#8217;heure, de même même pour les lumières, et vous pouvez ajouter plein d&#8217;autre module, la toile du vidéo projecteur qui descend du plafond dans mon cas, gérer les télécommandes infrarouges pour allumer certain périphérique, la gestion d&#8217;une lumière multicolore, toujours bien pour les ambiances, la machine à café du matin, les arrosages automatique, etc. Tout cela pour une somme relativement modique, j&#8217;en ai eu pour 50 euros avec mon petit appartement (Bon, et quand même pas mal de temps de bricolage). Si il y a des câbles partout chez vous, le prix est dégressif <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">On pourrait aussi imaginer un système qui en plus de donner des ordres puisse nous donner l&#8217;état des lumières (Allumés, éteintes), pour par exemple pouvoir tout éteindre ou nous prévenir si vous êtes à plus de 50m de votre appartement. Tout est possible, et je vous souhaite vraiment d&#8217;avoir le temps de développer tout ça <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Pour ceux qui se poserait la question, mon système est en place depuis plusieurs mois dans mon appartement, et depuis qu&#8217;il est en route il n&#8217;y a eu aucun soucis ! N&#8217;hésitez pas à commenter si vous avez des questions <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<div class="like">
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.artandgj.com%2Ffr%2F2011%2F09%2F10%2Fla-domotique-chez-soi%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:62px; "></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.artandgj.com/fr/2011/09/10/la-domotique-chez-soi/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Voiture télécommandé par Internet</title>
		<link>http://blog.artandgj.com/fr/2011/09/04/voiture-telecommande-par-internet/</link>
		<comments>http://blog.artandgj.com/fr/2011/09/04/voiture-telecommande-par-internet/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 12:16:33 +0000</pubDate>
		<dc:creator>GJ</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://blog.artandgj.com/fr/?p=28</guid>
		<description><![CDATA[Ayant retrouvé ma chère et tendre voiture téléguidée fièrement acquis 7 ans plus tôt, il ne faisait aucun doute qu&#8217;elle allait subir quelques modifications sous peu. C&#8217;est maintenant chose faite, elle est devenue pilotable de n&#8217;importe quel endroit du monde. &#8230; <a href="http://blog.artandgj.com/fr/2011/09/04/voiture-telecommande-par-internet/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://blog.artandgj.com/wp-content/uploads/2011/09/Voiture_Desire.jpg"><img class="aligncenter size-large wp-image-30" title="Voiture Téléguidé" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Voiture_Desire-1024x682.jpg" alt="" width="584" height="388" /></a><span id="more-28"></span>Ayant retrouvé ma chère et tendre voiture téléguidée fièrement acquis 7 ans plus tôt, il ne faisait aucun doute qu&#8217;elle allait subir quelques modifications sous peu. C&#8217;est maintenant chose faite, elle est devenue pilotable de n&#8217;importe quel endroit du monde. Tout ça mis en oeuvre très facilement grâce à un téléphone sous Android !</p>
<p style="text-align: justify;">En effet, plutôt qu&#8217;une carte embarquée Linux (Ou autre) onéreuse, j&#8217;ai décidé d&#8217;utiliser un téléphone portable sous Android. Les avantages :</p>
<ul>
<li>Il dispose d&#8217;un GPS, des accéléromètres, d&#8217;une caméra, d&#8217;une puce 3g, du wifi, du bluetooth (Tout dépend du modèle, mais ceux-là sont relativement commun)</li>
<li>Développement simple sous Android avec Java</li>
<li>Son prix ! Si vous ne prenez pas le tout dernier modèle bien entendu, on peut facilement trouver des occasions sur eBay, et c&#8217;est encore moins cher si l&#8217;écran est fissuré</li>
<li>Facilité de communication avec un module Arduino</li>
</ul>
<p>Le but de ce projet était que n’importe qui, à partir d&#8217;une page web, puisse contrôler la voiture. Pour se faire, petit schéma :</p>
<div><img class="aligncenter size-full wp-image-34" title="Voiture_Arduino_Schema" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Voiture_Arduino_Schema.jpg" alt="" width="580" height="483" /></div>
<p style="text-align: justify;">Les servomoteurs de la voiture sont contrôlé par un module <a href="http://www.arduino.cc/">Arduino</a>, qui est connecté au téléphone Android se chargeant de la réception des commandes en socket. Il existe plusieurs techniques pour faire communiquer un arduino et un système Android, l&#8217;une un peu coûteuse (Et de très bonne qualité, préférez cette voie là) grâce à <a href="http://www.arduino.cc/en/Main/ArduinoBoardADK">l&#8217;usb Host</a>, le bluetooth/wifi(Coûteux, le sans fil est dommage quand les deux dispositifs sont à 5 cm) et l&#8217;autre qui ne vous coûtera rien en contrepartie d&#8217;un ping un peu élevé, j&#8217;ai nommé &#8216; l&#8217;audio &#8216; (Et c&#8217;est la méthode que j&#8217;utilise). En gros, les deux voies (Oui, en stereo) audio du téléphone sont connectés à deux entrées analogique de l&#8217;arduino. Il envoie successivement des salves à droite, puis à gauche. Le temps entre chaque salve de gauche à droite détermine une valeur pour la direction, et entre chaque salve de droite à gauche est déterminé la valeur de vitesse.</p>
<p style="text-align: justify;">Théoriquement, le téléphone se connecte ensuite au serveur (Car on ne connait pas son adresse IP, c&#8217;est donc le téléphone qui doit se connecter au serveur) et le client se connecte sur celui-ci via une interface web.</p>
<p style="text-align: justify;">Dans mon cas, j&#8217;ai fait le procédé inverse (Par facilité), le téléphone portable est connecté en wifi sur le serveur, et le client y accède via une redirection de port.</p>
<p style="text-align: justify;">Source de l&#8217;interface java du client :</p>
<div><div id="wpshdo_3" class="wp-synhighlighter-outer"><div class="wphigh_titre"><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block"> Code : Java</a><div class="wphigh_options"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</div></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">import</span> <span class="co2">java.awt.*</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.awt.event.ActionEvent</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.awt.event.ActionListener</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.awt.event.KeyEvent</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.awt.event.KeyListener</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.applet.*</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.DataInputStream</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.DataOutputStream</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.IOException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.Socket</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.UnknownHostException</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> CarServer <span class="kw1">extends</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aapplet+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Applet</span></a> <span class="kw1">implements</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Akeylistener+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">KeyListener</span></a>,<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aactionlistener+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ActionListener</span></a> <span class="br0">&#123;</span>
	<span class="co3">/**
	 *
	 */</span>
	<span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw4">long</span> serialVersionUID <span class="sy0">=</span> 1L<span class="sy0">;</span>
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Font</span></a> bigFont<span class="sy0">;</span>
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a> redColor<span class="sy0">;</span>
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a> greenColor<span class="sy0">;</span>
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a> bgColor<span class="sy0">;</span>
&nbsp;
	<span class="kw4">int</span> bas <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
	<span class="kw4">int</span> haut <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
	<span class="kw4">int</span> gauche <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
	<span class="kw4">int</span> droite <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
	<span class="kw4">int</span> vitesse <span class="sy0">=</span> <span class="nu0">3</span><span class="sy0">;</span>
	<span class="kw4">int</span> volant <span class="sy0">=</span> <span class="nu0">3</span><span class="sy0">;</span>
	<span class="kw4">int</span> fvitesse <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
	<span class="kw4">int</span> fvolant <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
	<span class="kw4">int</span> connecte <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a> btnCo<span class="sy0">;</span>
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a> btnLo<span class="sy0">;</span>
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Atextfield+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">TextField</span></a> nameField<span class="sy0">;</span>
&nbsp;
	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> IP <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp;
     <span class="kw1">public</span> <span class="kw4">void</span> init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    	 bigFont <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Font</span></a><span class="br0">&#40;</span><span class="st0">&quot;Arial&quot;</span>,<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Font</span></a>.<span class="me1">BOLD</span>,10<span class="br0">&#41;</span><span class="sy0">;</span>
    	 redColor <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a>.<span class="me1">red</span><span class="sy0">;</span>
    	 greenColor <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a>.<span class="me1">green</span><span class="sy0">;</span>
    	 setBackground<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a>.<span class="me1">white</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 setLayout<span class="br0">&#40;</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aflowlayout+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">FlowLayout</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 nameField <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Atextfield+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">TextField</span></a><span class="br0">&#40;</span><span class="st0">&quot;IP DU SERVEUR&quot;</span>,20<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// Renseignez l'IP du serveur</span>
    	 btnCo <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a><span class="br0">&#40;</span><span class="st0">&quot;LET'S TO THIS&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 btnLo <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a><span class="br0">&#40;</span><span class="st0">&quot;Local&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 add<span class="br0">&#40;</span>nameField<span class="br0">&#41;</span><span class="sy0">;</span>
    	 add<span class="br0">&#40;</span>btnLo<span class="br0">&#41;</span><span class="sy0">;</span>
    	 add<span class="br0">&#40;</span>btnCo<span class="br0">&#41;</span><span class="sy0">;</span>
    	 btnCo.<span class="me1">addActionListener</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 btnLo.<span class="me1">addActionListener</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 nameField.<span class="me1">addActionListener</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 nameField.<span class="me1">addKeyListener</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
     <span class="br0">&#125;</span>
&nbsp;
     <span class="kw1">public</span> <span class="kw4">void</span> stop<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span> 
&nbsp;
     <span class="br0">&#125;</span>
&nbsp;
     <span class="kw1">public</span> <span class="kw4">void</span> Gupdate<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    	 repaint<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
     <span class="br0">&#125;</span>
&nbsp;
     <span class="co1">//Merveilleuse interface graphique</span>
&nbsp;
     <span class="kw1">public</span> <span class="kw4">void</span> paint<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Agraphics+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Graphics</span></a> g<span class="br0">&#41;</span><span class="br0">&#123;</span>
    	 g.<span class="me1">setFont</span><span class="br0">&#40;</span>bigFont<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="kw1">if</span><span class="br0">&#40;</span>connecte <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    		 g.<span class="me1">drawString</span><span class="br0">&#40;</span><span class="st0">&quot;En attente de connexion...&quot;</span>,20,250<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>connecte <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    		 g.<span class="me1">drawString</span><span class="br0">&#40;</span><span class="st0">&quot;Connecté, c'est cool  &quot;</span>,20,250<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span><span class="kw1">if</span><span class="br0">&#40;</span>connecte <span class="sy0">==</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    		 g.<span class="me1">drawString</span><span class="br0">&#40;</span><span class="st0">&quot;Oh non, perte de la voiture... Peut-être un accident&quot;</span>,20,250<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span>
&nbsp;
    	 g.<span class="me1">drawString</span><span class="br0">&#40;</span><span class="st0">&quot;Volant : &quot;</span><span class="sy0">+</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainteger+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Integer</span></a>.<span class="me1">toString</span><span class="br0">&#40;</span>volant<span class="br0">&#41;</span>,55,80<span class="br0">&#41;</span><span class="sy0">;</span>
    	 g.<span class="me1">drawString</span><span class="br0">&#40;</span><span class="st0">&quot;Vitesse : &quot;</span><span class="sy0">+</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainteger+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Integer</span></a>.<span class="me1">toString</span><span class="br0">&#40;</span>vitesse<span class="br0">&#41;</span>,55,90<span class="br0">&#41;</span><span class="sy0">;</span>
    	 g.<span class="me1">fillRect</span><span class="br0">&#40;</span>55, 115, 60, 110<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">&gt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
    		 g.<span class="me1">setColor</span><span class="br0">&#40;</span>redColor<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">&lt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
    		 g.<span class="me1">setColor</span><span class="br0">&#40;</span>greenColor<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
    		 g.<span class="me1">setColor</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a>.<span class="me1">black</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span>
    	 g.<span class="me1">fillRect</span><span class="br0">&#40;</span>40, 110, 10, 20<span class="br0">&#41;</span><span class="sy0">;</span>
    	 g.<span class="me1">fillRect</span><span class="br0">&#40;</span>120, 110, 10, 20<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    	 <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">&gt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
    		 g.<span class="me1">setColor</span><span class="br0">&#40;</span>redColor<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">&lt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
    		 g.<span class="me1">setColor</span><span class="br0">&#40;</span>greenColor<span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
    		 g.<span class="me1">setColor</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acolor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Color</span></a>.<span class="me1">black</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	 <span class="br0">&#125;</span>
    	 g.<span class="me1">fillRect</span><span class="br0">&#40;</span>40, 210, 10, 20<span class="br0">&#41;</span><span class="sy0">;</span>
    	 g.<span class="me1">fillRect</span><span class="br0">&#40;</span>120, 210, 10, 20<span class="br0">&#41;</span><span class="sy0">;</span>
     <span class="br0">&#125;</span>
&nbsp;
     <span class="co1">//La classe du socket !</span>
&nbsp;
     <span class="kw1">public</span> <span class="kw1">class</span> ServerCar <span class="kw1">extends</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a> <span class="br0">&#123;</span>
     	<span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
     		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asocket+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Socket</span></a> socket <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
     		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adataoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DataOutputStream</span></a> dataOutputStream <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
     		<span class="co1">//DataInputStream dataInputStream = null;</span>
     		<span class="kw1">try</span> <span class="br0">&#123;</span>
     			socket <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asocket+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Socket</span></a><span class="br0">&#40;</span>IP, 8887<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// On se connecte</span>
     			<span class="co1">//dataInputStream = new DataInputStream(socket.getInputStream()); // Si jamais On veut recevoir des données</span>
     			dataOutputStream <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adataoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DataOutputStream</span></a><span class="br0">&#40;</span>socket.<span class="me1">getOutputStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
     			<span class="kw4">long</span> startTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
         		<span class="kw4">long</span> estimatedTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> startTime<span class="sy0">;</span>
     			<span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
     				connecte <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
     				estimatedTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> startTime<span class="sy0">;</span>
         			<span class="kw1">if</span><span class="br0">&#40;</span>estimatedTime <span class="sy0">&gt;</span> 50<span class="br0">&#41;</span><span class="br0">&#123;</span>
         				startTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
         				Gupdate<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
         				<span class="kw1">if</span><span class="br0">&#40;</span>haut <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					<span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">==</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
&nbsp;
         					<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">&lt;</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						vitesse<span class="sy0">++;</span>
         						<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">&gt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         							vitesse<span class="sy0">--;</span>
         						<span class="br0">&#125;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>bas <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					<span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">&gt;</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						vitesse<span class="sy0">--;</span>
         					<span class="br0">&#125;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
         					<span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">&gt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						vitesse<span class="sy0">--;</span>
         					<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">&lt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						vitesse<span class="sy0">++;</span>
         					<span class="br0">&#125;</span>
         				<span class="br0">&#125;</span>
&nbsp;
         				<span class="kw1">if</span><span class="br0">&#40;</span>gauche <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					<span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">==</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
&nbsp;
         					<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">&lt;</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						volant<span class="sy0">++;</span>
         					<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">&gt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						volant<span class="sy0">--;</span>
         					<span class="br0">&#125;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>droite <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					<span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">&gt;</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						volant<span class="sy0">--;</span>
         					<span class="br0">&#125;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
         					<span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">&gt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						volant<span class="sy0">--;</span>
         					<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">&lt;</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         						volant<span class="sy0">++;</span>
         					<span class="br0">&#125;</span>
         				<span class="br0">&#125;</span>
&nbsp;
         				<span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">==</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvitesse <span class="sy0">=</span> <span class="nu0">100</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">==</span> 4<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvitesse <span class="sy0">=</span> <span class="nu0">140</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">==</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvitesse <span class="sy0">=</span> <span class="nu0">200</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">==</span> 2<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvitesse <span class="sy0">=</span> <span class="nu0">250</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vitesse <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvitesse <span class="sy0">=</span> <span class="nu0">300</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span>
&nbsp;
         				<span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvolant <span class="sy0">=</span> <span class="nu0">100</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">==</span> 2<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvolant <span class="sy0">=</span> <span class="nu0">140</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">==</span> 3<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvolant <span class="sy0">=</span> <span class="nu0">200</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">==</span> 4<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvolant <span class="sy0">=</span> <span class="nu0">250</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>volant <span class="sy0">==</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
         					fvolant <span class="sy0">=</span> <span class="nu0">300</span><span class="sy0">;</span>
         				<span class="br0">&#125;</span>
         				dataOutputStream <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adataoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DataOutputStream</span></a><span class="br0">&#40;</span>socket.<span class="me1">getOutputStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
         				dataOutputStream.<span class="me1">writeUTF</span><span class="br0">&#40;</span>fvitesse<span class="sy0">+</span><span class="st0">&quot;/&quot;</span><span class="sy0">+</span>fvolant<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//On envoit tout ça à la voiture</span>
         				<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>fvitesse<span class="sy0">+</span><span class="st0">&quot;/&quot;</span><span class="sy0">+</span>fvolant<span class="br0">&#41;</span><span class="sy0">;</span>
     			<span class="br0">&#125;</span>
&nbsp;
     			<span class="co1">//</span>
     			<span class="br0">&#125;</span>
     		<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aunknownhostexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">UnknownHostException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
     			<span class="co1">// TODO Auto-generated catch bloc</span>
     			e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
     		<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
     			<span class="co1">// TODO Auto-generated catch block</span>
     			e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
     			connecte <span class="sy0">=</span> <span class="nu0">2</span><span class="sy0">;</span>
     		<span class="br0">&#125;</span>
     	<span class="br0">&#125;</span>
     <span class="br0">&#125;</span>
&nbsp;
     <span class="kw1">public</span> <span class="kw4">void</span> keyPressed<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Akeyevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">KeyEvent</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
         <span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 38<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	haut <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
         	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Haut !&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
         <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 40<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	bas <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
         <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 37<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	gauche <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
         <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 39<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	droite <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
         <span class="br0">&#125;</span>
     <span class="br0">&#125;</span>
&nbsp;
     <span class="kw1">public</span> <span class="kw4">void</span> keyReleased<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Akeyevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">KeyEvent</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
     	<span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 38<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	haut <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
         <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 40<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	bas <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
         <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 37<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	gauche <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
         <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>e.<span class="me1">getKeyCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 39<span class="br0">&#41;</span><span class="br0">&#123;</span>
         	droite <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
         <span class="br0">&#125;</span>
     <span class="br0">&#125;</span>
&nbsp;
	@Override
	<span class="kw1">public</span> <span class="kw4">void</span> actionPerformed<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aactionevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ActionEvent</span></a> evt<span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="co1">// TODO Auto-generated method stub</span>
		<span class="kw1">if</span> <span class="br0">&#40;</span>evt.<span class="me1">getSource</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> btnCo<span class="br0">&#41;</span><span class="br0">&#123;</span>
			<span class="kw1">new</span> ServerCar<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>evt.<span class="me1">getSource</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> btnLo<span class="br0">&#41;</span><span class="br0">&#123;</span>
			nameField.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;192.168.1.49&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
		IP <span class="sy0">=</span> nameField.<span class="me1">getText</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
&nbsp;
	@Override
	<span class="kw1">public</span> <span class="kw4">void</span> keyTyped<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Akeyevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">KeyEvent</span></a> arg0<span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="co1">// TODO Auto-generated method stub</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<div>A la reception, code source du côté Android :</div>
<div><div id="wpshdo_4" class="wp-synhighlighter-outer"><div class="wphigh_titre"><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block"> Code : Java</a><div class="wphigh_options"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</div></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">com.artandgj.carandroid</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.io.DataInputStream</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.DataOutputStream</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.IOException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.ServerSocket</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.Socket</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.UnknownHostException</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">android.app.Activity</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.os.Bundle</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.os.Handler</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.os.Looper</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.os.Message</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.util.Log</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.view.View</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.widget.Button</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> CarAndroidActivity <span class="kw1">extends</span> Activity <span class="br0">&#123;</span>
&nbsp;
	<span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> TAG <span class="sy0">=</span> <span class="st0">&quot;ThreadMessaging&quot;</span><span class="sy0">;</span>
	<span class="kw1">public</span> Handler mMainHandler, mChildHandler<span class="sy0">;</span>
	<span class="kw1">public</span> <span class="kw4">long</span> servo_dir <span class="sy0">=</span> <span class="nu0">200</span><span class="sy0">;</span>
    	<span class="kw1">public</span> <span class="kw4">long</span> servo_v <span class="sy0">=</span> <span class="nu0">100</span><span class="sy0">;</span>
&nbsp;
    @Override
    <span class="kw1">public</span> <span class="kw4">void</span> onCreate<span class="br0">&#40;</span>Bundle savedInstanceState<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">super</span>.<span class="me1">onCreate</span><span class="br0">&#40;</span>savedInstanceState<span class="br0">&#41;</span><span class="sy0">;</span>
        setContentView<span class="br0">&#40;</span>R.<span class="me1">layout</span>.<span class="me1">main</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a> btn_start <span class="sy0">=</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a><span class="br0">&#41;</span>findViewById<span class="br0">&#40;</span>R.<span class="me1">id</span>.<span class="me1">start</span><span class="br0">&#41;</span><span class="sy0">;</span>
    	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a> btn_stop <span class="sy0">=</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Button</span></a><span class="br0">&#41;</span>findViewById<span class="br0">&#40;</span>R.<span class="me1">id</span>.<span class="me1">stop</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw1">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a> soundthread <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a><span class="br0">&#40;</span><span class="kw1">new</span> SoundThread<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        btn_start.<span class="me1">setOnClickListener</span><span class="br0">&#40;</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a>.<span class="me1">OnClickListener</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            <span class="kw1">public</span> <span class="kw4">void</span> onClick<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> v<span class="br0">&#41;</span><span class="br0">&#123;</span>
            	soundthread.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            	<span class="kw1">new</span> ChildThread<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        btn_stop.<span class="me1">setOnClickListener</span><span class="br0">&#40;</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a>.<span class="me1">OnClickListener</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
           	<span class="kw1">public</span> <span class="kw4">void</span> onClick<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> v<span class="br0">&#41;</span><span class="br0">&#123;</span>
           		mChildHandler.<span class="me1">getLooper</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">quit</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
           		soundthread.<span class="me1">destroy</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
           	<span class="br0">&#125;</span>
        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">class</span> ChildThread <span class="kw1">extends</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a> <span class="br0">&#123;</span>
        <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        	<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aserversocket+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ServerSocket</span></a> serverSocket <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asocket+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Socket</span></a> socket <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adatainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DataInputStream</span></a> dataInputStream <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adataoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DataOutputStream</span></a> dataOutputStream <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> temp <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
&nbsp;
            <span class="kw1">try</span> <span class="br0">&#123;</span>
             serverSocket <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aserversocket+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ServerSocket</span></a><span class="br0">&#40;</span>8887<span class="br0">&#41;</span><span class="sy0">;</span>
             <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Listening :8887&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
             <span class="co1">// TODO Auto-generated catch block</span>
             e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
&nbsp;
            <span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            	<span class="kw1">try</span> <span class="br0">&#123;</span>
            		socket <span class="sy0">=</span> serverSocket.<span class="me1">accept</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            		dataInputStream <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adatainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DataInputStream</span></a><span class="br0">&#40;</span>socket.<span class="me1">getInputStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            		<span class="co1">//dataOutputStream = new DataOutputStream(socket.getOutputStream());</span>
            		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;ip: &quot;</span> <span class="sy0">+</span> socket.<span class="me1">getInetAddress</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            		<span class="co1">// System.out.println(&quot;message: &quot; + dataInputStream.readUTF());</span>
            		<span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            			dataInputStream <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adatainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DataInputStream</span></a><span class="br0">&#40;</span>socket.<span class="me1">getInputStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        				temp <span class="sy0">=</span> dataInputStream.<span class="me1">readUTF</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        				<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> str<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">=</span> temp.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&quot;/&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        				servo_dir <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Along+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Long</span></a><span class="br0">&#40;</span>str<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        				servo_v <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Along+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Long</span></a><span class="br0">&#40;</span>str<span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        				Log.<span class="me1">i</span><span class="br0">&#40;</span>TAG, servo_v <span class="sy0">+</span> <span class="st0">&quot; - &quot;</span> <span class="sy0">+</span> servo_dir<span class="br0">&#41;</span><span class="sy0">;</span>
            		<span class="br0">&#125;</span>
            		<span class="co1">//dataOutputStream.writeUTF(&quot;Hello!&quot;);</span>
            	<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            		<span class="co1">// TODO Auto-generated catch block</span>
            		e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            	<span class="br0">&#125;</span>
            	<span class="kw1">finally</span><span class="br0">&#123;</span>
            		<span class="kw1">if</span><span class="br0">&#40;</span> socket<span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            			<span class="kw1">try</span> <span class="br0">&#123;</span>
            				socket.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            				<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Fermeture&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            			<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            				<span class="co1">// TODO Auto-generated catch block</span>
            				e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            			<span class="br0">&#125;</span>
            		<span class="br0">&#125;</span>
            		<span class="kw1">if</span><span class="br0">&#40;</span> dataInputStream<span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            			<span class="kw1">try</span> <span class="br0">&#123;</span>
            				dataInputStream.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            			<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            				<span class="co1">// TODO Auto-generated catch block</span>
            				e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            			<span class="br0">&#125;</span>
            		<span class="br0">&#125;</span>
&nbsp;
            		<span class="kw1">if</span><span class="br0">&#40;</span> dataOutputStream<span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            			<span class="kw1">try</span> <span class="br0">&#123;</span>
            				dataOutputStream.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            			<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            				<span class="co1">// TODO Auto-generated catch block</span>
            				e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            			<span class="br0">&#125;</span>
            		<span class="br0">&#125;</span>
            	<span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">class</span> SoundThread <span class="kw1">implements</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a> <span class="br0">&#123;</span>
&nbsp;
    <span class="co1">//Communication avec l'Arduino par la sortie sonore</span>
&nbsp;
    	AndroidAudioDevice device <span class="sy0">=</span> <span class="kw1">new</span> AndroidAudioDevice<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        @Override
        <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        	<span class="kw1">final</span> <span class="kw4">float</span> frequency <span class="sy0">=</span> <span class="nu0">20</span><span class="sy0">;</span>
            <span class="kw4">float</span> increment <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">float</span><span class="br0">&#41;</span><span class="br0">&#40;</span>2<span class="sy0">*</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Amath+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Math</span></a>.<span class="me1">PI</span><span class="br0">&#41;</span> <span class="sy0">*</span> frequency <span class="sy0">/</span> <span class="nu0">44100</span><span class="sy0">;</span> <span class="co1">// angular increment for each sample</span>
            <span class="kw4">float</span> angle <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            <span class="kw4">float</span> samples<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">float</span><span class="br0">&#91;</span>1024<span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp;
            <span class="kw4">int</span> tour <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            <span class="co1">//int fois = 100;</span>
            <span class="kw4">boolean</span> continu <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span>
&nbsp;
            angle <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    		<span class="kw1">for</span><span class="br0">&#40;</span> <span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> samples.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span> <span class="br0">&#41;</span><span class="br0">&#123;</span>
                samples<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">float</span><span class="br0">&#41;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Amath+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Math</span></a>.<span class="me1">sin</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span><span class="sy0">;</span>
                angle <span class="sy0">+=</span> increment<span class="sy0">;</span>
            <span class="br0">&#125;</span>
&nbsp;
    		<span class="kw4">long</span> startTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    		<span class="kw4">long</span> estimatedTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> startTime<span class="sy0">;</span>
&nbsp;
    		Looper.<span class="me1">prepare</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    		mChildHandler <span class="sy0">=</span> <span class="kw1">new</span> Handler<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw1">public</span> <span class="kw4">void</span> handleMessage<span class="br0">&#40;</span>Message msg<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                	servo_dir <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Along+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Long</span></a>.<span class="me1">parseLong</span><span class="br0">&#40;</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a><span class="br0">&#41;</span> msg.<span class="me1">obj</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
            <span class="kw1">while</span><span class="br0">&#40;</span>continu<span class="br0">&#41;</span><span class="br0">&#123;</span>
            	<span class="kw1">if</span><span class="br0">&#40;</span>tour <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
            		estimatedTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> startTime<span class="sy0">;</span>
            		<span class="kw1">if</span><span class="br0">&#40;</span>estimatedTime <span class="sy0">&gt;</span> servo_dir<span class="br0">&#41;</span><span class="br0">&#123;</span>
	            		device.<span class="me1">SetStereo</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="sy0">;</span>
	                    device.<span class="me1">writeSamples</span><span class="br0">&#40;</span>samples<span class="br0">&#41;</span><span class="sy0">;</span>
	                    startTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	                    tour <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
	                    Log.<span class="me1">i</span><span class="br0">&#40;</span>TAG, <span class="st0">&quot;Tac&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            		<span class="br0">&#125;</span>
            	<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
            		estimatedTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> startTime<span class="sy0">;</span>
            		<span class="kw1">if</span><span class="br0">&#40;</span>estimatedTime <span class="sy0">&gt;</span> servo_v<span class="br0">&#41;</span><span class="br0">&#123;</span>
	            		device.<span class="me1">SetStereo</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="sy0">;</span>
	                    device.<span class="me1">writeSamples</span><span class="br0">&#40;</span>samples<span class="br0">&#41;</span><span class="sy0">;</span>
	                    startTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	                    tour <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            		<span class="br0">&#125;</span>
            	<span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
            Looper.<span class="me1">loop</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
&nbsp;
<span class="br0">&#125;</span></pre></div></div></p>
<p>Classe Android pour le son :</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div class="wphigh_titre"><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block"> Code : Java</a><div class="wphigh_options"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</div></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">com.artandgj.carandroid</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">android.media.AudioFormat</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.media.AudioManager</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">android.media.AudioTrack</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> AndroidAudioDevice<span class="br0">&#123;</span>
   AudioTrack track<span class="sy0">;</span>
   <span class="kw4">short</span><span class="br0">&#91;</span><span class="br0">&#93;</span> buffer <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">short</span><span class="br0">&#91;</span>1024<span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp;
   <span class="kw1">public</span> AndroidAudioDevice<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
      <span class="kw4">int</span> minSize <span class="sy0">=</span>AudioTrack.<span class="me1">getMinBufferSize</span><span class="br0">&#40;</span> 44100, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aaudioformat+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">AudioFormat</span></a>.<span class="me1">CHANNEL_CONFIGURATION_STEREO</span>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aaudioformat+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">AudioFormat</span></a>.<span class="me1">ENCODING_PCM_16BIT</span><span class="br0">&#41;</span><span class="sy0">;</span>
      track <span class="sy0">=</span> <span class="kw1">new</span> AudioTrack<span class="br0">&#40;</span> AudioManager.<span class="me1">STREAM_MUSIC</span>, 44100,
                                        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aaudioformat+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">AudioFormat</span></a>.<span class="me1">CHANNEL_CONFIGURATION_STEREO</span>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aaudioformat+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">AudioFormat</span></a>.<span class="me1">ENCODING_PCM_16BIT</span>,
                                        minSize, AudioTrack.<span class="me1">MODE_STREAM</span><span class="br0">&#41;</span><span class="sy0">;</span>
      track.<span class="me1">play</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
   <span class="br0">&#125;</span>	   
&nbsp;
   <span class="kw1">public</span> <span class="kw4">void</span> writeSamples<span class="br0">&#40;</span><span class="kw4">float</span><span class="br0">&#91;</span><span class="br0">&#93;</span> samples<span class="br0">&#41;</span>
   <span class="br0">&#123;</span>
      fillBuffer<span class="br0">&#40;</span> samples <span class="br0">&#41;</span><span class="sy0">;</span>
      track.<span class="me1">write</span><span class="br0">&#40;</span> buffer, 0, samples.<span class="me1">length</span> <span class="br0">&#41;</span><span class="sy0">;</span>
   <span class="br0">&#125;</span>
&nbsp;
   <span class="kw1">private</span> <span class="kw4">void</span> fillBuffer<span class="br0">&#40;</span> <span class="kw4">float</span><span class="br0">&#91;</span><span class="br0">&#93;</span> samples <span class="br0">&#41;</span>
   <span class="br0">&#123;</span>
      <span class="kw1">if</span><span class="br0">&#40;</span> buffer.<span class="me1">length</span> <span class="sy0">&lt;</span> samples.<span class="me1">length</span> <span class="br0">&#41;</span>
         buffer <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">short</span><span class="br0">&#91;</span>samples.<span class="me1">length</span><span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp;
      <span class="kw1">for</span><span class="br0">&#40;</span> <span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> samples.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span> <span class="br0">&#41;</span>
         buffer<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">short</span><span class="br0">&#41;</span><span class="br0">&#40;</span>samples<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">*</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ashort+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Short</span></a>.<span class="me1">MAX_VALUE</span><span class="br0">&#41;</span><span class="sy0">;;</span>
   <span class="br0">&#125;</span>
&nbsp;
   <span class="kw1">public</span> <span class="kw4">void</span> SetStereo<span class="br0">&#40;</span><span class="kw4">int</span> son<span class="br0">&#41;</span><span class="br0">&#123;</span>
	   <span class="kw1">if</span><span class="br0">&#40;</span>son <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
		   track.<span class="me1">setStereoVolume</span><span class="br0">&#40;</span>0, 1<span class="br0">&#41;</span><span class="sy0">;</span>
	   <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
		   track.<span class="me1">setStereoVolume</span><span class="br0">&#40;</span>1, 0<span class="br0">&#41;</span><span class="sy0">;</span>
	   <span class="br0">&#125;</span>
   <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Et le code du côté de l&#8217;arduino :</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div class="wphigh_titre"><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block"> Code : Arduino</a><div class="wphigh_options"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.artandgj.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</div></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="c" style="font-family:monospace;"><span class="co2">#include &lt;Servo.h&gt; </span>
&nbsp;
<span class="kw4">const</span> <span class="kw4">int</span> analogR <span class="sy0">=</span> A5<span class="sy0">;</span>
<span class="kw4">const</span> <span class="kw4">int</span> analogL <span class="sy0">=</span> A4<span class="sy0">;</span>
<span class="kw4">const</span> <span class="kw4">int</span> analogOutPin <span class="sy0">=</span> <span class="nu0">9</span><span class="sy0">;</span>
&nbsp;
<span class="kw4">int</span> valeursR<span class="br0">&#91;</span>10<span class="br0">&#93;</span><span class="sy0">;</span>
<span class="kw4">int</span> totalR <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw4">int</span> etatR <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
<span class="kw4">int</span> valeursL<span class="br0">&#91;</span>10<span class="br0">&#93;</span><span class="sy0">;</span>
<span class="kw4">int</span> totalL <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw4">int</span> etatL <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
<span class="kw4">int</span> pETAT <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw4">int</span> ETAT <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
<span class="kw4">unsigned</span> <span class="kw4">long</span> time<span class="sy0">;</span>
<span class="kw4">unsigned</span> <span class="kw4">long</span> vtime<span class="sy0">;</span>
&nbsp;
<span class="kw4">int</span> sensorValueR <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw4">int</span> sensorValueL <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
Servo SVitesse<span class="sy0">;</span>
Servo SDirection<span class="sy0">;</span>
&nbsp;
<span class="kw4">void</span> setup<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
  Serial.<span class="me1">begin</span><span class="br0">&#40;</span>9600<span class="br0">&#41;</span><span class="sy0">;</span>
  time <span class="sy0">=</span> micros<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  SDirection.<span class="me1">attach</span><span class="br0">&#40;</span>10<span class="br0">&#41;</span><span class="sy0">;</span>
  SVitesse.<span class="me1">attach</span><span class="br0">&#40;</span>11<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
  SVitesse.<span class="me1">write</span><span class="br0">&#40;</span>90<span class="br0">&#41;</span><span class="sy0">;</span>
  SDirection.<span class="me1">write</span><span class="br0">&#40;</span>80<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw4">void</span> loop<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
  <span class="coMULTI">/*Serial.print(0xff, BYTE); // Sync byte
  Serial.print((sensorValue &gt;&gt;  &amp; 0xff, BYTE);
  Serial.print(sensorValue &amp; 0xff, BYTE);*/</span>
&nbsp;
  sensorValueR <span class="sy0">=</span> analogRead<span class="br0">&#40;</span>analogR<span class="br0">&#41;</span><span class="sy0">*</span><span class="nu0">15</span><span class="sy0">;</span>
  sensorValueL <span class="sy0">=</span> analogRead<span class="br0">&#40;</span>analogL<span class="br0">&#41;</span><span class="sy0">*</span><span class="nu0">15</span><span class="sy0">;</span>  
&nbsp;
  <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;=</span> <span class="nu0">8</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    valeursR<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> valeursR<span class="br0">&#91;</span>i<span class="sy0">+</span>1<span class="br0">&#93;</span><span class="sy0">;</span>
    valeursL<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> valeursL<span class="br0">&#91;</span>i<span class="sy0">+</span>1<span class="br0">&#93;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">if</span><span class="br0">&#40;</span>sensorValueR <span class="sy0">&gt;</span> 40<span class="br0">&#41;</span><span class="br0">&#123;</span>
    valeursR<span class="br0">&#91;</span>9<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
  <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
    valeursR<span class="br0">&#91;</span>9<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">if</span><span class="br0">&#40;</span>sensorValueL <span class="sy0">&gt;</span> 40<span class="br0">&#41;</span><span class="br0">&#123;</span>
    valeursL<span class="br0">&#91;</span>9<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
  <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
    valeursL<span class="br0">&#91;</span>9<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  totalR <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
  <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;=</span> <span class="nu0">9</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    totalR <span class="sy0">+=</span> valeursR<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  totalL <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
  <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;=</span> <span class="nu0">9</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    totalL <span class="sy0">+=</span> valeursL<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  pETAT <span class="sy0">=</span> ETAT<span class="sy0">;</span>
&nbsp;
  <span class="kw1">if</span><span class="br0">&#40;</span>totalR <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>etatR <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
      etatR <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>totalR <span class="sy0">==</span> 10<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>etatR <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
      etatR <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
      ETAT <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
      check<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">if</span><span class="br0">&#40;</span>totalL <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>etatL <span class="sy0">==</span> 1<span class="br0">&#41;</span><span class="br0">&#123;</span>
      etatL <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>totalL <span class="sy0">==</span> 10<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>etatL <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
      etatL <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
      ETAT <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
      check<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span>     
&nbsp;
  delayMicroseconds<span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw4">void</span> check<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  <span class="kw1">if</span><span class="br0">&#40;</span>pETAT <span class="sy0">!=</span> ETAT<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span>pETAT <span class="sy0">==</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
      vtime <span class="sy0">=</span> micros<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> time<span class="sy0">;</span>
      vtime <span class="sy0">=</span> map<span class="br0">&#40;</span>vtime<span class="sy0">,</span> 60000<span class="sy0">,</span> 300000<span class="sy0">,</span> 0<span class="sy0">,</span> 20<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
      <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&lt;</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
        SDirection.<span class="me1">write</span><span class="br0">&#40;</span>110<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> <span class="nu0">5</span> <span class="sy0">&amp;&amp;</span> vtime <span class="sy0">&lt;</span> <span class="nu0">8</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="co1">//SDirection.write(100);</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> 8 <span class="sy0">&amp;&amp;</span> vtime <span class="sy0">&lt;</span> 13<span class="br0">&#41;</span><span class="br0">&#123;</span>
        SDirection.<span class="me1">write</span><span class="br0">&#40;</span>90<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> <span class="nu0">13</span> <span class="sy0">&amp;&amp;</span> vtime <span class="sy0">&lt;</span> <span class="nu0">18</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="co1">//SDirection.write(80);</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> 17<span class="br0">&#41;</span><span class="br0">&#123;</span>
        SDirection.<span class="me1">write</span><span class="br0">&#40;</span>70<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
        SDirection.<span class="me1">write</span><span class="br0">&#40;</span>80<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
&nbsp;
      time <span class="sy0">=</span> micros<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
      <span class="co1">//Vitesse</span>
      vtime <span class="sy0">=</span> micros<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> time<span class="sy0">;</span>
      vtime <span class="sy0">=</span> map<span class="br0">&#40;</span>vtime<span class="sy0">,</span> 60000<span class="sy0">,</span> 300000<span class="sy0">,</span> 0<span class="sy0">,</span> 20<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
      <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&lt;</span> 5<span class="br0">&#41;</span><span class="br0">&#123;</span>
        SVitesse.<span class="me1">write</span><span class="br0">&#40;</span>70<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> <span class="nu0">5</span> <span class="sy0">&amp;&amp;</span> vtime <span class="sy0">&lt;</span> <span class="nu0">8</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="co1">//SVitesse.write(80);</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> 8 <span class="sy0">&amp;&amp;</span> vtime <span class="sy0">&lt;</span> 13<span class="br0">&#41;</span><span class="br0">&#123;</span>
        SVitesse.<span class="me1">write</span><span class="br0">&#40;</span>90<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> <span class="nu0">13</span> <span class="sy0">&amp;&amp;</span> vtime <span class="sy0">&lt;</span> <span class="nu0">18</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="co1">//SVitesse.write(100);</span>
      <span class="br0">&#125;</span><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>vtime <span class="sy0">&gt;</span> 17<span class="br0">&#41;</span><span class="br0">&#123;</span>
        SVitesse.<span class="me1">write</span><span class="br0">&#40;</span>110<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
        SVitesse.<span class="me1">write</span><span class="br0">&#40;</span>90<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
&nbsp;
      time <span class="sy0">=</span> micros<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>A savoir que les codes sources de ce projet là ne sont pas très très &nbsp;&raquo; optimisés &laquo;&nbsp;, elles sont plus là pour inspirer (Haha).</p>
<div id="attachment_77" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.artandgj.com/wp-content/uploads/2011/09/Arduino_Voiture.jpg"><img class="size-medium wp-image-77" title="Arduino Voiture" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Arduino_Voiture-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Pour le fun, une photo de &#39; l&#39;arduino embarqué &#39;</p></div>
<p>Au menu de la prochaine mise à jour, faire le retour caméra et rendre la voiture autonome grâce au GPS <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>

<div class="like">
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.artandgj.com%2Ffr%2F2011%2F09%2F04%2Fvoiture-telecommande-par-internet%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:62px; "></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.artandgj.com/fr/2011/09/04/voiture-telecommande-par-internet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cheap 3d</title>
		<link>http://blog.artandgj.com/fr/2011/09/04/cheap-3d/</link>
		<comments>http://blog.artandgj.com/fr/2011/09/04/cheap-3d/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 22:03:50 +0000</pubDate>
		<dc:creator>GJ</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Stereoscopie]]></category>

		<guid isPermaLink="false">http://blog.artandgj.com/?p=14&#038;lang=fr</guid>
		<description><![CDATA[Pour les besoins d&#8217;un projet, j&#8217;avais besoin d&#8217;avoir rapidement sous la main un casque de réalité virtuelle 3d. J&#8217;aurai pu me procurer celui-ci, ou bien encore celui-là, mais leur sortie n&#8217;est prévue que dans quelques mois et leur prix n&#8217;est pas &#8230; <a href="http://blog.artandgj.com/fr/2011/09/04/cheap-3d/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-20" title="Lunette 3d" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Casque_03-1024x682.jpg" alt="" width="584" height="388" /></p>
<p style="text-align: justify;"><span id="more-14"></span>Pour les besoins d&#8217;un projet, j&#8217;avais besoin d&#8217;avoir rapidement sous la main un casque de réalité virtuelle 3d. J&#8217;aurai pu me procurer <a href="http://www.clubic.com/materiel-video/actualite-443542-sony-hmz-t1-personal-3d-viewer-casque-video.html">celui-ci</a>, ou bien encore <a href="http://www.youtube.com/watch?v=INgcRCyFY90">celui-là</a>, mais leur sortie n&#8217;est prévue que dans quelques mois et leur prix n&#8217;est pas des plus attractif (Du moins pour des petites expérimentations comme les miennes, la solution que je vais détailler plus bas est à des lieux des performances de ces modèles).</p>
<p style="text-align: justify;">Le principe est très simple ; Un petit écran de 7 pouces, deux lentilles macro (x10, 52mm) permettant aux yeux de voir de très près (10 centimètres environ) et du papier pour isoler les deux parties de l&#8217;écran. On obtient donc une vision en &nbsp;&raquo; 3d &laquo;&nbsp;, de la résolution de votre écran divisé par deux dans le sens horizontal (Dans mon cas, 400px/400px par oeil environ, oui ça pique les yeux). Ce petit bricolage ne vaut le coup bien entendu que si on a déjà le matériel, je doute que dépenser 150 euros dans un écran 7 pouces de 800px de large dans cet unique but ne soit un très bon investissement <img src='http://blog.artandgj.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>

<a href='http://blog.artandgj.com/fr/2011/09/04/cheap-3d/decoupage_01/' title='Decoupage 1'><img width="150" height="150" src="http://blog.artandgj.com/wp-content/uploads/2011/09/decoupage_01-150x150.jpg" class="attachment-thumbnail" alt="Decoupage 1" title="Decoupage 1" /></a>
<a href='http://blog.artandgj.com/fr/2011/09/04/cheap-3d/decoupage_02/' title='Decoupage 2'><img width="150" height="150" src="http://blog.artandgj.com/wp-content/uploads/2011/09/decoupage_02-150x150.jpg" class="attachment-thumbnail" alt="Decoupage 2" title="Decoupage 2" /></a>
<a href='http://blog.artandgj.com/fr/2011/09/04/cheap-3d/casque_03/' title='Lunettes 3d'><img width="150" height="150" src="http://blog.artandgj.com/wp-content/uploads/2011/09/Casque_03-150x150.jpg" class="attachment-thumbnail" alt="Lunettes 3d" title="Lunettes 3d" /></a>


<div class="like">
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.artandgj.com%2Ffr%2F2011%2F09%2F04%2Fcheap-3d%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:62px; "></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.artandgj.com/fr/2011/09/04/cheap-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le pourquoi du comment</title>
		<link>http://blog.artandgj.com/fr/2011/09/03/le-pourquoi-du-comment/</link>
		<comments>http://blog.artandgj.com/fr/2011/09/03/le-pourquoi-du-comment/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 20:29:13 +0000</pubDate>
		<dc:creator>GJ</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://blog.artandgj.com/?p=8&#038;lang=fr</guid>
		<description><![CDATA[Et bien voilà, face à un blog vide et ayant passé une partie de la journée à peser le pour ou le contre de telle ou telle plateforme, de tel ou tel choix graphique, il me faut maintenant le remplir &#8230; <a href="http://blog.artandgj.com/fr/2011/09/03/le-pourquoi-du-comment/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Et bien voilà, face à un blog vide et ayant passé une partie de la journée à peser le pour ou le contre de telle ou telle plateforme, de tel ou tel choix graphique, il me faut maintenant le remplir !</p>
<p style="text-align: justify;"><em>Et ce n&#8217;est pas facile.</em></p>
<p style="text-align: justify;">Non, loin de là ! Mais ce premier article est une sorte d&#8217;engagement pour l&#8217;avenir, une sorte d&#8217;auto-motivation. Surtout quand on s&#8217;est fixé de rédiger ce blog en <del>quatre</del> deux langues (Français et anglais).</p>
<p style="text-align: justify;">Au &#8211; futur &#8211; menu, de (belles ?) images, du bricolage, de la programmation, de l&#8217;électronique, du piano et pourquoi pas des legos. Un peu tout ce que j&#8217;aime, et j&#8217;espère que ça vous plaira aussi. Sincèrement.</p>

<div class="like">
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.artandgj.com%2Ffr%2F2011%2F09%2F03%2Fle-pourquoi-du-comment%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:62px; "></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.artandgj.com/fr/2011/09/03/le-pourquoi-du-comment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

