<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>GeckoGeek.fr</title>
	
	<link>http://www.geckogeek.fr</link>
	<description>Paradigme d'un lézard</description>
	<lastBuildDate>Sat, 05 Nov 2011 22:49:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Geckogeek" /><feedburner:info uri="geckogeek" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>WinGineer Edition 2011</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/q6zrXRNfnVg/wingineer-edition-2011.html</link>
		<comments>http://www.geckogeek.fr/wingineer-edition-2011.html#comments</comments>
		<pubDate>Wed, 01 Dec 2010 17:22:07 +0000</pubDate>
		<dc:creator>Lya</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Challenge]]></category>
		<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[WinGineer]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1557</guid>
		<description><![CDATA[Avis aux lycéens et aux passionnés de tout âge de la programmation :  la date d'ouverture officielle pour le challenge WinGineer 2011 est fixée au 4 décembre. Les inscriptions sont déjà ouvertes et vous pouvez commencer dès maintenant à vous faire la main !]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fwingineer-edition-2011.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fwingineer-edition-2011.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=Challenge,Intelligence+Artificielle,Programmation,WinGineer&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Avis aux lycéens et aux passionnés de tout âge de la programmation :  la date d&#8217;ouverture officielle pour le <b>challenge WinGineer 2011</b> est fixée au <b>4 décembre 2010</b>. Les inscriptions sont déjà ouvertes et vous pouvez commencer dès maintenant à vous faire la main !</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2009/12/wingineer_logo2010.png" alt="" title="wingineer_logo2010" width="366" height="92" class="aligncenter size-full wp-image-653" /></p>
<h2>Quoi de neuf pour cette nouvelle édition ?</h2>
<h3>Thématique</h3>
<p>Il est loin le temps des papillons, et les étoiles, quant-à elles, sont parties les rejoindre. Maintenant : place aux <b>duels d&#8217;unités blindées</b> ! Ca ne rigole plus ^^.</p>
<p>Nous sommes donc toujours dans un <b>univers de tanks</b>, mais maintenant votre hégémonie sur la moitié du territoire est symbolisée par un drapeau que vous devez protéger. Pour gagner, il faut conquérir et <b>détruire le drapeau adverse</b> afin de régner sur l&#8217;ensemble du territoire (&#8220;Minus, cette nuit, nous avons réussi !&#8221; Mouahaha). </p>
<p>Pour cela, vous disposez d&#8217;une unité blindée composée de <b>5 éléments mobiles</b>. Vous choisissez vous-même le type de chacun de vos véhicules parmi deux catégories :<br />
- les <b>tanks</b> (orienté attaque) : ils peuvent tirer et avancent lentement<br />
- les <b>bulldozers</b> (orienté défense) : ils construisent et détruisent des murs de protection (bunkers) et ont une vitesse de déplacement plus élevée que celle des tanks.</p>
<p>Attention aux choix, ça fait partie de la stratégie ;-] (le dosage tank / bulldozer est particulièrement intéressant d&#8217;ailleurs). </p>
<p>Votre rôle, c&#8217;est de décrire le <b>comportement de votre unité mobile</b>. En d&#8217;autres termes, vous devez créer cinq <b>IA (Intelligence Artificielle) de pilotage</b>, une par véhicule.</p>
<p>Voici une petite vidéo pour illustrer tout cela : </p>
<p><center><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/03FFtxrAdJs" frameborder="0"></iframe></center></p>
<h3>Les défis et le classement</h3>
<p>Ca c&#8217;est le gros <b>changement</b> de la troisième édition. Vous n&#8217;êtes plus un tank gladiateur essayant d&#8217;être le dernier survivant de l&#8217;arène en faisant des boulimies d&#8217;étoiles. Vous êtes désormais le commandant d&#8217;une unité stratège blindée et <b>vous défiez dans des duels les autres challengers</b> que vous aurez habilement choisis. Encore un level-up :-].</p>
<p>Tout se joue en <b>côte</b> et en <b>points</b>, à un rythme d&#8217;une vingtaine de duels par jour au maximum.</p>
<p><b>Les points</b> : ce sont eux qui <b>déterminent le classement</b>. Plus vous avez de points, plus vous êtes bien classé (logique en soi). Pour gagner des points, il vous faut défier des adversaires. En cas de victoire (drapeau adverse écrabouillé), plus la côte de l&#8217;adversaire est haute plus vous gagnerez des points (points gagnés = 1 point + côte adverse). Autrement (votre drapeau en bouillie, ou match nulle) vous ne perdez pas de points (tentez donc David contre Goliath, ça rapportera le gros lot ! … si vous gagnez :p) et l&#8217;adversaire n&#8217;en gagne pas car ce n&#8217;est pas lui qui a défié.<br />
En revanche, à chaque défis <b>les côtes</b> des deux opposants <b>évoluent en fonction de l&#8217;issue du duel</b>. La côte représente le <b>total des victoires sur les dix derniers duels</b>.<br />
Ici aussi, la stratégie est de mise.  Etudiez bien les vidéos des anciens duels des challengers avant de les provoquer en duel.</p>
<p>Le classement est affiché en live sur le site et les vidéos des duels sont postées sur la chaine Youtube.</p>
<p>Pour les candidats lycéens en terminale, un <b>ticket pour la finale</b> vous sera attribué si votre score cumulé ou bien votre score moyen sur 10 parties dépasse un certain seuil.</p>
<p>Il n&#8217;est donc pas obligatoire d&#8217;être le meilleur au classement pour obtenir une place en finale : le but est de récompenser le sens de l&#8217;observation, l&#8217;analyse, la capacité d&#8217;apprentissage, la persévérance, l&#8217;enthousiasme et la créativité. Ce sont des <b>qualités essentielles</b> pour la formation et le métier d&#8217;ingénieur.</p>
<h2>Qui peut participer ?</h2>
<p>Le challenge s&#8217;adresse en particulier <b>aux lycéens de terminale</b> (S, STI ou STL) qui souhaitent intégrer l&#8217;école après avoir passé leur BAC (poule 1A).</p>
<p>Pour <b>tous les autres</b>, curieux ou passionnés d&#8217;informatique, vous êtes invités à vous défier et à vous amuser dans le groupe fun (poule libre) spécialement conçu pour vous !</p>
<p><b>Le mot d&#8217;ordre du challenge pour tous : have fun !</b></p>
<h2>Faut-il savoir programmer pour participer ?</h2>
<h3>Un challenge pédagogique</h3>
<p>Ce challenge a un but <b>pédagogique</b>. Le principe est justement de vous faire découvrir l&#8217;informatique de manière ludique. Donc, cela va de soi, aucune, je dis bien <b>aucune</b>, connaissance n&#8217;est requise pour participer.<br />
Il n&#8217;est évidemment pas concevable de vous demander des bases que la formation post-bac est censée vous apprendre elle-même…</p>
<p>Le langage de programmation utilisé, NetLogo, a été spécialement choisi pour coller à cet objectif pédagogique. Il est très proche du langage oral (grosso-modo : les lignes de commande sont des phrases en anglais sans les articles). C&#8217;est donc la stratégie (algorithmie) qui est mise en avant, plus que le langage lui-même.</p>
<p><b>Donc, de l&#8217;imagination, un papier et un crayon, et un accès à un ordinateur : c&#8217;est tout ce dont vous avez besoin.</b></p>
<h3>Aide à disposition</h3>
<p>Des exemples simples vous sont fournis avec un <b>tutoriel pas à pas</b>. Cela vous permettra de démarrer et d&#8217;appréhender le contexte. </p>
<p>Vous disposez également du <b>forum</b> sur lequel vous pouvez discuter avec les autres challengers. Vous pouvez y poser des questions sur le concours, sur des problèmes que vous rencontrez ou bien discuter sur des stratégies diverses.  N&#8217;hésitez pas à vous <b>entre-aider</b>, cela vous permettra d&#8217;aller encore plus loin !</p>
<p>Pour ceux qui ont déjà des bases, ne pensez pas que cela sera simple étant donné que c&#8217;est la stratégie qui est jugée ici. Cela vous aidera seulement au début à pouvoir passer plus rapidement vos idées en lignes de codes. Et surtout n&#8217;ayez pas peur de vous ennuyer. IA is IA : il y a moyen de mijoter des petites stratégies particulièrement redoutables et diaboliques ;-].</p>
<h2>A propos du challenge et des prix</h2>
<p>Ce challenge est organisé par le groupe ESIEA qui rassemble deux écoles : l&#8217;ESIEA (Ecole Supérieure d&#8217;Informatique, électronique et Automatique) et In&#8217;Tech Info.</p>
<p>Ce n&#8217;est absolument pas un concours d&#8217;entrée, mais la possibilité pour des élèves souhaitant rejoindre l&#8217;une des écoles du groupe de <b>remporter la gratuité de l&#8217;ensemble de leur scolarité</b>.</p>
<h3>Déroulement</h3>
<p>Le challenge comprend <b>deux phases</b> : </p>
<p><b>Une première</b> qui se déroule en ligne. Les candidats participent dans l&#8217;une des deux poules disponibles (libre ou candidats 1A) et lancent des défis pour gravir l&#8217;échelle des scores.</p>
<p><b>Une seconde</b> qui s&#8217;adresse aux candidats de la poule 1A ayant reçus des tickets pour la finale. Ils seront invités à venir la disputer à huis clos dans les locaux de l&#8217;ESIEA Paris le <b>samedi 9 Avril 2011</b>. L&#8217;épreuve sera une variante de la première phase.</p>
<h3>Prix</h3>
<p>A l&#8217;issu de la finale, les trois premiers bacheliers 2011 recevront les récompenses suivantes :<br />
- <b>1er prix : 100%</b> des frais de scolarité pour 5 ans dans l&#8217;une des écoles du groupe ESIEA<br />
- <b>2ème Prix : 50%</b> des frais de scolarité pour 5 ans dans l&#8217;une des écoles du groupe ESIEA<br />
- <b>3ème Prix : 25%</b> des frais de scolarité pour 5ans dans l&#8217;une des écoles du groupe ESIEA </p>
<p>Sous réserve des conditions suivantes :</p>
<p>Ces bourses ne sont attribuées qui si vous réussissez les épreuves d’admission dans l’une des deux écoles (dernière session le 7 Mai 2011 pour l&#8217;ESIEA et le 15 Juillet 2011 pour In&#8217;Tech Info). Vous devez également suivre la procédure admission-postbac (deadline : 20 mars 2011) d’une part (pour l’ESIEA), et d&#8217;autre part avoir votre bac à la fin de l’année. </p>
<h2>Liens utiles</h2>
<p>Pour les inscriptions et le site officiel, rendez-vous ici : <a href="http://www.wingineer.fr/">WinGineer</a><br />
Voici la chaîne Youtube qui montre les vidéos des derniers défis : <a href="http://www.youtube.com/wingineer">WinGineer on Youtube</a></p>
<p>Pour en savoir plus sur l&#8217;Esiea : <a href="http://www.esiea.fr/">Ecole Supérieure d&#8217;Informatique Electronique Automatique</a><br />
Et sur In&#8217;Tech Info : <a href="http://www.intechinfo.fr/">In&#8217;Tech</a></p>
<p>Et pour les curieux : <a href="http://professeurs.esiea.fr/wassner/">;-]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/wingineer-edition-2011.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/wingineer-edition-2011.html</feedburner:origLink></item>
		<item>
		<title>Installer et Utiliser CorePlot sur iPhone / iPad</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/dF6P-GCFfI0/installer-et-utiliser-coreplot-sur-iphone-ipad.html</link>
		<comments>http://www.geckogeek.fr/installer-et-utiliser-coreplot-sur-iphone-ipad.html#comments</comments>
		<pubDate>Sun, 28 Nov 2010 17:54:00 +0000</pubDate>
		<dc:creator>Vinz</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[CorePlot]]></category>
		<category><![CDATA[Courbe]]></category>
		<category><![CDATA[Graphique]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Tuto]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1418</guid>
		<description><![CDATA[Il est parfois utile de pouvoir afficher directement des graphiques sur iPhone / iPad. Cela peut être pour afficher beaucoup d&#8217;information dans un espace réduit, ou pour aider à visualiser des informations. Installer CorePlot L&#8217;installation de CorePlot est légèrement plus compliquée que pour d&#8217;autres librairies, et cela peut même parfois devenir plutôt pénible, surtout lorsqu&#8217;il [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Finstaller-et-utiliser-coreplot-sur-iphone-ipad.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Finstaller-et-utiliser-coreplot-sur-iphone-ipad.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=CorePlot,Courbe,Graphique,iPad,iPhone,Tuto,Tutorial&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Il est parfois utile de pouvoir afficher directement des graphiques sur iPhone / iPad. Cela peut être pour afficher beaucoup d&#8217;information dans un espace réduit, ou pour aider à visualiser des informations.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/11/coreplot-promo.jpeg" alt="" title="coreplot-promo" width="500" height="375" class="aligncenter size-full wp-image-1553" /></p>
<h2>Installer CorePlot</h2>
<p>L&#8217;installation de <strong>CorePlot</strong> est légèrement plus compliquée que pour d&#8217;autres librairies, et cela peut même parfois devenir plutôt pénible, surtout lorsqu&#8217;il faut compiler.</p>
<h3>Télécharger CorePlot</h3>
<p>Télécharger <strong>les sources complètes</strong> sur le projet <a href="http://code.google.com/p/core-plot/downloads/list">Google Code</a>. A l&#8217;heure de cet article le fichier à télécharger est <a href="http://code.google.com/p/core-plot/downloads/detail?name=alpharelease_0.1.zip&amp;can=2">l&#8217;Alpha Release 1</a>. Cela risque bien évidemment de changer au cours du temps.</p>
<h3>Configurer CorePlot pour le Projet</h3>
<ul>
<li><strong>Dézippez</strong> le fichier et renommez le en &#8220;coreplot&#8221;.</li>
<li><strong>Déplacez le dossier</strong> là où vous entreposez vos librairies. Il ne faut pas que cet endroit bouge car le lien avec le projet ne sera pas dynamique.</li>
<li>Dans le dossier &#8220;coreplot/Source/framework&#8221;, vous devriez avoir un projet &#8220;CorePlot-CocoaTouch.xcodeproj&#8221;. <strong>Déplacez ce fichier dans votre projet xCode</strong> (dans le dossier &#8220;Other Sources&#8221; par exemple).<img class="aligncenter" title="CorePlot - Cocoa Framework" src="http://www.geckogeek.fr/wp-content/uploads/2010/09/Capture-d’écran-2010-09-06-à-14.36.47.png" alt="" width="472" height="194" /></li>
<li>Le fichier déplacé devrait contenir un &#8220;.a&#8221;. Déplacez ce dernier dans le dossier &#8220;<strong>Link Binary With Librairies</strong>&#8221; qui se trouve dans &#8220;Target/NOM-DU-PROJET/Link Binary With Librairies&#8221;.<a href="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-cocoa-framework.png"><img class="aligncenter" title="coreplot-cocoa-framework" src="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-cocoa-framework-300x176.png" alt="" width="300" height="176" /></a></li>
<li>Ouvrez la fenêtre &#8220;<strong>Target Info</strong>&#8221; en double-cliquant sur le projet dans Target. Allez dans l&#8217;onglet &#8220;General&#8221; (le plus à gauche en principe), et rajoutez la dépendance directe de CorePlot.<a href="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-target-info.png"><img class="aligncenter" style="width: 475px;" title="coreplot target info" src="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-target-info.png" alt="" /></a></li>
<li>Maintenant ouvrez l&#8217;autre fenêtre de configuration : &#8220;<strong>Project Info</strong>&#8221; en double-cliquant sur le nom du projet tout en haut de la colonne. Vous devez passez à l&#8217;onglet &#8220;<strong>Build</strong>&#8221; et cherchez dans les configurations la clé &#8220;<span style="text-decoration: underline;">Header Search Paths</span>&#8221; (en principe qui est vide de base pour un nouveau projet). Rajoutez-y le chemin vers votre librairie. Par exemple pour nous cela sera &#8220;$HOME/Library/SDKs/coreplot/Source/framework&#8221;, mais cela peut très bien être ~/Desktop/Librairies/path/to/dire/coreplot/Source/framework. Vérifiez avec un terminal que le chemin est le bon ! ATTENTION, veuillez à bien cocher le bouton &#8220;récursif&#8221; à coté du champ texte.<a href="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-project-info.png"><img class="aligncenter" style="width: 475px;" title="coreplot project info" src="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-project-info.png" alt="" /></a></li>
<li>Toujours dans la même fenêtre, cherchez la clé &#8220;<span style="text-decoration: underline;">Other Linker Flags</span>&#8221; et rajoutez-y &#8220;-all_load -ObjC&#8221;.<a href="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-other-linker-flags.png"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/09/coreplot-other-linker-flags.png" alt="" title="coreplot-other-linker-flags" class="aligncenter" style="width: 475px;" /></a></li>
<li>Dans votre controller, rajoutez la ligne d&#8217;import suivante : #import &#8220;CorePlot-CocoaTouch.h&#8221;</li>
<li>Et enfin pensez à rajouter le framework <strong>QuartzCore</strong> dans votre projet !</li>
</ul>
<p>D&#8217;après quelques tests, il semblerait quasiment nécessaire que l&#8217;iOS cible soit au moins le 4.0. Sinon on se retrouve avec des erreurs de compilations plutôt incompréhensibles !</p>
<h2>Utiliser CorePlot &#8211; Configurer votre Graph</h2>
<h3>CPPlotDataSource</h3>
<p>Une fois <b>CorePlot</b> au chaud, on a qu&#8217;une seule envie, sortir une courbe ! Dans notre cas nous allons directement programmer dans un <b>UIViewController</b> (celui de base du projet que vous pouvez télécharger en fin du billet). Par ailleurs ce dernier doit intégrer le delegate <u>CPPlotDataSource</u>, donc veuillez bien à ce que dernier apparaisse dans votre header file ! De même nous utiliserons deux classes que je vous conseille d&#8217;ajouter dans votre .h :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">CPLayerHostingView <span style="color: #002200;">*</span>graphView;
CPXYGraph <span style="color: #002200;">*</span>graph;</pre></div></div>

<p>Les deux sont reliées à l&#8217;affichage graphique mais la seconde joue plus le rôle d&#8217;un Layer qu&#8217;autre chose. Votre Interface devrait donc ressembler à quelque chose comme :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">@interface</span> CorePlot_GeckoGeekViewController <span style="color: #002200;">:</span> UIViewController &lt;CPPlotDataSource&gt; <span style="color: #002200;">&#123;</span>
&nbsp;
	CPLayerHostingView <span style="color: #002200;">*</span>graphView;
	CPXYGraph <span style="color: #002200;">*</span>graph;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Ensuite, implémentons la méthode qui permettra d&#8217;afficher le graphique. Rendez-vous donc dans la méthode loadView du ViewController</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>loadView <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Alloc &amp; Init Main View</span>
	UIView <span style="color: #002200;">*</span>tmpView <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UIView alloc <span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">320.0</span>, <span style="color: #2400d9;">480.0</span><span style="color: #002200;">-</span><span style="color: #2400d9;">20.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> tmpView setAutoresizingMask<span style="color: #002200;">:</span>UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> tmpView setBackgroundColor<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIColor whiteColor <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Alloc Graph View</span>
	graphView <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> CPLayerHostingView alloc <span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">320.0</span>, <span style="color: #2400d9;">480.0</span><span style="color: #002200;">-</span><span style="color: #2400d9;">20.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> tmpView addSubview<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> graphView autorelease <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Set MainView</span>
	<span style="color: #002200;">&#91;</span> self setView<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> tmpView autorelease <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Pour l&#8217;instant rien de très compliqué. On créé la vue qui se chargera d&#8217;afficher les données (CPLayerHostingView) et on l&#8217;ajoute en SubView à la vue principale.</p>
<h3>Initialisation des préférences de CorePlot</h3>
<p>Passons maintenant à la méthode viewDidLoad où nous allons initialiser l&#8217;allure des courbes. On commence par créer l&#8217;objet CPXYGraph qui va contenir nos courbes :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// Alloc CPXYGraph</span>
graph <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> CPXYGraph alloc <span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span> self.view.bounds <span style="color: #002200;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// Link between the view and the Layer</span>
graphView.hostedLayer <span style="color: #002200;">=</span> graph;
<span style="color: #11740a; font-style: italic;">// Init Padding to 0</span>
graph.paddingLeft <span style="color: #002200;">=</span> <span style="color: #2400d9;">0.0</span>;
graph.paddingTop <span style="color: #002200;">=</span> <span style="color: #2400d9;">0.0</span>;
graph.paddingRight <span style="color: #002200;">=</span> <span style="color: #2400d9;">0.0</span>;
graph.paddingBottom <span style="color: #002200;">=</span> <span style="color: #2400d9;">0.0</span>;</pre></div></div>

<p>Notez qu&#8217;on remet les &#8220;padding&#8221; (espace interne) à 0 pour éviter d&#8217;avoir des marges blanches internes dans notre graphique. Là encore, rien de très compliqué. Passons maintenant aux courbes que vous souhaitez voir apparaître. Il faut les déclarer une à une et par ailleurs (de préférence) les personnaliser. Voici un exemple pour UNE courbe.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// Alloc</span>
CPScatterPlot <span style="color: #002200;">*</span>plot1 <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>CPScatterPlot alloc<span style="color: #002200;">&#93;</span>initWithFrame<span style="color: #002200;">:</span>self.view.bounds<span style="color: #002200;">&#93;</span> autorelease<span style="color: #002200;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// Set ID</span>
plot1.identifier <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Plot 1&quot;</span>;
<span style="color: #11740a; font-style: italic;">// Set Line Width</span>
plot1.dataLineStyle.lineWidth <span style="color: #002200;">=</span> 1.0f;
<span style="color: #11740a; font-style: italic;">// Set Line Color</span>
plot1.dataLineStyle.lineColor <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>CPColor colorWithComponentRed<span style="color: #002200;">:</span><span style="color: #2400d9;">255.0</span><span style="color: #002200;">/</span><span style="color: #2400d9;">255.0</span> green<span style="color: #002200;">:</span><span style="color: #2400d9;">0.0</span> blue<span style="color: #002200;">:</span><span style="color: #2400d9;">0.0</span> alpha<span style="color: #002200;">:</span><span style="color: #2400d9;">1.0</span><span style="color: #002200;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// Set Data Source Object</span>
plot1.dataSource <span style="color: #002200;">=</span> self;
<span style="color: #11740a; font-style: italic;">// Add Plot to the graph layer</span>
<span style="color: #002200;">&#91;</span>graph addPlot<span style="color: #002200;">:</span>plot1<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>En principe les commentaires sont assez nombreux pour vous expliquer ce que font les lignes. Il existe probablement d&#8217;autres paramètres de personnalisation. Mais pour un graphique de base, vous n&#8217;avez pas vraiment besoin d&#8217;en écrire plus. Prenez une attention particulière au paramètre &#8220;identifier&#8221; qui vous permettra d&#8217;attribuer les valeurs Y de la courbe dans une méthode &#8220;data source&#8221;. On en parle plus bas ! Répétez la même chose pour le nombre de courbe dont vous avez besoin. Ici on en créera juste une seconde afin de vous montrer un graphique avec 2 courbes.</p>
<h3>Plages de données</h3>
<p>On passe maintenant à une configuration un peu plus poussée qui concerne les limites d&#8217;affichage sur les axes X et Y. Il vous faut définir les plages sur lesquelles vous souhaitez voir vos courbes d&#8217;afficher. Ce n&#8217;est en effet pas dynamique selon les données que vous indiquerez. Ici on donne des valeurs fixes, mais de manière générale il est conseillé d&#8217;effectuer des min/max/moy sur vos données.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// X &amp; Y Range</span>
<span style="color: #11740a; font-style: italic;">// Get Default Plot Space</span>
CPXYPlotSpace <span style="color: #002200;">*</span>plotSpace <span style="color: #002200;">=</span> <span style="color: #002200;">&#40;</span>CPXYPlotSpace <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>graph.defaultPlotSpace;
<span style="color: #11740a; font-style: italic;">// Set X Range from -10 to 10 (length = 20)</span>
plotSpace.xRange <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>CPPlotRange plotRangeWithLocation<span style="color: #002200;">:</span>CPDecimalFromInteger<span style="color: #002200;">&#40;</span><span style="color: #002200;">-</span><span style="color: #2400d9;">10</span><span style="color: #002200;">&#41;</span> length<span style="color: #002200;">:</span>CPDecimalFromInteger<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">20</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// Set Y Range from -5 to 5 (length = 10)</span>
plotSpace.yRange <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>CPPlotRange plotRangeWithLocation<span style="color: #002200;">:</span>CPDecimalFromFloat<span style="color: #002200;">&#40;</span><span style="color: #002200;">-</span><span style="color: #2400d9;">5.0</span><span style="color: #002200;">&#41;</span> length<span style="color: #002200;">:</span>CPDecimalFromFloat<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">10.0</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<h3>Préférences des axes X &#038; Y</h3>
<p>Il ne reste plus qu&#8217;à indiquer les préférences de chaque axe. C&#8217;est probablement le passage le plus délicat est sur lequel on revient le plus souvent au début lorsque l&#8217;on souhaite configurer l&#8217;allure de son graphique. On vous explique ligne par ligne ce que fait chaque fonction dans le code suivant.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// Line Style</span>
CPLineStyle <span style="color: #002200;">*</span>lineStyle <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>CPLineStyle lineStyle<span style="color: #002200;">&#93;</span>;
lineStyle.lineColor <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>CPColor blackColor<span style="color: #002200;">&#93;</span>;
lineStyle.lineWidth <span style="color: #002200;">=</span> 1.0f;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Axis X Prefs</span>
CPXYAxisSet <span style="color: #002200;">*</span>axisSet <span style="color: #002200;">=</span> <span style="color: #002200;">&#40;</span>CPXYAxisSet <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>graph.axisSet;
<span style="color: #11740a; font-style: italic;">// Set the &quot;major&quot; interval length</span>
axisSet.xAxis.majorIntervalLength <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> <span style="color: #400080;">NSDecimalNumber</span> decimalNumberWithString<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;5.0&quot;</span> <span style="color: #002200;">&#93;</span> decimalValue <span style="color: #002200;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// Set the number of ticks per interval</span>
axisSet.xAxis.minorTicksPerInterval <span style="color: #002200;">=</span> <span style="color: #2400d9;">4</span>;
<span style="color: #11740a; font-style: italic;">// Set major &amp; minor line style</span>
axisSet.xAxis.majorTickLineStyle <span style="color: #002200;">=</span> lineStyle;
axisSet.xAxis.minorTickLineStyle <span style="color: #002200;">=</span> lineStyle;
<span style="color: #11740a; font-style: italic;">// Set axis line style</span>
axisSet.xAxis.axisLineStyle <span style="color: #002200;">=</span> lineStyle;
<span style="color: #11740a; font-style: italic;">// Set length of the minor tick</span>
axisSet.xAxis.minorTickLength <span style="color: #002200;">=</span> 5.0f;
<span style="color: #11740a; font-style: italic;">// Set length of the major tick</span>
axisSet.xAxis.majorTickLength <span style="color: #002200;">=</span> 10.0f;
<span style="color: #11740a; font-style: italic;">// Set the offset of the label (beside the X axis)</span>
axisSet.xAxis.labelOffset <span style="color: #002200;">=</span> 3.0f;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Axis Y Prefs (same things)</span>
axisSet.yAxis.majorIntervalLength <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> <span style="color: #400080;">NSDecimalNumber</span> decimalNumberWithString<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;2.0&quot;</span> <span style="color: #002200;">&#93;</span> decimalValue <span style="color: #002200;">&#93;</span>;
axisSet.yAxis.minorTicksPerInterval <span style="color: #002200;">=</span> <span style="color: #2400d9;">1</span>;
axisSet.yAxis.majorTickLineStyle <span style="color: #002200;">=</span> lineStyle;
axisSet.yAxis.minorTickLineStyle <span style="color: #002200;">=</span> lineStyle;
axisSet.yAxis.axisLineStyle <span style="color: #002200;">=</span> lineStyle;
axisSet.yAxis.minorTickLength <span style="color: #002200;">=</span> 5.0f;
axisSet.yAxis.majorTickLength <span style="color: #002200;">=</span> 10.0f;
axisSet.yAxis.labelOffset <span style="color: #002200;">=</span> 3.0f;</pre></div></div>

<h2>Utiliser CorePlot &#8211; Attribuer les valeurs</h2>
<p>Maintenant il ne reste plus qu&#8217;à indiquer les valeurs de chaque variable grâce au dataSource que nous avons attribué au départ. Pour cela nous allons utiliser les deux méthodes delegate suivantes :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>NSUInteger<span style="color: #002200;">&#41;</span>numberOfRecordsForPlot<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CPPlot <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>plot <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSNumber</span> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>numberForPlot<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CPPlot <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>plot field<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSUInteger<span style="color: #002200;">&#41;</span>fieldEnum recordIndex<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSUInteger<span style="color: #002200;">&#41;</span>index <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<h3>Nombre de données à afficher</h3>
<p>Dans un premier temps il faut indiquer le nombre de donnée que contient une courbe. Pour cela nous implémentons la méthode &#8220;numberOfRecordsForPlot:&#8221; qui nous indique en paramètre la courbe concernée.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>NSUInteger<span style="color: #002200;">&#41;</span>numberOfRecordsForPlot<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CPPlot <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>plot <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// If Plot 1</span>
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>plot.identifier <span style="color: #002200;">==</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Plot 1&quot;</span><span style="color: #002200;">&#41;</span>
		<span style="color: #a61390;">return</span> <span style="color: #2400d9;">20</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// If Plot 2</span>
	<span style="color: #a61390;">return</span> <span style="color: #2400d9;">10</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Pour la première courbe nommée &#8220;Plot 1&#8243; nous déclarons qu&#8217;il y a 21 valeurs. Et pour la deuxième 11 valeurs. En général les données sont stockées dans un tableau. Ici nous enlevons cette contrainte. En cas de tableau vous pouvez directement faire un [ array count ].</p>
<h3>Nombre à afficher en fonction de la courbe et de l&#8217;index</h3>
<p>Et enfin il ne reste plus qu&#8217;à indiquer les données. Nous utilisons alors la deuxième méthode delegate &#8220;numberForPlot:::&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSNumber</span> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>numberForPlot<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CPPlot <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>plot field<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSUInteger<span style="color: #002200;">&#41;</span>fieldEnum recordIndex<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSUInteger<span style="color: #002200;">&#41;</span>index <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Number of the X axis asked</span>
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>fieldEnum <span style="color: #002200;">==</span> CPScatterPlotFieldX<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
		<span style="color: #11740a; font-style: italic;">// Return -10, -9, -8, ... 8, 9, 10</span>
		<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>plot.identifier <span style="color: #002200;">==</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Plot 1&quot;</span><span style="color: #002200;">&#41;</span>
			<span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span> <span style="color: #400080;">NSNumber</span> numberWithInteger<span style="color: #002200;">:-</span><span style="color: #2400d9;">10.0</span><span style="color: #002200;">+</span>index <span style="color: #002200;">&#93;</span>;
		<span style="color: #11740a; font-style: italic;">// Return -5, -4, ..., 4, 5</span>
		<span style="color: #a61390;">else</span> <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>plot.identifier <span style="color: #002200;">==</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Plot 2&quot;</span><span style="color: #002200;">&#41;</span>
			<span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span> <span style="color: #400080;">NSNumber</span> numberWithInteger<span style="color: #002200;">:-</span><span style="color: #2400d9;">5.0</span><span style="color: #002200;">+</span>index <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Number of the Y axis asked</span>
	<span style="color: #002200;">&#125;</span> <span style="color: #a61390;">else</span> <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>fieldEnum <span style="color: #002200;">==</span> CPScatterPlotFieldY<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span> 
&nbsp;
		<span style="color: #11740a; font-style: italic;">// Return -10, -9, -8, ... 8, 9, 10</span>
		<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>plot.identifier <span style="color: #002200;">==</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Plot 1&quot;</span><span style="color: #002200;">&#41;</span>
			<span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span> <span style="color: #400080;">NSNumber</span> numberWithFloat<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #002200;">-</span><span style="color: #2400d9;">10.0</span><span style="color: #002200;">+</span>index<span style="color: #002200;">&#41;</span><span style="color: #002200;">/</span><span style="color: #2400d9;">2.0</span> <span style="color: #002200;">&#93;</span>;
		<span style="color: #11740a; font-style: italic;">// Return -5, -4, ..., 4, 5</span>
		<span style="color: #a61390;">else</span> <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>plot.identifier <span style="color: #002200;">==</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Plot 2&quot;</span><span style="color: #002200;">&#41;</span>
			<span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span> <span style="color: #400080;">NSNumber</span> numberWithInteger<span style="color: #002200;">:-</span><span style="color: #2400d9;">5.0</span><span style="color: #002200;">+</span>index <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #002200;">&#125;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Return a default value, shouldn't be returned</span>
	<span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span> <span style="color: #400080;">NSNumber</span> numberWithFloat<span style="color: #002200;">:</span><span style="color: #2400d9;">0.0</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Avec une condition on fait la différence entre a donnée pour l&#8217;axe X ou Y, puis une autre condition selon la courbe souhaitée. Attention à bien retourner des NSNumber !</p>
<p><b>Ceci nous retourne le résultat suivant :</b><br />
<img src="http://www.geckogeek.fr/wp-content/uploads/2010/11/coreplot-iphone-example.png" alt="" title="coreplot-iphone-example" width="396" height="744" class="aligncenter size-full wp-image-1550" /></p>
<h2>Sources du projet Coreplot</h2>
<p>Voici les sources de ce tutorial. Nous avons inclus en passant les sources de coreplot pour que vous puissiez compiler directement :<br />
<a href="http://www.geckogeek.fr/static/files/Coreplot-Geckogeek.zip">http://www.geckogeek.fr/static/files/Coreplot-Geckogeek.zip</a><br />
Attention, n&#8217;oubliez pas d&#8217;installer le reste de coreplot comme il se doit. Le coreplot inclut dans le projet n&#8217;est que le wrapper iPhone / iPad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/installer-et-utiliser-coreplot-sur-iphone-ipad.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/installer-et-utiliser-coreplot-sur-iphone-ipad.html</feedburner:origLink></item>
		<item>
		<title>Keynote 20 Octobre – iLife 11, Facetime, Mac OS 10.7 Lion &amp; 2 New Macbook Air !</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/CPNkAEm6y3I/keynote-20-octobre-ilife-11-facetime-mac-os-10-7-lyon-2-new-macbook-air.html</link>
		<comments>http://www.geckogeek.fr/keynote-20-octobre-ilife-11-facetime-mac-os-10-7-lyon-2-new-macbook-air.html#comments</comments>
		<pubDate>Wed, 20 Oct 2010 19:05:00 +0000</pubDate>
		<dc:creator>Vinz</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Factime]]></category>
		<category><![CDATA[GarageBand 11]]></category>
		<category><![CDATA[iLife 11]]></category>
		<category><![CDATA[iMovie 11]]></category>
		<category><![CDATA[iPhoto 11]]></category>
		<category><![CDATA[Keynote]]></category>
		<category><![CDATA[Launch Pad]]></category>
		<category><![CDATA[Mac App Store]]></category>
		<category><![CDATA[Mac OS 10.7]]></category>
		<category><![CDATA[Macbook AIr]]></category>
		<category><![CDATA[Mission Control]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1502</guid>
		<description><![CDATA[C'est aujourd'hui (et plus précisément depuis 19h00) que se tenait la dernière <b>Keynote d'Apple</b>. Cette dernière était centrée sur le "Mac", et nous avons eu le droit à notre lot de nouveautés. Faisons le tour de ce qu'il y a à retenir !]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fkeynote-20-octobre-ilife-11-facetime-mac-os-10-7-lyon-2-new-macbook-air.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fkeynote-20-octobre-ilife-11-facetime-mac-os-10-7-lyon-2-new-macbook-air.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=Apple,Factime,GarageBand+11,iLife+11,iMovie+11,iPhoto+11,Keynote,Launch+Pad,Mac+App+Store,Mac+OS+10.7,Macbook+AIr,Mission+Control&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>C&#8217;est aujourd&#8217;hui (et plus précisément depuis 19h00) que se tenait la dernière <b>Keynote d&#8217;Apple</b>. Cette dernière était centrée sur le &#8220;Mac&#8221;, et nous avons eu le droit à notre lot de nouveautés. Faisons le tour de ce qu&#8217;il y a à retenir !</p>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-steeve.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-steeve.jpg" alt="" title="keynote-20octobre-steeve" width="700" height="296" class="aligncenter size-full wp-image-1506" /></a></p>
<h2>KeyNote 20 Octobre, des chiffres</h2>
<ul>
<li><b>Apple</b> profite d&#8217;une croissance de <u>27%</u> cette année</li>
<li>13.7 millions de Mac vendus en 2010</li>
<li>Le <b>Mac</b> représente <u>33%</u> des revenus d&#8217;Apple</li>
</ul>
<h2>iLife 11 &#8211; iPhoto 11, iMovie 11</h2>
<p>Les même Apps sont là. iLife peut s&#8217;upgrader pour un ancien iLife pour <b>49$</b>. Et il est gratuit pour les nouveaux Mac ! <b>Disponible</b> dès aujourd&#8217;hui.</p>
<h3>iPhoto 11</h3>
<ul>
<li>Nouveau mode fullscreen pour afficher les photos.</li>
<li>Meilleure intégration de Facebook.</li>
<li>Nouveau slideshow pour afficher les images. Par exemple avec des images géolocalisée vous pouvez faire une animation des photos avec les emplacements sans rien devoir configurer. Une grosse dizaine d&#8217;animations différentes permettent ainsi de mettre en avant vos images avec une musique de fond.</li>
<li>Envoi des photos par email amélioré. L&#8217;intégration des images dans un email est vraiment améliorée, et beaucoup plus intuitive.</li>
<li>Grande amélioration dans la création de livres.</li>
</ul>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11.jpg" alt="" title="keynote-20octobre-iphoto11" width="700" height="364" class="aligncenter size-full wp-image-1508" /><center>Amélioration de la présentation</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-places.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-places.jpg" alt="" title="keynote-20octobre-iphoto11-places" width="700" height="378" class="aligncenter size-full wp-image-1510" /><center>Animation d&#8217;images géolocalisées</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-email.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-email.jpg" alt="" title="keynote-20octobre-iphoto11-email" width="700" height="380" class="aligncenter size-full wp-image-1511" /><center>Envoi de photos par Email</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-creation-album.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-creation-album.jpg" alt="" title="keynote-20octobre-iphoto11-creation-album" width="700" height="358" class="aligncenter size-full wp-image-1514" /><center>Création d&#8217;un Album photo</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-visionner-album1.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-iphoto11-visionner-album1.jpg" alt="" title="keynote-20octobre-iphoto11-visionner-album" width="700" height="367" class="aligncenter size-full wp-image-1516" /><center>Visionner les Albums Photos</center></a></p>
<h3>iMovie 11</h3>
<ul>
<li>Simplification de la modification de l&#8217;audio pour aisément baisser / augmenter le son sur des parcelles d&#8217;une vidéo (bien plus simple qu&#8217;avant)</li>
<li>Effet Audio : Dark Vador, Alien, &#8230; Démonstration saisissante !</li>
<li>Les ajouts d&#8217;effets vidéos sont aussi simplifiés</li>
<li>Création de movie trailer de manière simple. Il suffit de remplir des meta-datas, rajouter un logo, et iMovie fait le reste ! L&#8217;effet est excellent.</li>
<li>Reconnaissance du nombre de personens dans les vidéos pour mieux départager les séquences (et aider à l&#8217;association des séquences)</li>
</ul>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-imovie11.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-imovie11.jpg" alt="" title="keynote-20octobre-imovie11" width="700" height="370" class="aligncenter size-full wp-image-1517" /><center>Interface</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-imovie11-metatags.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-imovie11-metatags.jpg" alt="" title="keynote-20octobre-imovie11-metatags" width="700" height="367" class="aligncenter size-full wp-image-1519" /><center>Ajouter des meta-données à des séquences</center></a></p>
<h3>Garage Band 11</h3>
<ul>
<li>Quand le <b>rythme</b> de plusieurs instruments est mal synchronisé, il est possible de nominer un instrument comme &#8220;clé&#8221; et les autres s&#8217;accordent au rythme.</li>
<li>Flex Time : il devient possible (facilement) d&#8217;<b>augmenter ou baisser le durée de certaines parties</b> d&#8217;une séquence audio en la sélectionnant, l&#8217;étirant.</li>
<li><b>Nouvelles leçons</b> de Guitares &#038; Piano. Les leçons sont encore plus explicites comme avec la synchronisation des doigts. On a un historique de ses performances, de ses fautes, des stats, etc.</li>
</ul>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-garageband11.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-garageband11.jpg" alt="" title="keynote-20octobre-garageband11" width="700" height="363" class="aligncenter size-full wp-image-1522" /><center>Interface</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-garageband11-lecons.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-garageband11-lecons.jpg" alt="" title="keynote-20octobre-garageband11-lecons" width="700" height="372" class="aligncenter size-full wp-image-1523" /><center>Liste des leçons</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-garageband11-performance.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-garageband11-performance.jpg" alt="" title="keynote-20octobre-garageband11-performance" width="700" height="361" class="aligncenter size-full wp-image-1524" /><center>Tentative de Performance</center></a></p>
<h2>Facetime</h2>
<p>D&#8217;après Apple, 19 millions de devices ont utilisés Facetime durant ces 4 derniers mois. Facetime arrive maintenant sur Mac et peut se connecter à un autre Mac, ou même un iPhone 4 / iPod. <b>La Beta de Facetime Mac est disponible dès aujourd&#8217;hui</b> !<br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-facetime-mac.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-facetime-mac.jpg" alt="" title="keynote-20octobre-facetime-mac" width="700" height="383" class="aligncenter size-full wp-image-1526" /><center>Liste des Utilisateurs</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-facetime-mac-phill.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-facetime-mac-phill.jpg" alt="" title="keynote-20octobre-facetime-mac-phill" width="700" height="362" class="aligncenter size-full wp-image-1527" /><center>Discussion avec Phill</center></a></p>
<h2>Mac OS 10.7</h2>
<p>L&#8217;idée de &#8220;Lion&#8221; (Mac OS 10.7) est de ramener des features de l&#8217;iPhone / iPad sur Mac.<br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mac-lyon.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mac-lyon.jpg" alt="" title="keynote-20octobre-mac-lyon" width="700" height="362" class="aligncenter size-full wp-image-1528" /><center>Mac OS 10.7 &#8211; Lion</center></a></p>
<ul>
<li>La Gestion du multi-touch sur Mac est compliquée. Leurs tests ne sont pas concluant et donc ils sont toujours en Recherche.</li>
<li>Map App Store : AppStore intégré sur Mac. Meilleure place pour découvrir des applications. <b>Sortie dans 90 jours</b>.</li>
<li>&#8220;Auto-Save&#8221; de vos applications sur les applications.</li>
<li>Launch Pad : Moyen facile d&#8217;accéder à toute ses applications. C&#8217;est une copie du système de dossier de iOS4 sur grand écran !</li>
<li>Possibilité d&#8217;avoir les applications en fullscreen et revenir au desktop en un clic pour profiter pleinement de son écran.</li>
<li>Mission Control : un sorte &#8220;Exposé&#8221; amélioré pour une meilleure navigation</li>
</ul>
<p><center><b>Sortie prévue de Lion pour été 2011</b></center></p>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mac-app-store.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mac-app-store.jpg" alt="" title="keynote-20octobre-mac-app-store" width="700" height="364" class="aligncenter size-full wp-image-1530" /><center>Présentation Classique des Applications</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mac-app-store-pages.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mac-app-store-pages.jpg" alt="" title="keynote-20octobre-mac-app-store-pages" width="700" height="357" class="aligncenter size-full wp-image-1531" /><center>Présentation d&#8217;une Application sur Mac App Store : ici Pages</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-launch-pad.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-launch-pad.jpg" alt="" title="keynote-20octobre-launch-pad" width="700" height="359" class="aligncenter size-full wp-image-1533" /><center>Launch Pad</center></a><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mission-control.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-mission-control.jpg" alt="" title="keynote-20octobre-mission-control" width="700" height="366" class="aligncenter size-full wp-image-1535" /><center>Mission Control</center></a></p>
<h2>One More Thing : New Macbook Air</h2>
<p>Apple annonce de <b>nouveaux Macbook Air</b> ! Plus fins, plus légers, ils durent 7 heures en connexion Web et 30 jours en &#8220;stand-by&#8221;.<br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-new-macbook-air.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-new-macbook-air.jpg" alt="" title="keynote-20octobre-new-macbook-air" width="700" height="311" class="aligncenter size-full wp-image-1537" /><center>Macbook Air 13.3&#8243;</center></a><br />
Une version 11.6&#8243; devrait même exister et comporter globalement les même caractéristiques hardware !<br />
<b>Les prix sont agressifs :</b></p>
<ul>
<li>PRIX 11.6&#8243; : <b>999$ (64Go)</b></li>
<li>PRIX 11.6&#8243; : <b>1199$ (128Go)</b></li>
<li>PRIX 13.3&#8243; : <b>1299 $ (128Go)</b></li>
</ul>
<p><b>Les deux version sont disponibles dès aujourd&#8217;hui !</b><br />
<a href="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-new-macbook-air-tiny.jpg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/10/keynote-20octobre-new-macbook-air-tiny.jpg" alt="" title="keynote-20octobre-new-macbook-air-tiny" width="700" height="303" class="aligncenter size-full wp-image-1539" /><center>Dimensions</center></a></p>
<p><b>Donc en résumé, beaucoup de nouveautés qui vont sans aucun doute aider les actions d&#8217;Apple dans les prochains jours ! La sortie de Mac App Store va sans aucun doute augmenter les bénéfices d&#8217;Apple sur iTunes.</b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/keynote-20-octobre-ilife-11-facetime-mac-os-10-7-lyon-2-new-macbook-air.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/keynote-20-octobre-ilife-11-facetime-mac-os-10-7-lyon-2-new-macbook-air.html</feedburner:origLink></item>
		<item>
		<title>iPhone : Forcer le mode Landscape ou Portrait en cours d’exécution</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/BvuuEXaZ4rc/iphone-forcer-le-mode-landscape-ou-portrait-en-cours-dexecution.html</link>
		<comments>http://www.geckogeek.fr/iphone-forcer-le-mode-landscape-ou-portrait-en-cours-dexecution.html#comments</comments>
		<pubDate>Fri, 10 Sep 2010 12:59:39 +0000</pubDate>
		<dc:creator>Lya</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Orientation]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1441</guid>
		<description><![CDATA[Vous pouvez choisir de fixer l'orientation de l'iphone pour votre application lors de son lancement. Mais dans certains cas particuliers, vous pourriez avoir besoin de fixer l'orientation du device en cours d'exécution de votre application. La méthode setOrientation étant privée, voici une autre manière de l'effectuer.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fiphone-forcer-le-mode-landscape-ou-portrait-en-cours-dexecution.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fiphone-forcer-le-mode-landscape-ou-portrait-en-cours-dexecution.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=iPhone,Orientation,Tutorial&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Vous pouvez choisir de <strong>fixer l&#8217;orientation</strong> de l&#8217;iphone pour votre application lors de son lancement. Par exemple dans beaucoup de cas, un jeu aura besoin de se lancer en mode landscape. Cela se paramètre dans le plist du projet. Mais dans des cas particuliers, vous pourriez avoir besoin de fixer l&#8217;orientation du device en cours d&#8217;exécution de votre application. Par exemple lancer l&#8217;application en mode portrait et vouloir, pour une vue donnée, passer en mode landscape (ce qui force l&#8217;utilisateur à tourner le device, d&#8217;où le cas exceptionnel de cet emploi : il faut vraiment que ça se justifie). <strong>La méthode setOrientation (de UIDevice) étant privée</strong>, voici une autre manière de l&#8217;effectuer.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2009/11/SDK-iPhone.png" alt="" title="SDK-iPhone" class="aligncenter" width="253" height="231" /></p>
<div class="interlinks"><span>Autres Articles iPhone</span>
<ul>
<li><a href="http://www.geckogeek.fr/gerer-des-uiview-avec-un-uiviewcontroller-sur-iphone.html" target="_self">Gérer des UIView avec un UIViewController sur iPhone</a></li>
<li><a href="http://www.geckogeek.fr/utiliser-un-uibutton-dans-une-uiview-sur-iphone.html" target="_self">Utiliser un UIButton dans une UIView</a></li>
<li><a href="http://www.geckogeek.fr/json-sur-iphone-installation-et-exemple.html">JSON sur iPhone : installation et exemple</a></li>
<li><a href="http://www.geckogeek.fr/creer-un-singleton-sur-iphone-en-cocoa-objective-c.html">Créer un Singleton sur iPhone en Cocoa / Objective-C</a></li>
<li><a href="http://www.geckogeek.fr/comment-creer-un-projet-iphone-ipad-avec-xcode-from-scratch.html">Créer un projet iPhone / iPad avec XCode from scratch</a></li>
</ul>
</div>
<h2>Le Principe</h2>
<p>Le principe est très simple : il est possible de le faire, mais il faut que le View Controller en question soit ajouté à la fenêtre &#8220;window&#8221; de l&#8217;AppDelegate. Ensuite il suffit d&#8217;indiquer dans la méthode &#8220;shouldAutorotateToInterfaceOrientation&#8221; que l&#8217;on veut un mode landscape pour cette view.</p>
<p>L&#8217;utilisateur est en mode portrait. La nouvelle vue qui arrive est en mode landscape, donc l&#8217;utilisateur tourne le device. Les vue suivantes resteront en landscape car le device est maintenant détecté en mode landscape (rotation).<br />
<img src="http://www.geckogeek.fr/wp-content/uploads/2010/09/LandscapePortrait.png" alt="" title="LandscapePortrait" class="aligncenter" style="width:650px"/></p>
<h2>Exemple de code</h2>
<p>Pour illustrer cette fonctionnalité, nous allons réaliser l&#8217;application qui est représentée dans l&#8217;image ci-dessus.  L&#8217;application s&#8217;ouvre sur une vue en mode portrait qui possède un label et un bouton. Le bouton envoie sur une nouvelle vue. Cette dernière est en mode landscape, et possède elle aussi un label et un bouton (qui renvoie sur la première vue).</p>
<h3>Création des deux ViewControllers</h3>
<p>Commençons par créer les deux View Controllers. Le premier s&#8217;appelera PortraitViewController, le second LandscapeViewController.</p>
<p>Voici le .h (c&#8217;est le même pour le second, échangez juste les noms portrait / landscape). On y place le label, le bouton, et la méthode qui est appelée quand le bouton est touché.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #6e371a;">#import &lt;UIKit/UIKit.h&gt;</span>
&nbsp;
<span style="color: #a61390;">@interface</span> PortraitViewController <span style="color: #002200;">:</span> UIViewController <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// View elements</span>
	UILabel <span style="color: #002200;">*</span>labelPortrait;
	UIButton <span style="color: #002200;">*</span>buttonSwitchToLandscape;
&nbsp;
<span style="color: #002200;">&#125;</span>
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>go2LandscapeView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender;
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<p>On ajoute le label et le bouton dans le loadView du .m (la largeur et la hauteur des frames ne sont pas les mêmes selon le mode).</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>loadView <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Create Main View</span>
	<span style="color: #002200;">&#91;</span> super loadView <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view setFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">320.0</span>, <span style="color: #2400d9;">480.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view setBackgroundColor<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIColor whiteColor <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Label</span>
	labelPortrait <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UILabel alloc <span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">150.0</span>, <span style="color: #2400d9;">320.0</span>, <span style="color: #2400d9;">30.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setFont<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIFont boldSystemFontOfSize<span style="color: #002200;">:</span><span style="color: #2400d9;">22.0</span> <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setTextAlignment<span style="color: #002200;">:</span>UITextAlignmentCenter <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setBackgroundColor<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIColor clearColor <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setText<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;I'm a view in Portrait mode&quot;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view addSubview<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> labelPortrait autorelease <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;	
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Button  </span>
	buttonSwitchToLandscape <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> UIButton buttonWithType<span style="color: #002200;">:</span>UIButtonTypeRoundedRect <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape setTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Go to a Landscape View&quot;</span> forState<span style="color: #002200;">:</span>UIControlStateNormal <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape setFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">60.0</span>, <span style="color: #2400d9;">200.0</span>, <span style="color: #2400d9;">200.0</span>, <span style="color: #2400d9;">40.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape setShowsTouchWhenHighlighted<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape addTarget<span style="color: #002200;">:</span>self action<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>go2LandscapeView<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span> 
						forControlEvents<span style="color: #002200;">:</span>UIControlEventTouchUpInside <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view addSubview<span style="color: #002200;">:</span>buttonSwitchToLandscape <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Faites la même chose pour le second View Controller : LandscapeViewController.</p>
<h3>Ajout de l&#8217;appel au delegate</h3>
<p>N&#8217;oubliez pas qu&#8217;il faut que ça soit le delegate qui gère l&#8217;échange des views, afin de pouvoir les ajouter à &#8220;window&#8221;. Pour cela, on l&#8217;ajoute dans les .h des View Controllers : #import &#8220;AppDelegate.h&#8221;. </p>
<p>Et donc dans la méthode du bouton, on appelle une méthode qui se trouve dans le delegate (et que l&#8217;on va écrire bientôt) :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#40;</span>AppDelegate<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UIApplication sharedApplication <span style="color: #002200;">&#93;</span> delegate <span style="color: #002200;">&#93;</span> switchToLandscapeView <span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>(Pareillement pour le second View Controller.)</p>
<h3>L&#8217;AppDelegate</h3>
<p>Du côté du delegate, on doit donc ajouter ces deux fonctions. Elles vont retirer la vue actuelle, désallouer le View Controller, allouer le nouveau et mettre sa view à la place. Voici l&#8217;exemple pour la première :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>switchToLandscapeView <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #002200;">&#91;</span> vcPortrait.view removeFromSuperview <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> vcPortrait release <span style="color: #002200;">&#93;</span>;
	vcPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
	vcLandscape <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> LandscapeViewController alloc <span style="color: #002200;">&#93;</span> init <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> window addSubview<span style="color: #002200;">:</span>vcLandscape.view <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>N&#8217;oubliez pas d&#8217;ajouter une des deux vues par défaut à la création de l&#8217;app delegate qui apparaîtra au lancement de l&#8217;application. Dans notre exemple, ça sera la vue de vcPortait.</p>
<h3>Le sens d&#8217;orientation</h3>
<p>Il ne reste plus qu&#8217;à fixer le sens d&#8217;orientation dans vcLandscape :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>shouldAutorotateToInterfaceOrientation<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIInterfaceOrientation<span style="color: #002200;">&#41;</span>interfaceOrientation <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Force the landscape mode </span>
	<span style="color: #a61390;">return</span> UIDeviceOrientationIsLandscape<span style="color: #002200;">&#40;</span>interfaceOrientation<span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<h2>Récapitulatif</h2>
<p>Voici l&#8217;ensemble du code des fichiers que nous venons de voir : </p>
<p><b>AppDelegate</b></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// Created by GeckoGeek on 09/09/10</span>
<span style="color: #11740a; font-style: italic;">// AppDelegate.h</span>
<span style="color: #6e371a;">#import &lt;UIKit/UIKit.h&gt;</span>
&nbsp;
<span style="color: #a61390;">@class</span> PortraitViewController;
<span style="color: #a61390;">@class</span> LandscapeViewController;
&nbsp;
<span style="color: #a61390;">@interface</span> AppDelegate <span style="color: #002200;">:</span> <span style="color: #400080;">NSObject</span> &lt;UIApplicationDelegate&gt; <span style="color: #002200;">&#123;</span>
&nbsp;
    UIWindow <span style="color: #002200;">*</span>window;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Controllers</span>
    PortraitViewController <span style="color: #002200;">*</span>vcPortrait;
	LandscapeViewController <span style="color: #002200;">*</span>vcLandscape;
&nbsp;
<span style="color: #002200;">&#125;</span>
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, retain<span style="color: #002200;">&#41;</span> UIWindow <span style="color: #002200;">*</span>window;
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, assign<span style="color: #002200;">&#41;</span> PortraitViewController <span style="color: #002200;">*</span>vcPortrait;
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, assign<span style="color: #002200;">&#41;</span> LandscapeViewController <span style="color: #002200;">*</span>vcLandscape;
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>loadPortraitView;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>switchToLandscapeView;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>switchToPortraitView;
&nbsp;
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// Created by GeckoGeek on 09/09/10</span>
<span style="color: #11740a; font-style: italic;">// AppDelegate.m</span>
<span style="color: #6e371a;">#import &quot;AppDelegate.h&quot;</span>
<span style="color: #6e371a;">#import &quot;PortraitViewController.h&quot;</span>
<span style="color: #6e371a;">#import &quot;LandscapeViewController.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> AppDelegate
&nbsp;
<span style="color: #a61390;">@synthesize</span> window, vcPortrait, vcLandscape;
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>application<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIApplication <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>application didFinishLaunchingWithOptions<span style="color: #002200;">:</span>
								<span style="color: #002200;">&#40;</span><span style="color: #400080;">NSDictionary</span> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>launchOptions <span style="color: #002200;">&#123;</span>    
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Init Window</span>
	self.window <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UIWindow alloc <span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UIScreen mainScreen <span style="color: #002200;">&#93;</span> bounds <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span> 
								autorelease <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Init Controllers</span>
	vcPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;	
	vcLandscape <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
	<span style="color: #002200;">&#91;</span> self loadPortraitView <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Display</span>
    <span style="color: #002200;">&#91;</span> window makeKeyAndVisible <span style="color: #002200;">&#93;</span>;
&nbsp;
    <span style="color: #a61390;">return</span> <span style="color: #a61390;">YES</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>switchToLandscapeView <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #002200;">&#91;</span> vcPortrait.view removeFromSuperview <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> vcPortrait release <span style="color: #002200;">&#93;</span>;
	vcPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
	vcLandscape <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> LandscapeViewController alloc <span style="color: #002200;">&#93;</span> init <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> window addSubview<span style="color: #002200;">:</span>vcLandscape.view <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>switchToPortraitView <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>vcLandscape <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
		<span style="color: #002200;">&#91;</span> vcLandscape.view removeFromSuperview <span style="color: #002200;">&#93;</span>;
		<span style="color: #002200;">&#91;</span> vcLandscape release <span style="color: #002200;">&#93;</span>;
		vcLandscape <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
	<span style="color: #002200;">&#125;</span>
&nbsp;
	<span style="color: #002200;">&#91;</span> self loadPortraitView <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>loadPortraitView <span style="color: #002200;">&#123;</span>
&nbsp;
	vcPortrait <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> PortraitViewController alloc <span style="color: #002200;">&#93;</span> init <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> window addSubview<span style="color: #002200;">:</span>vcPortrait.view <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>dealloc <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Dealloc Portrait View Controller if necessary</span>
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>vcPortrait <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		<span style="color: #002200;">&#91;</span> vcPortrait.view removeFromSuperview <span style="color: #002200;">&#93;</span>;
		<span style="color: #002200;">&#91;</span> vcPortrait release <span style="color: #002200;">&#93;</span>;
		vcPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;		
	<span style="color: #002200;">&#125;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Dealloc Landscape View Controller if necessary</span>
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>vcLandscape <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		<span style="color: #002200;">&#91;</span> vcLandscape.view removeFromSuperview <span style="color: #002200;">&#93;</span>;
		<span style="color: #002200;">&#91;</span> vcLandscape release <span style="color: #002200;">&#93;</span>;
		vcLandscape <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;		
	<span style="color: #002200;">&#125;</span>
&nbsp;
    <span style="color: #002200;">&#91;</span> window release <span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span> super dealloc <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<p><b>PortraitViewController</b></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// Created by GeckoGeek on 09/09/10</span>
<span style="color: #11740a; font-style: italic;">// PortraitViewController.h</span>
<span style="color: #6e371a;">#import &lt;UIKit/UIKit.h&gt;</span>
<span style="color: #6e371a;">#import &quot;AppDelegate.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@interface</span> PortraitViewController <span style="color: #002200;">:</span> UIViewController <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// View elements</span>
	UILabel <span style="color: #002200;">*</span>labelPortrait;
	UIButton <span style="color: #002200;">*</span>buttonSwitchToLandscape;
&nbsp;
<span style="color: #002200;">&#125;</span>
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>go2LandscapeView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender;
&nbsp;
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// Created by GeckoGeek on 09/09/10</span>
<span style="color: #11740a; font-style: italic;">// PortraitViewController.m</span>
<span style="color: #6e371a;">#import &quot;PortraitViewController.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> PortraitViewController
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>init <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> super init <span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
		labelPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
		buttonSwitchToLandscape <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
	<span style="color: #002200;">&#125;</span>
&nbsp;
	<span style="color: #a61390;">return</span> self;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>loadView <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Create Main View</span>
	<span style="color: #002200;">&#91;</span> super loadView <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view setFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">320.0</span>, <span style="color: #2400d9;">480.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view setBackgroundColor<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIColor whiteColor <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Label</span>
	labelPortrait <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UILabel alloc <span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">150.0</span>, <span style="color: #2400d9;">320.0</span>, <span style="color: #2400d9;">30.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setFont<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIFont boldSystemFontOfSize<span style="color: #002200;">:</span><span style="color: #2400d9;">22.0</span> <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setTextAlignment<span style="color: #002200;">:</span>UITextAlignmentCenter <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setBackgroundColor<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIColor clearColor <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelPortrait setText<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;I'm a view in Portrait mode&quot;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view addSubview<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> labelPortrait autorelease <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;	
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Button  </span>
	buttonSwitchToLandscape <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> UIButton buttonWithType<span style="color: #002200;">:</span>UIButtonTypeRoundedRect <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape setTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Go to a Landscape View&quot;</span> forState<span style="color: #002200;">:</span>UIControlStateNormal <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape setFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">60.0</span>, <span style="color: #2400d9;">200.0</span>, <span style="color: #2400d9;">200.0</span>, <span style="color: #2400d9;">40.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape setShowsTouchWhenHighlighted<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToLandscape addTarget<span style="color: #002200;">:</span>self action<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>go2LandscapeView<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span> 
						forControlEvents<span style="color: #002200;">:</span>UIControlEventTouchUpInside <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view addSubview<span style="color: #002200;">:</span>buttonSwitchToLandscape <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>go2LandscapeView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Call the switch method of the app delegate</span>
	<span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#40;</span>AppDelegate<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UIApplication sharedApplication <span style="color: #002200;">&#93;</span> delegate <span style="color: #002200;">&#93;</span> switchToLandscapeView <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>shouldAutorotateToInterfaceOrientation<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIInterfaceOrientation<span style="color: #002200;">&#41;</span>interfaceOrientation <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #a61390;">return</span> UIInterfaceOrientationIsPortrait<span style="color: #002200;">&#40;</span>interfaceOrientation<span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>viewDidUnload <span style="color: #002200;">&#123;</span>
&nbsp;
	labelPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
	buttonSwitchToLandscape <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>dealloc <span style="color: #002200;">&#123;</span>
&nbsp;
	NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Dealloc Portrait View Controller&quot;</span><span style="color: #002200;">&#41;</span>;	
    <span style="color: #002200;">&#91;</span> super dealloc <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<p><b>LandscapeViewController</b></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// Created by GeckoGeek on 09/09/10</span>
<span style="color: #11740a; font-style: italic;">// LandscapeViewController.h</span>
<span style="color: #6e371a;">#import &lt;UIKit/UIKit.h&gt;</span>
<span style="color: #6e371a;">#import &quot;AppDelegate.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@interface</span> LandscapeViewController <span style="color: #002200;">:</span> UIViewController <span style="color: #002200;">&#123;</span>
&nbsp;
	UILabel <span style="color: #002200;">*</span>labelLandscape;	
	UIButton <span style="color: #002200;">*</span>buttonSwitchToPortrait;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>go2PortraitView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender;
&nbsp;
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// Created by GeckoGeek on 09/09/10</span>
<span style="color: #11740a; font-style: italic;">// LandscapeViewController.m</span>
<span style="color: #6e371a;">#import &quot;LandscapeViewController.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> LandscapeViewController
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>init <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> super init <span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
		labelLandscape <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
		buttonSwitchToPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
	<span style="color: #002200;">&#125;</span>
	<span style="color: #a61390;">return</span> self;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>loadView <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Create Main View</span>
	<span style="color: #002200;">&#91;</span> super loadView <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view setFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">480.0</span>, <span style="color: #2400d9;">320.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view setBackgroundColor<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIColor whiteColor <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Label</span>
	labelLandscape <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UILabel alloc <span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">100.0</span>, <span style="color: #2400d9;">480.0</span>, <span style="color: #2400d9;">30.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelLandscape setFont<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIFont boldSystemFontOfSize<span style="color: #002200;">:</span><span style="color: #2400d9;">22.0</span> <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelLandscape setTextAlignment<span style="color: #002200;">:</span>UITextAlignmentCenter <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelLandscape setBackgroundColor<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> UIColor clearColor <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> labelLandscape setText<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;I'm a view in Landscape mode&quot;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view addSubview<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span> labelLandscape autorelease <span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;	
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Button  </span>
	buttonSwitchToPortrait <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span> UIButton buttonWithType<span style="color: #002200;">:</span>UIButtonTypeRoundedRect <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToPortrait setTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Go to a Landscape View&quot;</span> forState<span style="color: #002200;">:</span>UIControlStateNormal <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToPortrait setFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">140.0</span>, <span style="color: #2400d9;">150.0</span>, <span style="color: #2400d9;">200.0</span>, <span style="color: #2400d9;">40.0</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToPortrait setShowsTouchWhenHighlighted<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span> <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> buttonSwitchToPortrait addTarget<span style="color: #002200;">:</span>self action<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>go2PortraitView<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span> 
						forControlEvents<span style="color: #002200;">:</span>UIControlEventTouchUpInside <span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span> self.view addSubview<span style="color: #002200;">:</span>buttonSwitchToPortrait <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>go2PortraitView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Call the switch method of the app delegate</span>
	<span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#40;</span>AppDelegate<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#91;</span> <span style="color: #002200;">&#91;</span> UIApplication sharedApplication <span style="color: #002200;">&#93;</span> delegate <span style="color: #002200;">&#93;</span> switchToPortraitView <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>shouldAutorotateToInterfaceOrientation<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIInterfaceOrientation<span style="color: #002200;">&#41;</span>interfaceOrientation <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// Force the landscape mode </span>
	<span style="color: #11740a; font-style: italic;">// (it works, because this controller is added to the main window in the app delegate)</span>
	<span style="color: #a61390;">return</span> UIDeviceOrientationIsLandscape<span style="color: #002200;">&#40;</span>interfaceOrientation<span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>viewDidUnload <span style="color: #002200;">&#123;</span>
&nbsp;
	labelLandscape <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
	buttonSwitchToPortrait <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>dealloc <span style="color: #002200;">&#123;</span>
&nbsp;
	NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Dealloc Project View Controller&quot;</span><span style="color: #002200;">&#41;</span>;
    <span style="color: #002200;">&#91;</span> super dealloc <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/iphone-forcer-le-mode-landscape-ou-portrait-en-cours-dexecution.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/iphone-forcer-le-mode-landscape-ou-portrait-en-cours-dexecution.html</feedburner:origLink></item>
		<item>
		<title>SeaPerch : Mise à l’Eau du Robot Sous-Marin</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/t4kH5SxRXGo/seaperch-mise-a-leau-du-robot-sous-marin.html</link>
		<comments>http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html#comments</comments>
		<pubDate>Sat, 07 Aug 2010 22:07:14 +0000</pubDate>
		<dc:creator>Lya</dc:creator>
				<category><![CDATA[AUV, UAV & co]]></category>
		<category><![CDATA[Robot sous-marin]]></category>
		<category><![CDATA[ROV]]></category>
		<category><![CDATA[SeaPerch]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1204</guid>
		<description><![CDATA[Vous avez construit votre SeaPerch durant les phases 1 à 3. Il est temps maintenant de le tester et de le mettre à l'eau. Voici quelques recommandations à suivre.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-mise-a-leau-du-robot-sous-marin.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-mise-a-leau-du-robot-sous-marin.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=Robot+sous-marin,ROV,SeaPerch&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Vous avez construit votre SeaPerch durant les phases 1 à 3. Il est temps maintenant de le tester et de le mettre à l&#8217;eau. Voici quelques recommandations à suivre.</p>
<p><br/>
<div class="interlinks"><span>Manuel</span>
<ul>
<li><a href="http://www.geckogeek.fr/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html">Introduction</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-chassis-du-robot-sous-marin.html">Partie 1 : Montage du châssis du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html">Partie 2 : Montage de la propulsion du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html">Partie 3 : Montage du boîtier de contrôle du robot sous-marin</a></li>
<li><b>Mise à l&#8217;eau du robot sous-marin</b></li>
</ul>
</div>
<h2>Checklist</h2>
<p>Avant chaque utilisation du SeaPerch et avant de l’alimenter : </p>
<ul>
<li>Vérifier si le fusible est bon</li>
<li>Vérifier que tous les interrupteurs du boîtier de commande sont en position OFF</li>
<li>Vérifier qu’il n’y a pas de court circuit</li>
<li>Faire tourner les moteurs un par un et vérifier leur fonctionnement</li>
</ul>
<p>Réglez l’alimentation en 12V. Accrochez la pince crocodile noire sur le terminal négatif de l’alimentation, puis la pince crocodile rouge sur le terminal positif.</p>
<h2>Mise à l&#8217;eau</h2>
<p>Mettez le SeaPerch à l’eau. Il va maintenant falloir le lester. Utilisez ce que vous voulez ce qui compte c’est le poids, et le fait que ça ne soit pas trop gros. Vous pouvez l’attacher au filet de charge utile. Ajustez le poids du lest jusqu’à ce que le dessus des flotteurs ne dépasse que très légèrement (max 5 mm) et soit stable. Quand le SeaPerch ne possède pas de charge utile, il lui faut entre 150 et 350 grammes de lest pour atteindre une flottabilité adéquate.</p>
<p>Si votre SeaPerch embarque de la charge utile et qu’il coule en le mettant à l’eau, c’est qu’il est trop lourd pour la taille de ses flotteurs.</p>
<p>Une fois que votre SeaPerch flotte comme il faut, il est prêt à nager ! Vous pouvez y aller, amusez-vous ! N’oubliez pas de le rincer à l’eau claire après chaque utilisation, notamment les axes des moteurs pour éviter la rouille. </p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/08/baby-whale-300x182.jpg" alt="" title="baby whale" width="300" height="182" class="aligncenter size-medium wp-image-1410" /></p>
<h2>Allez plus loin</h2>
<p>Le projet ne s’arrête pas là, bien au contraire, il ne fait que commencer. Ce prototype est une base qui permet de faire plein de choses amusantes avec. Nous y avons déjà fait allusion, l’intérêt est de disposer d’un porteur qui fonctionne rapidement et à moindre coût. Ce qui permet d’utiliser le temps restant pour le customiser.</p>
<p>Vous pouvez lui ajouter par exemple tout un tas de capteurs comme des caméras avec retour vidéo, des capteurs de pression, de profondeur ou de température, un sonar, de la lumière, des hydrophones, &#8230; </p>
<p>Pour intégrer tout ce petit monde vous pouvez modifier la structure, mettre des moteurs plus puissants, modifier le boîtier de contrôle, &#8230;</p>
<p>Et pour pousser encore plus loin, vous pouvez peu à peu chercher à le transformer en AUV, c’est-à-dire à le rendre autonome. Ainsi vous pourrez travailler sur des algorithmes de vision et de navigation.</p>
<p>Bref, faîtes-vous plaisir !</p>
<p><b>Manuel Complet</b> en PDF : <a href="http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf">http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf</a></p>
<p>Site officiel : <a href="http://www.seaperch.org">www.seaperch.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html</feedburner:origLink></item>
		<item>
		<title>SeaPerch : Montage du Boîtier de Contrôle du Robot Sous-Marin</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/AzLLBnT7aHQ/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html</link>
		<comments>http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html#comments</comments>
		<pubDate>Sat, 31 Jul 2010 10:19:40 +0000</pubDate>
		<dc:creator>Vinz</dc:creator>
				<category><![CDATA[AUV, UAV & co]]></category>
		<category><![CDATA[Robot sous-marin]]></category>
		<category><![CDATA[ROV]]></category>
		<category><![CDATA[SeaPerch]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1208</guid>
		<description><![CDATA[Dans cette troisième et dernière partie de la construction du sous-marin, nous réalisons le boîtier de contrôle qui va nous permettre de diriger les moteurs et donc le SeaPerch lui-même. Son interface est très simplifiée et utilise des interrupteurs. Du coup, nous avons choisi de vous présenter la version filaire plutôt que celle avec carte électronique (qui serait plus utile dans le cas d’un boîtier plus compliqué). Deux interrupteurs permettront de contrôler les propulseurs bâbord et tribord et deux autres le propulseur vertical. Cette partie demande environ 3h.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=Robot+sous-marin,ROV,SeaPerch&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Dans cette troisième et dernière partie de la construction du sous-marin, nous réalisons le boîtier de contrôle qui va nous permettre de diriger les moteurs et donc le SeaPerch lui-même. Son interface est très simplifiée et utilise des interrupteurs. Du coup, nous avons choisi de vous présenter la version filaire plutôt que celle avec carte électronique (qui serait plus utile dans le cas d’un boîtier plus compliqué). Deux interrupteurs permettront de contrôler les propulseurs bâbord et tribord et deux autres le propulseur vertical. Cette partie demande environ 3h.</p>
<p><br/>
<div class="interlinks"><span>Manuel</span>
<ul>
<li><a href="http://www.geckogeek.fr/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html">Introduction</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-chassis-du-robot-sous-marin.html">Partie 1 : Montage du châssis du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html">Partie 2 : Montage de la propulsion du robot sous-marin</a></li>
<li><b>Partie 3 : Montage du boîtier de contrôle du robot sous-marin</b></li>
<li><a href="http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html">Mise à l&#8217;eau du robot sous-marin</a></li>
</ul>
</div>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperchBoitier-rs_boitier.jpg" alt="" title="seaperchBoitier-rs_boitier" class="aligncenter" style="width:400px" /></p>
<h2>Matériel &#038; Outils nécessaires</h2>
<table cellpadding="0" cellspacing="0" border="0" class="seaperchArray">
<tr>
<td colspan="4">Outils Nécessaires</td>
</tr>
<tr class="sChild">
<td width="25%">Outil</td>
<td width="25%">Image</td>
<td width="25%">Outil</td>
<td width="25%">Image</td>
</tr>
<tr>
<td style="text-align:left;">Perceuse + mèches 6,5 mm &#038; 2,5 mm</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/perceuse-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Pince à dénuder ou Cutter</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/pinceADenuder-rs_materiel_outils.jpg"><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/cutter-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Fer à souder + étain</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/ferASouder-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Ruban Isolant (ou Gaine thermo)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/rubanIsolant-rs_materiel_outils.jpg"></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" border="0" class="seaperchArray">
<tr>
<td colspan="5">Matériel : Propulsion</td>
</tr>
<tr class="sChild">
<td width="40">Qt</td>
<td>Pièce</td>
<td>Taille (cm)</td>
<td>Diamètre (mm)</td>
<td>Image</td>
</tr>
<tr>
<td>1</td>
<td style="text-align:left;">Boitier avec couvercle à vis</td>
<td>12x6x4</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/boitier/boitier-rs_materiel_boitier.jpg"></td>
</tr>
<tr>
<td>2</td>
<td style="text-align:left;">Interrupteur à Bascule</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/boitier/interrupteurBascule-rs_materiel_boitier.jpg"></td>
</tr>
<tr>
<td>2</td>
<td style="text-align:left;">Interrupteur à Bouton Poussoir</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/boitier/interrupteurBoutonPoussoir-rs_materiel_boitier.jpg"></td>
</tr>
<tr>
<td>2</td>
<td style="text-align:left;">Pince Crocodile</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/boitier/pinceCrocodile-rs_materiel_boitier.jpg"></td>
</tr>
<tr>
<td>2</td>
<td style="text-align:left;">Gaine Pince Crocodile</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/boitier/gainesCrocodiles-rs_materiel_boitier.jpg"></td>
</tr>
<tr>
<td>1</td>
<td style="text-align:left;">Câble porte-fusible 1.25ʼʻx25ʼʼ</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/boitier/cablePorteFusible-rs_materiel_boitier.jpg"></td>
</tr>
<tr>
<td>1</td>
<td style="text-align:left;">Fusible verre 10A</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/boitier/fusible-rs_materiel_boitier.jpg"></td>
</tr>
</table>
<h2>Préparation du matériel</h2>
<p>Commencez par réunir le matériel nécessaire à la construction du boîtier. En voici une photo afin que vous puissiez bien identifier tous les éléments :</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/materielBoitierAnnote-rs_boitier.png" alt="" title="materielBoitierAnnote-rs_boitier" width="600" height="467" class="aligncenter size-full wp-image-1349" /></p>
<p>① Boîtier<br />
② Interrupteurs à bouton poussoir<br />
③ Interrupteurs à bascule<br />
④ Fusible 10A<br />
⑤ Pinces crocodiles et leurs gaines<br />
⑥ Fils électriques rouge et noir<br />
⑦ Câble porte-fusible<br />
⑧ Câble d’alimentation</p>
<p>Voici le schéma électrique représentant ce que nous allons réaliser dans le boîtier de contrôle. L’alimentation sera distribuée à des switches (interrupteurs) qui s’occuperont de changer la polarité des moteurs pour tourner dans un sens ou dans l’autre (ou les arrêter).</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch_schema-electrique-boitier.png" alt="" title="seaperch_schema-electrique-boitier" class="aligncenter" style="width:700px" /></p>
<h2>Préparation du boîtier</h2>
<p>Avec un marqueur, notez l’emplacement des trous selon le schéma ci-dessous. Ne vous placez pas trop près des bords au risque de casser le boîtier ou de ne pas pouvoir mettre les interrupteurs à cause des pas de vis du couvercle qui se trouvent généralement dans les coins.</p>
<p><center><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/preparationBoitier1-rs_boitier.png" alt="" title="preparationBoitier1-rs_boitier" style="width:250px"/>   <img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/preparationBoitier2-rs_boitier.png" alt="" title="preparationBoitier2-rs_boitier" style="width:250px" /></center></p>
<p>① Deux trous sur le dessus pour le contrôle des propulseurs horizontaux<br />
② Deux trous sur le côté de la façade avant pour le contrôle du propulseur vertical<br />
③ Un trou au milieu de la façade avant pour la sortie du câble d’attache<br />
④ Un trou au milieu de la façade arrière pour l’entrée du câble d’alimentation</p>
<p>Utilisez la mèche 6,5 mm et percez aux emplacements marqués. Vérifiez que les pas de vis des interrupteurs rentrent bien dans les trous correspondants. Il en va de même pour le câble d’attache et le câble d’alimentation. Agrandissez au besoin.</p>
<h2>Préparation du câble d’alimentation</h2>
<p>Cette étape est séparée en trois parties dont le résultat sera assemblé à la fin pour former le câble d’alimentation.</p>
<h3>Câble porte-fusible</h3>
<p>Nous commençons par préparer le câble porte-fusible. Il est constitué de deux pièces en plastique qui se referment l’une sur l’autre et se maintiennent fermées. Dans l’une d’elle, on trouve un ressort et dans les deux des connecteurs. Le fusible se place dedans. Il se peut que le câble arrive non coupé (un seul câble relie les deux pièces en plastiques) afin que les différents éléments ne se détachent pas lors de la livraison, vous devrez alors le couper vous même pour avoir les deux extrémités du câble.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/cablePorteFusible-rs_boitier.png" alt="" title="cablePorteFusible-rs_boitier" width="570" height="195" class="aligncenter size-full wp-image-1347" /></p>
<p>Dénudez sur environ 6 mm les deux extrémités du câble. Enfilez d’un côté (il n’y a pas de sens obligatoire) la gaine rouge de la pince crocodile puis soudez l’extrémité du câble à la pince crocodile. Recouvrez la pince de sa gaine. Glissez le fusible dans son emplacement (il n’y a pas de sens) et mettez le câble porte-fusible de côté. </p>
<h3>Alimentation générale</h3>
<p>Prenez le câble d’alimentation. Il est composé de deux conducteurs, chacun séparé par leur couche d’isolant. Les deux parties sont différentiables soit par une marque soit par leur couleur. Nous considérerons la partie colorée ou marquée comme la partie positive, l’autre sera la partie négative. </p>
<p>Séparez en deux l’une des extrémités sur environ 2-3 cm sans abîmer les isolants.  Dénudez les deux embouts sur environ 6 mm et rentrez cette partie du câble dans le trou du boîtier correspondant ④. Enfilez-le sur environ 10-15 cm et faîtes un noeud côté intérieur (pour relâcher  la tension).</p>
<p>Séparez de la même manière l’autre extrémité du câble mais sur une longueur un peu plus grande (à peu près de la même longueur que le câble porte-fusible). Coupez le câble correspondant à la partie positive à 2-3 cm de la jointure (cette partie sera remplacée par le câble porte-fusible). Dénudez les deux embouts sur environ 6 mm.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/soudure-rs_boitier.jpg" alt="" title="soudure-rs_boitier" class="aligncenter" style="width:300px" /></p>
<p>Enfilez la gaine noire de la pince crocodile sur l’embout négatif (celui qui n’est pas coupé) puis soudez l’extrémité à la pince crocodile. Recouvrez la pince de sa gaine. Mettez le câble d’alimentation de côté.</p>
<h3>Distribution de l’alimentation (pour les interrupteurs)</h3>
<p>Prenez les fils rouge et noir. Ils doivent mesurer à peu près 60 cm de longueur. Coupez-les en quatre, cela vous fait 8 morceaux de 14-16 cm approximativement. Dénudez tous les embouts sur environ 6 mm.</p>
<h3>Assemblage</h3>
<p>Commençons par le côté du câble d’alimentation qui est enfilé dans le trou du boîtier. Prenez les 4 fils rouges que vous venez de découper et soudez-les à l’embout positif du câble d’alimentation. Soudez ensuite les 4 fils noirs à l’embout négatif (toujours côté boîtier). N’oubliez pas de couvrir les deux soudures de gaine thermo (si possible de la même couleur que le fil) ou de ruban isolant. Voilà pour la distribution de l’alimentation.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/assemblageDistributionAlim-rs_boitier.png" alt="" title="assemblageDistributionAlim-rs_boitier"class="aligncenter" style="width:400px" /></p>
<p>Pour finir, de l’autre côté du câble d’alimentation, il suffit de souder le câble porte-fusible (l’embout qui n’a pas la pince crocodile) à l’embout positif du câble d’alimentation. Couvrez la soudure de gaine thermo.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/assemblagePorteFusible-rs_boitier.png" alt="" title="assemblagePorteFusible-rs_boitier" class="aligncenter" style="width:350px" /></p>
<h2>Fixation du câble d’attache</h2>
<p>Prenez l’extrémité libre du câble d’attache (celle non soudée aux moteurs) et rentrez là sur 10-15 cm dans le trou du boîtier correspondant ③ et faîtes un noeud à l’intérieur du boîtier pour relâcher la tension. Dénudez la partie qui se trouve côté boîtier sur une dizaine de centimètre. Les quatre paires de fils bicolores sont donc maintenant à l’intérieur du boîtier. Dénudez leurs extrémités (sauf pour la paire Marron qui n’est pas utilisée).</p>
<h2>Câblage des interrupteurs à bouton poussoir</h2>
<p>Ces deux interrupteurs vont servir à contrôler la propulsion verticale. </p>
<p>Reportez-vous au schéma électrique et au schéma de câblage ci-dessous pour plus de clarté. Soudez un fil rouge du câble d’alimentation sur le connecteur NO d’un interrupteur à bouton poussoir, un fil noir sur le connecteur NC. Puis soudez le fil Orange-Blanc de la paire Orange du câble d’attache au connecteur C.</p>
<p>Recommencez pour le second interrupteur, mais sur le connecteur C vous souderez le fil Orange de la paire.</p>
<p>Si vous n’êtes pas sûr de la position des connecteurs, voici comment procéder pour les retrouver. Tout d&#8217;abord, munissez-vous d&#8217;un voltmètre en mode bipeur (mode où lorsque les deux sondes sont en contact le module émet un &#8220;bip&#8221; pour signaler un court-circuit). Ce module va nous permettre de déterminer qu&#8217;elles sont les pinoches en contact les unes entre les autres lorsque le bouton poussoir est appuyé ou non.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch_schema-electrique-cabaleg-interrupteur-bouton-poussoir.png" alt="" title="seaperch_schema-electrique-cabaleg-interrupteur-bouton-poussoir" class="aligncenter" style="width:600px" /></p>
<p>Au repos vous devriez avoir la pin NC (masse) et la pin C en contact, et en position appuyé, la pin NO (+) et la pin C en contact. Ce contact est traduit par le petit bip. Si toutefois vous disposez d&#8217;un connecteur du même genre sans désignation, vous n&#8217;avez qu’à appliquer la méthode suivante pour trouver les bonnes connections :</p>
<p>Bouton poussoir au repos :<br />
Apposez une sonde sur une pin, n’importe laquelle. <br />
Apposez la seconde sonde tour à tour sur les deux autres pin restantes jusqu&#8217;à entendre le bip. Vous avez alors identifié les deux pin en contact au repos.</p>
<p>Ces deux pin en contact sont donc NC et C, reste à déterminer laquelle est qui. Quant à la troisième pin qui n’a pas produit de son, c’est NO. </p>
<p>Pour la suite, vous vous en doutez, vous reproduisez la même expérience, bouton poussoir appuyé. Placez votre première sonde sur la pin identifiée comme NO et apposez la seconde sonde tour à tour sur les deux autres pin jusqu’à entendre le bip. La pin qui produit le son sera C, et la troisième sera donc NC.</p>
<p>Voilà, vous avez maintenant établi les connections de l’interrupteur à bouton poussoir pour votre câblage.</p>
<h2>Câblage des interrupteurs à bascule</h2>
<p>Ces deux autres interrupteurs vont quant à eux servir à contrôler la propulsion horizontale.</p>
<p>Coupez quatre petits bouts sur le fil Blanc-Marron de la paire non utilisée (environ 4 cm pour chaque morceau) et dénudez leurs extrémités. Soudez-les en croisé sur chacun des deux interrupteurs comme indiqué sur le schéma.</p>
<p>Soudez ensuite les fils d’alimentation noirs et rouges sur les connecteurs NC et NO des deux interrupteurs (cf schéma). Puis soudez la paire Bleue sur les connecteurs C1, C2 de l’un des interrupteurs, et la paire Verte sur les connecteurs C1, C2 de l’autre (cf schéma).</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch_schema-electrique-interrupteur-bascule.png" alt="" title="seaperch_schema-electrique-interrupteur-bascule" class="aligncenter" style="width:600px" /><br />
<img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch_cablage-interrupteur-bascule.png" alt="" title="seaperch_cablage-interrupteur-bascule"class="aligncenter" style="width:600px" /></p>
<p>Si vous n’êtes pas sûr de la position des connecteurs, procédez de manière similaire que précédemment. Reprenez le voltmètre en mode bipeur.</p>
<p>La différence réside dans le fait que ces types d’interrupteurs possèdent 3 positions. Ils présentent deux lignes de trois pins identiques mais avec des résistances à différents ampérages. Le but de l’interrupteur dans notre montage est de pouvoir utiliser ces deux lignes pour inverser le sens de rotation du moteur ou l’arrêter (cf schéma électrique). </p>
<p>En position OFF (centrale) aucune des quatre pin C1 à C4 n’est en contact. En position gauche, les pin C1 et NC sont en contact, et les pin C2 et NO le sont également. En position droite, ce sont C3 et NC qui sont en contact ainsi que C4 et NO. </p>
<p>Nous relions en croisé C1 et C4, et C2 et C3, donc quand la pin d’une paire est en contact avec NO ou NC, la seconde le sera aussi. On obtient donc les groupes de contact suivant pour la position OFF : C1-C4 et C2-C3, pour la position gauche : C1-NC-C4 et C2-NO-C3, et pour la position droite : C3-NC-C2 et C4-NO-C1.</p>
<p>Il nous suffit donc d’identifier NC et NO pour pouvoir reconnaitre toutes les pin. Placez l’interrupteur en position gauche et apposez votre sonde sur la pin du milieu qui se trouve à gauche. Si elle est en contact avec celle qui se trouve au dessus d’elle (potentiellement C1) alors il s’agit bien de NC. Si elle est en contact avec celle du dessous (potentiellement C3), il s’agit de NO. Reportez-vous au schéma électrique pour savoir comment se positionnent les pin C1 à C4 autour de NC et NO.</p>
<h2>Finition du boîtier de contrôle</h2>
<p>Vissez les interrupteurs dans leurs emplacements. Attention aux sens : pour les interrupteurs gauche-droite, mettez-les dans le même sens (les fils rouges NO à gauche), pour les interrupteurs haut-bas, le Orange (bas) au dessus du Orange-Blanc (haut) quand on regarde la boîte comme sur la photo ci-dessous.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch_interieurBoitier-rs_boitier.jpg" alt="" title="seaperch_interieurBoitier-rs_boitier"class="aligncenter" style="width:400px" /></p>
<p>Avant de fermer, il faut tester si tout marche bien. Placez tous les interrupteurs en position off. Alimentez en 12v et testez les interrupteurs un par un, dans un sens puis dans l’autre.  S’il y a un problème, revenez sur les deux étapes précédentes et vérifiez vos connexions. Vérifiez également que les moteurs tournent dans le sens voulu par rapport à la commande. Si ce n’est pas le cas, plutôt que de refaire les soudures, vous pouvez intervertir les interrupteurs ou les faire pivoter.</p>
<p>Sinon vous pouvez rentrer tous les fils dans le boîtier et visser le couvercle. Votre boîtier de contrôle est maintenant terminé.</p>
<p>Rendez-vous maintenant pour le dernier billet : <a href="http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html">check-liste et mise à l&#8217;eau de votre sous-marin</a>.</p>
<p><b>Manuel Complet</b> en PDF : <a href="http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf">http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html</feedburner:origLink></item>
		<item>
		<title>SeaPerch : Montage de la Propulsion du Robot Sous-Marin</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/pWSyTdUAWvE/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html</link>
		<comments>http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html#comments</comments>
		<pubDate>Thu, 29 Jul 2010 15:26:10 +0000</pubDate>
		<dc:creator>Lya</dc:creator>
				<category><![CDATA[AUV, UAV & co]]></category>
		<category><![CDATA[Robot sous-marin]]></category>
		<category><![CDATA[ROV]]></category>
		<category><![CDATA[SeaPerch]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1202</guid>
		<description><![CDATA[La seconde partie de la construction du robot sous-marin consiste à monter le système de propulsion, c’est à dire les moteurs et les hélices. Comme les moteurs vont se retrouver dans l’eau, il va falloir les rendre étanches. Ce passage n’est pas évident à réaliser et demande un peu de temps. Vous pouvez compter environ 4h pour cette partie.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-montage-de-la-propulsion-du-robot-sous-marin.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-montage-de-la-propulsion-du-robot-sous-marin.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=Robot+sous-marin,ROV,SeaPerch&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>La <strong>seconde partie</strong> de la construction du robot sous-marin consiste à monter le <strong>système de propulsion</strong>, c’est à dire les moteurs et les hélices. Comme les moteurs vont se retrouver dans l’eau, il va falloir les rendre <strong>étanches</strong>. Ce passage n’est pas évident à réaliser et demande un peu de temps. Vous pouvez compter environ 4h pour cette partie.</p>
<p><br/>
<div class="interlinks"><span>Manuel</span>
<ul>
<li><a href="http://www.geckogeek.fr/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html">Introduction</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-chassis-du-robot-sous-marin.html">Partie 1 : Montage du châssis du robot sous-marin</a></li>
<li><b>Partie 2 : Montage de la propulsion du robot sous-marin</b></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html">Partie 3 : Montage du boîtier de contrôle du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html">Mise à l&#8217;eau du robot sous-marin</a></li>
</ul>
</div>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch-rs_propulsion.jpg" alt="" title="seaperch-rs_propulsion" width="519" height="430" class="aligncenter size-full wp-image-1336" /></p>
<h2>Matériel &#038; Outils nécessaires</h2>
<table cellpadding="0" cellspacing="0" border="0" class="seaperchArray">
<tr>
<td colspan="4">Outils Nécessaires</td>
</tr>
<tr class="sChild">
<td width="25%">Outil</td>
<td width="25%">Image</td>
<td width="25%">Outil</td>
<td width="25%">Image</td>
</tr>
<tr>
<td style="text-align:left;">Ciseaux</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/ciseaux-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Tournevis cruciforme</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/tournevis-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Perceuse + mèches 6,5 mm &#038; 2,5 mm</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/perceuse-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Pince</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/pince-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Fer à souder + étain</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/ferASouder-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Ruban Isolant</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/rubanIsolant-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Ruban en Caoutchouc Butyle (peut être remplacé par la colle chaude)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/rubanButyle-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Epoxy + Bâtonnet</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/epoxy-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Casserole + Pot (bain-marie)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/casserole-rs_materiel_outils.jpg"><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/verre-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Colle chaude (optionnel)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/colleChaude-rs_materiel_outils.jpg"></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" border="0" class="seaperchArray">
<tr>
<td colspan="5">Matériel : Propulsion</td>
</tr>
<tr class="sChild">
<td width="40">Qt</td>
<td>Pièce</td>
<td>Taille (cm)</td>
<td>Diamètre (mm)</td>
<td>Image</td>
</tr>
<tr>
<td>3</td>
<td style="text-align:left;">Flacon plastique 50ml (boîte pellicule photo)</td>
<td>5,0</td>
<td>30,0</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/boitePellicule-rs_materiel_propulsion.jpg"></td>
</tr>
<tr>
<td>3</td>
<td style="text-align:left;">Moteur 12V</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/moteur-rs_materiel_propulsion.jpg"></td>
</tr>
<tr>
<td>1</td>
<td style="text-align:left;">Câble à 4 paires torsadées (câble dʼattache)</td>
<td>1200</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/cableAPaires-rs_materiel_propulsion.jpg"></td>
</tr>
<tr>
<td>1/2</td>
<td style="text-align:left;">Anneau de cire de toilette</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/cire-rs_materiel_propulsion.jpg"><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/anneauCire-rs_materiel_propulsion.jpg"></td>
</tr>
<tr>
<td>3</td>
<td style="text-align:left;">Hélice 1/8&#8243; 0.19-0.35</td>
<td>-</td>
<td>40,0</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/helice-rs_materiel_propulsion.jpg"></td>
</tr>
<tr>
<td>3</td>
<td style="text-align:left;">Arbre de transmission 4-40 0.095&#8243;</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/arbreTransmission-rs_materiel_propulsion.jpg"></td>
</tr>
<tr>
<td>6</td>
<td style="text-align:left;">Ecrou hexagonal en laiton</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/propulsion/ecrou-rs_materiel_chassis.jpg"></td>
</tr>
</table>
<h2>Préparation des conteneurs des moteurs</h2>
<p>Avec une mèche 2,5 mm, <strong>percez un trou au centre</strong> de chacun des bouchons des trois boîtes de pellicules. Ce sont par ces trous que vont passer les fils. </p>
<p>Percez avec la même mèche <strong>le fond des boîtes</strong>. Vous devez percer exactement au centre et faire très attention à ne pas trop élargir le trou. Les axes des moteurs passeront par ces trous, c’est pour cela qu’ils doivent être parfaitement centrés. Testez si les moteurs rentrent bien dans les boites et leurs axes par les trous du fond.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/boitesPellicules-rs_propulsion.png" alt="" title="boitesPellicules-rs_propulsion" width="508" height="280" class="aligncenter size-full wp-image-1328" /></p>
<h2>Préparation des moteurs</h2>
<p>Nous allons commencer par <strong>tester la polarité des moteurs</strong>. Alimentez-les en 12V avec un câble rouge et un câble noir sur chacun des connecteurs. Vous pouvez ajouter un bout de papier sur leurs axes pour mieux les voir tourner. Si l’axe tourne dans le sens inverse des aiguilles d’une montre quand il est orienté vers vous, alors vous êtes câblé dans le bon sens. <strong>Apposez une marque</strong> sur le connecteur sur lequel vous avez branché votre câble rouge : c’est le connecteur positif. S’il tourne dans l’autre sens, c’est qu’il est câblé à l’envers : vérifiez et apposez la marque sur l’autre connecteur. Cette marque vous permettra de repérer facilement la polarité quand le moteur sera tout emmailloté.</p>
<p>Recouvrez maintenant <strong>les trois moteurs</strong> (hormis leurs deux connecteurs et leur axe) avec du <strong>ruban isolant</strong>. Faîtes bien attention à ne pas laisser de trou ni de plis car la cire qui servira à les rendre étanches ne doit pas pouvoir entrer dans les moteurs (elle les endommagerai). Ne les rendez pas non plus trop gros car ils doivent toujours pouvoir se glisser dans la boîte de pellicule photo (en plus de la cire). </p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/moteurEmmaillote-rs_propulsion.jpg" alt="" title="moteurEmmaillote-rs_propulsion"class="aligncenter" style="width:150px" /></p>
<p>Pour plus de facilité, coupez des petits bouts de ruban pour les deux extrémités. Pour le dessus et le dessous, tendez les morceaux bien droit et appuyez pour que l’axe ou les connecteurs percent le ruban, ainsi le reste sera bien recouvert. Coupez des morceaux plus longs pour les enrouler autour du corps. Vérifiez bien qu’il n’y ait pas de trou, sinon les moteurs risqueraient de moins bien marcher ou de s’abîmer plus rapidement. </p>
<p>Vérifiez à nouveau que les moteurs rentrent bien dans les boîtes de pellicules photos.</p>
<h2>Câblage des moteurs</h2>
<p>Il s’agit d’un <strong>ROV</strong>, il est donc <strong>connecté à la surface par un câble d’attache</strong> dans lequel se trouvent 4 paires de fils torsadés.</p>
<p>Dénudez un bout du câble d’attache sur environ 38 cm en faisant bien attention <strong>à ne pas couper les fils</strong> qui se trouvent dedans. Séparer les quatre paires torsadées les unes des autres. La paire Marron ne sera pas utilisée et peut être laissée de côté.</p>
<p>Prenez une des trois paires de fils (n’importe quelle couleur) et <strong>enfilez-la à travers le bouchon</strong> d’une boîte de pellicule photo sur environ 10 cm. Faîtes <strong>un noeud</strong> sur le côté intérieur du bouchon pour <strong>relâcher la tension</strong>. Faire de même pour les deux autres paires de fils.</p>
<p>[TABLEAU CODE COULEUR]</p>
<p>Dénudez chaque embout des fils des trois paires sur environ 6 mm. <strong>Soudez</strong> ensuite pour chaque paire le câble coloré au connecteur positif d’un moteur et le câble bicolore (couleur + blanc) au second connecteur (négatif). Le tableau ci-dessus récapitule le code couleur utilisé.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/moteursCables-rs_propulsion.png" alt="" title="moteursCables-rs_propulsion" width="496" height="343" class="aligncenter size-full wp-image-1334" /></p>
<p>Avant de passer à l’étape suivante (scellage des moteurs dans la cire pour les rendre étanches), n’oubliez pas de tester si les connections sont bonnes.</p>
<h2>Etanchéité des moteurs</h2>
<p>Il faut maintenant rendre les <strong>moteurs étanches</strong>. Pour cela nous allons utiliser de la <strong>cire</strong> qui va sceller les moteurs dans les boîtes de pellicule photo. Cette partie n’est pas évidente. Il est conseillé de se munir de gants, pour ne pas se salir les mains, ainsi que de protéger l’espace de travail (la cire va couler). Vous pouvez aussi porter un tablier pour protéger vos vêtements.</p>
<p>Coupez la moitié de l’anneau en cire (cela suffit pour trois moteurs) et faîtes la fondre au <strong>bain-marie (pas de micro-onde, ni directement dans la casserole, c’est dangereux)</strong>. La cire doit être liquide et fluide mais elle ne doit pas non plus être trop chaude. Ce type de cire ne durci pas, cela permettra d’avoir un<strong> corps gras</strong> en permanence autour du moteur qui repousse l’eau tout en laissant l’axe tourner à son aise (la cire se reforme autour de lui).</p>
<p>Trouvez un support pour pouvoir maintenir les boîtes verticalement avec l’axe du moteur qui dépasse en dessous (vous pouvez utiliser un étau mais il ne faut pas trop serrer au risque de déformer les boîtes, les poser sur un support troué qui laisse passer les axes est préférable).</p>
<p>Mettez un bout de ruban isolant sur les trous du fond des boîtes (à l’extérieur). Cela empêchera la cire de couler tant que vous n’avez pas mis le moteur. Ne le mettez pas trop serré car il doit partir facilement quand vous plongerez le moteur. (Vous pouvez éventuellement le percer un peu avec l’axe du moteur au préalable pour éviter que trop de cire ne tombe quand vous plongez le moteur.) </p>
<p>Remplissez une première boîte avec la cire fondue sur <strong>à peu près 1 cm de hauteur</strong>. Plongez-y le moteur et remuez-le pour que <strong>l’axe ressorte</strong> comme il faut. La cire va remonter sur les côtés (et va sortir par le trou du dessous) mais ne doit pas remonter par dessus le moteur. La cire se solidifie rapidement au contact de l’air et du moteur qui sont froids. Mettez le bouchon pour éviter les déformations de la boîte, laissez refroidir et répétez l’opération sur les deux autres boîtes.</p>
<p>Maintenant il faut mettre une <strong>deuxième couche de cire</strong>. Débouchez les boîtes et ajoutez -y de la cire fondue afin qu’elle recouvre <strong>juste le dessus des moteurs</strong> (et non jusqu’en haut de la boîte). Penchez au besoin les boîtes pour retirer les bulles d’air tant que la cire est liquide. Attendez un peu que la cire refroidisse.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/moteurScelle-rs_propulsion.png" alt="" title="moteurScelle-rs_propulsion" class="aligncenter" style="width:150px" /></p>
<p>Et enfin la <strong>troisième et dernière couche</strong>. Vérifiez que les bouchons se fixent toujours bien et préparez les fils pour qu’ils se rentrent comme il faut. Remplissez une première boîte <strong>à ras bord</strong> puis rajoutez-en un peu afin que la surface soit <strong>bombée</strong>. Quand vous fermez le bouchon, la cire doit ressortir par le trou, laissez-la former un petit cône à cet endroit afin qu’il n’y ait pas de fuite. Répétez la manoeuvre avec les deux autres boîtes. </p>
<p>Laissez refroidir le tout. Si tout s’est bien passé, les moteurs sont maintenant étanches.  </p>
<p>NB : pour un côté pratique, nous avons scellé les couvercles et leurs trous non pas à la cire mais à la colle chaude (en dégraissant bien les surfaces au préalable). Car, la cire restant un peu molle, à chaque mouvement des fils elle avait tendance à s’écarter. </p>
<h2>Montage des hélices</h2>
<p>Nettoyez bien la cire qui serait restée sur les axes des moteurs. Enfilez un écrou sur les axes des hélices presque jusqu’au bout. Observez les hélices, le côté <strong>doté d’une rainure</strong> est celui qui sera tourné vers le moteur.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/helicesMontage-rs_propulsion.png" alt="" title="helicesMontage-rs_propulsion" width="480" height="266" class="aligncenter size-full wp-image-1332" /></p>
<p>Préparez votre plan de travail et<strong> installez bien en vue</strong> tous les éléments nécessaires à cette étape. L’époxy devient inutilisable au bout de <strong>3 minutes</strong>, vous devrez donc aller vite. Avec la quantité d’époxy présente dans un paquet vous pouvez monter jusqu’à 10 hélices à la fois.</p>
<p>Mélangez l’époxy sur un morceau de papier avec un bâtonnet jusqu’à ce qu’elle devienne uniforme. </p>
<p>Utilisez le bâtonnet pour mettre <strong>une goutte d’époxy sur chacun des axes d’hélice</strong> juste derrière l’écrou, puis vissez l’écrou à fond.<br />
Ajoutez <strong>une goutte sur l’axe juste au dessus des écrous</strong> et enfilez les hélices (la rainure vers le bas). Ajoutez à nouveau <strong>une goutte sur les petits bouts des axes qui dépassent</strong> et vissez-y les seconds écrous. Ce côté-là est terminé, reste la fixation à l’axe du moteur. </p>
<p>Ajoutez <strong>une goutte dans le trou de l’axe de l’hélice</strong>, et <strong>une sur le bout de l’axe du moteur</strong>. Glissez l’axe de l’hélice sur celui du moteur. Recommencez avec les deux autres. <strong>Pressez bien</strong> les axes des hélices sur ceux des moteurs pendant au moins trois minutes afin qu’ils ne soient pas repoussés en arrière à cause de la pression de l’époxy.</p>
<p>Laissez les moteurs reposer pendant <strong>au moins 60 minutes</strong> sans les toucher. Il faut <strong>24 heures</strong> pour que l’époxy finisse de sécher totalement.</p>
<h2>Montage des propulseurs sur le châssis</h2>
<p>Dévissez les support moteurs. Glissez un moteur dans chacun des supports et vissez-les sur le châssis, hélices vers l’extérieur.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/fixationPropulseur-rs_propulsion.jpg" alt="" title="fixationPropulseur-rs_propulsion"  class="aligncenter" style="width:300px" /></p>
<p>Commencez par celui du milieu (paire Orange), puis montez ceux des côtés (paire Bleue à gauche, paire Verte à droite). Reportez-vous au tableau ci-dessous pour la correspondance. </p>
<p>[TABLEAU CODE COULEUR]</p>
<p>Vous pouvez maintenant <strong>orienter les tubes PVC</strong> pour donner l’angle que vous souhaitez à vos moteurs selon le type de propulsion qui sera le plus adapté à votre mission. Vous obtiendrez <strong>une plus grande stabilité</strong> si les propulseurs sont <strong>parallèles</strong> à la ligne qui rejoint leur centre avec le centre de gravité du SeaPerch.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/chassisPropulsion-rs_propulsion.jpg" alt="" title="chassisPropulsion-rs_propulsion" width="518" height="387" class="aligncenter size-full wp-image-1329" /></p>
<h2>Etanchéité du câble d’attache</h2>
<p>Mettez du ruban en caoutchouc butyle (nous avons mis de la colle chaude à la place) pour s<strong>celler l’embout de la gaine du câble d’attache</strong> afin que l’eau ne rentre pas dedans. Enroulez du ruban isolant par dessus cette intersection. Le câble d’attache est maintenant étanche.</p>
<p>Faîtes <strong>une boucle</strong> avec le câble et fixez-le avec un collier rilsan sur le bas du châssis pour <strong>relâcher la tension</strong>. Ainsi il ne tirera pas sur les moteurs.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/etancheiteCableAttache-rs_propulsion.jpg" alt="" title="etancheiteCableAttache-rs_propulsion" width="414" height="310" class="aligncenter size-full wp-image-1330" /></p>
<p>La seconde partie est finie, nous allons maintenant <a href="http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html">monter le boîtier de contrôle</a>.</p>
<p><b>Manuel Complet</b> en PDF : <a href="http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf">http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html</feedburner:origLink></item>
		<item>
		<title>SeaPerch : Montage du Châssis du Robot Sous-Marin</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/bDUVDkI_m4c/seaperch-montage-du-chassis-du-robot-sous-marin.html</link>
		<comments>http://www.geckogeek.fr/seaperch-montage-du-chassis-du-robot-sous-marin.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 10:50:14 +0000</pubDate>
		<dc:creator>Vinz</dc:creator>
				<category><![CDATA[AUV, UAV & co]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[Robot sous-marin]]></category>
		<category><![CDATA[ROV]]></category>
		<category><![CDATA[SeaPerch]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1206</guid>
		<description><![CDATA[Dans cette première partie de la construction du SeaPerch, nous allons monter sa structure qui est essentiellement composée de PVC. Vous pouvez prévoir environ trois heures pour cette réalisation. Elle ne présente pas de difficulté particulière.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-montage-du-chassis-du-robot-sous-marin.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-montage-du-chassis-du-robot-sous-marin.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=MIT,Robot+sous-marin,ROV,SeaPerch&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Dans cette première partie de la construction du SeaPerch, nous allons monter sa <strong>structure</strong> qui est essentiellement composée de <strong>PVC</strong>. Vous pouvez prévoir environ <strong>trois heures</strong> pour cette réalisation. Elle ne présente pas de difficulté particulière.</p>
<div class="interlinks"><span>Manuel</span>
<ul>
<li><a href="http://www.geckogeek.fr/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html">Introduction</a></li>
<li><b>Partie 1 : Montage du châssis du robot sous-marin</b></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html">Partie 2 : Montage de la propulsion du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html">Partie 3 : Montage du boîtier de contrôle du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html">Mise à l&#8217;eau du robot sous-marin</a></li>
</ul>
</div>
<p><br/></p>
<p><img class="aligncenter" style="width: 400px;" title="seaperch-rs_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch-rs_chassis.jpg" alt="" /></p>
<h2>Matériel &amp; Outils nécessaires</h2>
<table cellpadding="0" cellspacing="0" border="0" class="seaperchArray">
<tr>
<td colspan="4">Outils Nécessaires</td>
</tr>
<tr class="sChild">
<td width="25%">Outil</td>
<td width="25%">Image</td>
<td width="25%">Outil</td>
<td width="25%">Image</td>
</tr>
<tr>
<td style="text-align:left;">Règle</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/regle-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Marqueur</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/marqueur-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Coupe-tube PVC ou Scie</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/coupeTubePVC-rs_materiel_outils.jpg"><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/scie-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Ciseaux</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/ciseaux-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Pince</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/pince-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Tournevis cruciforme</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/tournevis-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Perceuse + mèches 6,5 mm &#038; 2,5 mm</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/perceuse-rs_materiel_outils.jpg"></td>
<td style="text-align:left;">Etau ou Serre-joint</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/etau-rs_materiel_outils.jpg"><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/serreJoint-rs_materiel_outils.jpg"></td>
</tr>
<tr>
<td style="text-align:left;">Maillet en caoutchouc (ou marteau dans un chiffon)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/outils/mailletCaoutchouc-rs_materiel_outils.jpg"></td>
<td style="text-align:left;"></td>
<td></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" border="0" class="seaperchArray">
<tr>
<td colspan="5">Matériel : Châssis</td>
</tr>
<tr class="sChild">
<td width="40">Qt</td>
<td>Pièce</td>
<td>Taille (cm)</td>
<td>Diamètre (mm)</td>
<td>Image</td>
</tr>
<tr>
<td>1</td>
<td style="text-align:left;">Poutre PVC en H</td>
<td>38</td>
<td>9,5</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/poutreHPVC-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>1</td>
<td style="text-align:left;">Tube PVC Sch. 40</td>
<td>150</td>
<td>16 (21)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/tubePVC-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>10</td>
<td style="text-align:left;">Coude PVC Sch. 40</td>
<td>-</td>
<td>16 (21)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/coudePVC-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>4</td>
<td style="text-align:left;">T PVC Sch. 40</td>
<td>-</td>
<td>16 (21)</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/TPVC-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>6</td>
<td style="text-align:left;">Vis à tôle acier inoxydable</td>
<td>~1,2</td>
<td>~7,0</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/vis-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>6</td>
<td style="text-align:left;">Rondelle acier inoxydable</td>
<td>-</td>
<td>~7,0</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/rondelle-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>2</td>
<td style="text-align:left;">Cylindre en mousse (flotteurs)</td>
<td>~12,5</td>
<td>~60,0</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/flotteur-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>3</td>
<td style="text-align:left;">Collier de fixation de tuyau (support moteur)</td>
<td>~8,0</td>
<td>~30,0</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/supportMoteur-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>1</td>
<td style="text-align:left;">Grillage en plastique</td>
<td>~20&#215;30</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/grillage-rs_materiel_chassis.jpg"></td>
</tr>
<tr>
<td>6-8</td>
<td style="text-align:left;">Collier de fixation rilsan</td>
<td>-</td>
<td>-</td>
<td><img src="http://www.geckogeek.fr/static/images/articles/seaperch/materiel/chassis/collierRilsan-rs_materiel_chassis.jpg"></td>
</tr>
</table>
<h2>Découpage des pièces du châssis</h2>
<p>Prenez le tube de PVC. A partir d’un bord droit, mesurez et <strong>notez au marqueur les longueurs</strong> des différents segments à découper. Il vous faudra :</p>
<ul>
<li>2 pièces de 6,4 cm de long</li>
<li>2 pièces de 10,2 cm de long</li>
<li>2 pièces de 11,4 cm de long</li>
<li>4 pièces de 3,8 cm de long</li>
<li>4 pièces de 12,7 cm de long</li>
<li>4 pièces de 2 cm de long</li>
</ul>
<p><img class="aligncenter" style="width: 400px;" title="tubesPVCMesures-rs_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/tubesPVCMesures-rs_chassis.jpg" alt="" /></p>
<p>Vous pouvez <strong>découper votre tube PVC</strong> avec un coupe-tube spécialement fait pour ou avec une scie. Si vous utilisez une scie, faites bien attention à maintenir comme il faut le tube pour qu’il ne bouge pas. Découpez les pièces le plus droit possible selon les marques que vous avez notées.</p>
<p>Il devrait vous rester quelques chutes. Vous pouvez faire les finitions au papier de verre si vous le souhaitez.</p>
<p><img class="aligncenter" style="width: 500px;" title="tubesPVCDecoupes-rs_chassis-copie" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/tubesPVCDecoupes-rs_chassis-copie.jpg" alt="" /></p>
<h2>Création de trous de drainage dans le châssis</h2>
<p>Rassemblez les <strong>coudes en PVC</strong>. Maintenez en un dans l’étau ou dans le serre-joint. Equipez la perceuse de la mèche 6,5 mm et <strong>percez un trou</strong> sur le côté extérieur du coude. Répétez l’opération sur les neuf autres coudes.</p>
<p><img class="aligncenter" style="width: 500px;" title="trouDrainage_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/trouDrainage_chassis.jpg" alt="" /></p>
<p>Ces trous sont destinés à <strong>laisser rentrer l’eau</strong> dans la structure lorsque vous mettez le SeaPerch à l’eau et à la <strong>laisser s’écouler</strong> lorsque vous l’en sortez.</p>
<h2>Assemblage du châssis</h2>
<p>Prenez toutes les pièces PVC à l&#8217;exception de celles de 2 cm. <strong>Assemblez-les</strong> selon la figure suivante pour former la structure du châssis. Si la structure n’est pas trop grande comme ici, il n’est pas nécessaire de coller les jointures.</p>
<p><img class="aligncenter size-full wp-image-1305" title="assemblageChassis2-rs_cm_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/assemblageChassis2-rs_cm_chassis.png" alt="" width="609" height="444" /></p>
<p>Voici le résultat que vous obtenez :</p>
<p><img class="aligncenter" style="width: 500px;" title="chassisMonte-rs_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/chassisMonte-rs_chassis.jpg" alt="" /></p>
<h2>Ajout des flotteurs et renforcement du châssis</h2>
<p><strong>Coupez la poutre PVC en H</strong> en deux parties égales (environ 19 cm pour chaque morceau). Glissez chacun des morceaux dans un <strong>cylindre en mousse</strong>. Les bouts doivent dépasser.</p>
<p><img class="aligncenter size-full wp-image-1309" title="montageFlotteurs-rs_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/montageFlotteurs-rs_chassis.png" alt="" width="320" height="219" /></p>
<p>Insérez les petits tubes PVC de 2 cm dans chacun des quatre coudes situés sur la partie haute du châssis. Fixez-y les embouts des poutres en H.</p>
<p><strong>Appuyez fortement sur toutes les jointures</strong> de la structure pour bien fixer les tubes. Les poutres en H ne doivent pas pouvoir tomber de leur support. Utilisez un maillet en caoutchouc (ou un marteau dans un chiffon) pour <strong>bien resserrer les connections</strong>.</p>
<p><img class="aligncenter" style="width: 450px;" title="chassisRenforce-rs_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/chassisRenforce-rs_chassis.jpg" alt="" /></p>
<h2>Ajout des supports moteurs</h2>
<p>Ajoutez maintenant les <strong>supports moteurs</strong>. Positionnez-les bien centrés sur la hauteur des tubes (voir photo) et notez l’emplacement des vis à l’aide du marqueur. Le centrage et la verticale sont très importants, <strong>plus important que l’angle</strong> car vous pourrez orienter légèrement les tubes par la suite. Choisissez donc plutôt un angle dans lequel vous pouvez percer facilement.</p>
<p><img class="aligncenter" style="width: 300px;" title="supportMoteur-rs_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/supportMoteur-rs_chassis.png" alt="" /></p>
<p><strong>Percez les trous</strong> à l’aide de la mèche de 2,5 mm. Mettez les vis dans les rondelles, puis à travers les trous des supports et vissez-les au châssis. <strong>Ne serrez pas trop</strong> car vous allez les démonter à nouveau pour y placer les moteurs et vous risquez d’abîmer le pas de vis dans le PVC.</p>
<h2>Ajout du filet de charge utile</h2>
<p>Positionnez maintenant <strong>le filet</strong> sous le châssis. Coupez les bords au besoin, mais laissez-le déborder un petit peu pour qu’il ne glisse pas.</p>
<p>Fixez-le ensuite au châssis à l’aide de <strong>6-8 colliers de fixation rilsan</strong>. Utilisez <strong>une pince pour bien serrer les colliers</strong> puis coupez à ras les bouts qui dépassent.</p>
<p><img class="aligncenter size-full wp-image-1308" title="fixationFilet-rs_chassis" src="http://www.geckogeek.fr/wp-content/uploads/2010/07/fixationFilet-rs_chassis.jpg" alt="" width="444" height="302" /></p>
<p>La première partie est finie, nous allons maintenant <a href="http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html">monter la propulsion</a>.</p>
<p><b>Manuel Complet</b> en PDF : <a href="http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf">http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/seaperch-montage-du-chassis-du-robot-sous-marin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/seaperch-montage-du-chassis-du-robot-sous-marin.html</feedburner:origLink></item>
		<item>
		<title>SeaPerch : Fabriquer facilement son Robot Sous-Marin (ROV)</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/RUp8k4ERtP0/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html</link>
		<comments>http://www.geckogeek.fr/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html#comments</comments>
		<pubDate>Mon, 26 Jul 2010 09:59:09 +0000</pubDate>
		<dc:creator>Lya</dc:creator>
				<category><![CDATA[AUV, UAV & co]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[Robot sous-marin]]></category>
		<category><![CDATA[ROV]]></category>
		<category><![CDATA[SeaPerch]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1199</guid>
		<description><![CDATA[Vous avez toujours rêver de construire votre propre robot sous-marin, mais vous pensiez que c'était trop compliqué ? Ou bien que ça prenait trop de temps, de place ? C'est que vous êtes passé à côté du SeaPerch : un petit robot sous-marin (30x20x20 cm) qui se construit en une dizaine d'heures à base de tubes de PVC. Nous vous proposons un petit manuel de construction en cinq billets. ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-fabriquer-facilement-son-robot-sous-marin-rov.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fseaperch-fabriquer-facilement-son-robot-sous-marin-rov.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=MIT,Robot+sous-marin,ROV,SeaPerch&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Vous avez toujours rêvé de construire votre propre <strong>robot sous-marin</strong>, mais vous pensiez que c&#8217;était trop compliqué ? Ou bien que ça prenait trop de temps, de place ? C&#8217;est que vous êtes passé à côté du <strong>SeaPerch</strong> : un petit robot sous-marin (30x20x20 cm) qui se construit en <strong>une dizaine d&#8217;heures</strong> à base de tubes de PVC. Nous vous proposons un petit <strong>manuel de construction</strong> en cinq billets.</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch-baby-whale-mise-a-l-eau.jpg" alt="" title="seaperch-baby-whale-mise-a-l-eau" width="524" height="319" class="aligncenter size-full wp-image-1276" /></p>
<h2>A propos du SeaPerch</h2>
<p>Le SeaPerch est un petit sous-marin téléguidé que l’on appelle <strong>ROV</strong> (Remote Operated Vehicle &#8211; véhicule commandé à distance). Le programme SeaPerch a été mis en place par le <strong>MIT Sea Grant</strong> en 2003. Ils ont conçu un kit dans un <strong>but pédagogique</strong> en simplifiant la construction d&#8217;un modèle du célèbre « Livre Jaune » (« Build Your Own Under Water Robot and Other Wet Projects », Harry Bohm &amp; Vickie Jensen).</p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/national-sea-grant-office-logo.png" alt="" title="national-sea-grant-office-logo" class="aligncenter" style="height:100px;" /></p>
<p>L’idée était de pouvoir construire <strong>facilement</strong> et à <strong>moindre coût</strong> un petit robot sous-marin en une dizaine d’heures. Dans ce cadre attractif il est alors possible d’aborder des notions scientifiques très différentes pendant toutes les étapes de la conception. La construction du SeaPerch peut faire l’objet de <strong>projets</strong> ou de <strong>travaux pratiques</strong>. La réalisation n’est pas compliquée et elle peut être abordable dès le collège (avec encadrement).</p>
<p>Au delà de cet aspect pédagogique, le côté très intéressant du SeaPerch est que l’on obtient rapidement une <strong>base</strong> qui fonctionne. A partir de celle-ci, on peut l’<strong>améliorer</strong>, la <strong>modifier</strong> ou encore y rajouter différents <strong>capteurs</strong> et autre charges utiles. Il est en outre possible de passer de modifications d’un niveau très simple à des modifications d’un niveau beaucoup plus technique, au choix.</p>
<h2>A propos du manuel</h2>
<p>Ce manuel a été rédigé en français en s’inspirant du manuel anglais et s’appuie directement sur la construction d’un SeaPerch. </p>
<p><br/>
<div class="interlinks"><span>Accès au Manuel</span>
<ul>
<li><b>Introduction</b></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-chassis-du-robot-sous-marin.html">Partie 1 : Montage du châssis du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-de-la-propulsion-du-robot-sous-marin.html">Partie 2 : Montage de la propulsion du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-montage-du-boitier-de-controle-du-robot-sous-marin.html">Partie 3 : Montage du boîtier de contrôle du robot sous-marin</a></li>
<li><a href="http://www.geckogeek.fr/seaperch-mise-a-leau-du-robot-sous-marin.html">Mise à l&#8217;eau du robot sous-marin</a></li>
</ul>
</div>
<p><br/></p>
<p><b>Manuel Complet</b> en PDF : <a href="http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf">http://www.geckogeek.fr/static/files/SeaPerch_Manual_V1.1.pdf</a></p>
<p>Il est composé de <strong>trois grandes parties</strong> qui peuvent être réalisées indépendamment les unes des autres : Châssis, Propulsion et Boîtier de commande. Chacune de ces parties est séparée en plusieurs étapes. Il est préférable de lire chaque étape entièrement avant de procéder à la manipulation.<br />
Le matériel et les outils nécessaires aux étapes sont présentés au début de chacune d’entre-elles.</p>
<p><br/>Voici le test et la mise à l&#8217;eau du SeaPerch que nous avons construit, cela vous donne une petite idée du résultat :<br />
<center><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/F3T-d64Soug&amp;hl=fr_FR&amp;fs=1?color1=0xe1600f&amp;color2=0xfebd01"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/F3T-d64Soug&amp;hl=fr_FR&amp;fs=1?color1=0xe1600f&amp;color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></center></p>
<h2>Kit</h2>
<p>Vous pouvez acheter la composition du kit en pièces détachées, mais vous pouvez aussi commander un <strong>kit tout préparé</strong> directement sur le site officiel (inscription gratuite) pour <strong>70$</strong>. </p>
<p><img src="http://www.geckogeek.fr/wp-content/uploads/2010/07/seaperch-kit-contenu.jpg" alt="" title="seaperch-kit-contenu" class="aligncenter" style="height:300px;" /></p>
<p>Nous vous conseillons d’ailleurs d’en commander un pour votre premier. Après, libre à vous de commander d’autres kits ou d’acheter vous mêmes les pièces, ce qui risque d’arriver si vous modifier la structure du SeaPerch par la suite.</p>
<p><b>Amusez-vous bien !</b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/seaperch-fabriquer-facilement-son-robot-sous-marin-rov.html</feedburner:origLink></item>
		<item>
		<title>iPhone 4 : sortie le 24 Juin – écran Retina, CoreMotion, Vidéo 720p à 30FPS, iChat Vidéo …</title>
		<link>http://feedproxy.google.com/~r/Geckogeek/~3/o_c_yLLPtdc/iphone-4-sortie-le-24-juin-ecran-retina-coremotion-video-720p-a-30fps-ichat-video.html</link>
		<comments>http://www.geckogeek.fr/iphone-4-sortie-le-24-juin-ecran-retina-coremotion-video-720p-a-30fps-ichat-video.html#comments</comments>
		<pubDate>Mon, 07 Jun 2010 19:20:47 +0000</pubDate>
		<dc:creator>Vinz</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Apple A4]]></category>
		<category><![CDATA[CoreMotion]]></category>
		<category><![CDATA[Ecran Retina]]></category>
		<category><![CDATA[iAds]]></category>
		<category><![CDATA[iChat]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.geckogeek.fr/?p=1177</guid>
		<description><![CDATA[La <strong>WWDC 2010</strong> a commencé aujourd'hui et pour se mettre dans l'ambiance <strong>Steeve Jobs</strong> a débuté avec son "habituelle Keynote". Au programme des chiffres, des remerciements, et surtout la présentation du nouvel iPhone "4" ! Voyons un peu les entrailles de ce nouveau "bijou technologique" et estimons rapidement s'il apporte un réel plus à son prédécesseur le "3GS".]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.geckogeek.fr%2Fiphone-4-sortie-le-24-juin-ecran-retina-coremotion-video-720p-a-30fps-ichat-video.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.geckogeek.fr%2Fiphone-4-sortie-le-24-juin-ecran-retina-coremotion-video-720p-a-30fps-ichat-video.html&amp;source=GeckoGeekfr&amp;style=normal&amp;service=TinyURL.com&amp;hashtags=Apple+A4,CoreMotion,Ecran+Retina,iAds,iChat,iPhone&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>La <strong>WWDC 2010</strong> a commencé aujourd&#8217;hui et pour se mettre dans l&#8217;ambiance <strong>Steeve Jobs</strong> a débuté avec son &#8220;habituelle Keynote&#8221;. Au programme des chiffres, des remerciements, et surtout la présentation du nouvel iPhone &#8220;4&#8243; ! Voyons un peu les entrailles de ce nouveau &#8220;bijou technologique&#8221; et estimons rapidement s&#8217;il apporte un réel plus à son prédécesseur le &#8220;3GS&#8221;.</p>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/06/iphone4-presentation.jpeg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/06/iphone4-presentation-300x199.jpg" alt="" title="iphone4-presentation" width="300" height="199" class="aligncenter size-medium wp-image-1187" /></a></p>
<h2>Les 8 principales caractéristiques de l&#8217;iPhone 4</h2>
<ul>
<li>Un nouveau design et <strong>24% plus fin</strong> que l&#8217;iPhone 3GS. Une <strong>caméra en facade</strong> et un <strong>flash</strong> sur l&#8217;arrière pour les photos.</li>
<li>Un <strong>écran avec 4 fois plus de pixels</strong>, appelé &#8220;<strong>écran Retina</strong>&#8220;. On arrive à environ 326 DPI. Cela donne du 960*640 pixels en définition.</li>
<li>Un <strong>processeur A4</strong> d&#8217;Apple, que l&#8217;on retrouve dans l&#8217;iPad. Par ailleurs grâce à une plus grosse batterie (malgré la plus petit taille de l&#8217;engin), on arrive à tenir 10h en vidéo et 40h en musique.</li>
<li>La présence d&#8217;un <strong>Gyroscope</strong> avec une nouvelle <strong> API : &#8220;CoreMotion</strong>&#8220;. Ceci devrait donner encore plus d&#8217;intéractivité dans les applications.</li>
<li>Une nouvelle <strong>caméra embarquant 5 millions de pixel</strong>s et surtout une technologie améliorant de beaucoup la qualité des images, comme dans un milieu à faible luminosité. Avec ceci arrive de la vidéo 720p à 30FPS et iMovie version iPhone (4.99$ sur l&#8217;AppStore) pour modifier ses vidéos directement.</li>
<li>L&#8217;OS de l&#8217;iPhone 4 est renommé &#8220;<strong>iOS 4</strong>&#8220;.</li>
<li>L&#8217;application de livres<strong> &#8220;iBooks&#8221; sur iPhone</strong> : synchronisation sans frais des livres numériques (achetés sur iPad par exemple).</li>
<li>Le système de rémunération <strong>iAds</strong> (<u>disponible dès le 1er Juillet</u>) qui devrait &#8220;aider les développeurs à créer des applications à bas prix&#8230;&#8221;. <strong>70% des revenus sont reversés aux développeurs</strong>, ce qui est en fait très bon si on compare à ce qui se fait sur Internet. Déjà de &#8220;nombreux&#8221; clients récoltés par Apple qui fait la régie. Les quelques exemples présentés par Apple semblent plutôt convaincants.</li>
</ul>
<h2>Les Prix !</h2>
<p>L&#8217;iPhone 4 devrait sortir le <strong>24 Juin</strong> aux US (et dans 4 Pays &#8230; dont la France !!) pour la &#8220;modique&#8221; somme de :</p>
<ul>
<li><strong>199$</strong> pour la Version 16 Go</li>
<li><strong>299$</strong> pour la Version 32 Go </li>
</ul>
<p>L&#8217;iPhone 3GS devrait passer à 99$ et l&#8217;iPhone 3G est abandonné.<br />
On peut s&#8217;attendre à des reprises d&#8217;anciens iPhone ou des contrats avec Orange, SFR etc.</p>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/06/iphone4-prix.jpeg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/06/iphone4-prix-300x199.jpg" alt="" title="iphone4-prix" width="300" height="199" class="aligncenter size-medium wp-image-1188" /></a></p>
<h2>En vracs des informations supplémentaires</h2>
<ul>
<li><strong>Bing</strong> arrive sur iPhone mais Google devrait rester comme moteur de recherche par défaut</li>
<li><strong>iMovie</strong> iPhone semble très complet malgré le manque de place sur le petit écran</li>
<li>La meilleure définition d&#8217;écran permettra d&#8217;avoir moins de &#8220;grain&#8221; sur l&#8217;écran et d&#8217;afficher le <strong>texte (et médias) de manière bien plus nette</strong>.</li>
<li>95% des applications soumises pour l&#8217;AppStore sont mises en ligne.</li>
<li>L&#8217;&#8221;iOS4&#8243; est gratuit et sera disponible dès le 21 juin.</li>
</ul>
<h2>&#8220;One More Thing&#8221; : iChat Vidéo</h2>
<p>Grâce à la caméra en facade ce nouvel iPhone apporte la discussion vidéo. Pour 2010 cela ne serait possible qu&#8217;en Wifi (faut pas pousser mémé dans la rupture des réseaux 3G non plus hein !).</p>
<p><a href="http://www.geckogeek.fr/wp-content/uploads/2010/06/iphone4-ichat-video.jpeg"><img src="http://www.geckogeek.fr/wp-content/uploads/2010/06/iphone4-ichat-video-300x199.jpg" alt="" title="iphone4-ichat-video" width="300" height="199" class="aligncenter size-medium wp-image-1190" /></a></p>
<p><strong>Pour résumer</strong> : un iPhone plus compact, plus puissant, qui dure plus longtemps et qui apporte plus d&#8217;interactivité. De bonnes surprises comme le gyroscope, la caméra en facade ou bien l&#8217;écran retina qui devraient apporter une bonne valeur ajoutée. Attendons de voir comment vont réagir les concurrents !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geckogeek.fr/iphone-4-sortie-le-24-juin-ecran-retina-coremotion-video-720p-a-30fps-ichat-video.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://www.geckogeek.fr/iphone-4-sortie-le-24-juin-ecran-retina-coremotion-video-720p-a-30fps-ichat-video.html</feedburner:origLink></item>
	</channel>
</rss><!-- This Quick Cache file was built for (  www.geckogeek.fr/feed ) in 1.74245 seconds, on Jan 31st, 2012 at 7:36 am UTC. --><!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Jan 31st, 2012 at 8:36 am UTC --><!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --><!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  www.geckogeek.fr/feed ) in 0.00156 seconds, on Jan 31st, 2012 at 7:36 am UTC. -->

