{"id":2927,"date":"2019-12-09T22:11:29","date_gmt":"2019-12-09T21:11:29","guid":{"rendered":"https:\/\/www.breizh56.fr\/crepp2024\/?page_id=2927"},"modified":"2019-12-10T12:15:58","modified_gmt":"2019-12-10T11:15:58","slug":"atelier-arduino-debutant-4-1s","status":"publish","type":"page","link":"https:\/\/www.breizh56.fr\/crepp2024\/atelier-arduino-debutant-4-1s\/","title":{"rendered":"Arduino 2019-4.1s instructions S4"},"content":{"rendered":"<p>INSTRUCTIONS S 4<\/p>\n<h2 class=\"western\"><strong>Le Sweep<\/strong><\/h2>\n<p>Cette semaine, nous tentons une nouvelle approche dans le cours avec le code directement expliqu\u00e9 dans le texte de la vid\u00e9o que vous venez de voir :<\/p>\n<p>Nous allons d&rsquo;abord aborder les biblioth\u00e8ques de code.<\/p>\n<p>Librairies, \u00e7a vient de l&rsquo;anglais \u00ab\u00a0Libraries\u00a0\u00bb qui signifie <strong>Biblioth\u00e8ques<\/strong>. Peu importe ce que vous trouverez comme termes sur internet, l&rsquo;id\u00e9e est d&rsquo;avoir sous la main un rassemblement de morceaux de code, class\u00e9s par th\u00e9matiques, que vous invoquez \u00e0 la demande. Un peu comme des supers pouvoirs qui vous \u00e9vitent d&rsquo;avoir \u00e0 r\u00e9inventer la roue \u00e0 chaque projet !<\/p>\n<p>Les librairies pour Arduino sont nombreuses et abordent la plupart des besoins courants. On trouve ainsi les biblioth\u00e8ques standards, pour par exemple g\u00e9rer le Wifi, les \u00e9crans \u00e0 cristaux liquides, une carte SD, ou encore des moteurs. Pour l&rsquo;occasion, nous allons nous int\u00e9resser \u00e0 des moteurs un peu particuliers que l&rsquo;on retrouve dans le monde du mod\u00e9lisme : les servomoteurs.<br \/>\nAu boulot, je vous laisse ouvrir le programme (ou IDE) Arduino et l&rsquo;exemple \u00ab sweep \u00bb que l&rsquo;on trouve dans les exemples du dossier <em>Servo<\/em> :\u00a0<em>Fichier\u2192Exemples\u2192Servo&gt;\u2192Sweep<\/em>.<br \/>\nD\u00e9taillons maintenant les nouvelles instructions pr\u00e9sentes dans ce programme.<br \/>\nApr\u00e8s quelques lignes de commentaires, nous trouvons une instruction particuli\u00e8re :<\/p>\n<pre class=\"western\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">#include&lt;<span style=\"color: #cc6600;\">Servo<\/span>.h&gt;<\/span><\/pre>\n<p>Voil\u00e0, vous venez de charger la biblioth\u00e8que et obtenez du m\u00eame coup la bo\u00eete \u00e0 outils correspondante.<br \/>\n\u00c0 partir de l\u00e0, vous pouvez cr\u00e9er des objets en partant du\u00a0\u00ab\u00a0moule\u00a0\u00bb\u00a0<code class=\"western\"><span style=\"color: #cc6600;\">Servo<\/span><\/code>, un peu comme on fait de nombreuses gaufres \u00e0 partir d&rsquo;un seul moule&#8230; \u00e0 gaufres forc\u00e9ment !<\/p>\n<p>C&rsquo;est ce qu&rsquo;on va tout de suite faire. En cr\u00e9ant une gaufre chantilly&#8230;<br \/>\nNon, pardon ! Un servomoteur, que nous appelons ici <code class=\"western\">myservo<\/code>.<\/p>\n<pre class=\"western\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\"><span style=\"color: #cc6600;\">Servo<\/span> myservo;<\/span><\/pre>\n<p>On d\u00e9clare ensuite une variable <code class=\"western\">pos<\/code>, pour stocker une position au cours du programme :<\/p>\n<pre class=\"western\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\"><span style=\"color: #cc6600;\">int<\/span> pos = 0;<\/span><\/pre>\n<p>Il est temps de passer au bloc setup. C&rsquo;est vite r\u00e9gl\u00e9, puisqu&rsquo;il suffit d&rsquo;attacher notre servo fra\u00eechement cr\u00e9\u00e9 \u00e0 la broche 9 :<\/p>\n<pre class=\"western\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">myservo.<span style=\"color: #cc6600;\">attach<\/span>(9);<\/span><\/pre>\n<p>La m\u00e9thode\u00a0<code class=\"western\">attach()<\/code>\u00a0 est disponible pour les objets de type\u00a0Servo. La biblioth\u00e8que de code g\u00e8re le reste pour vous. Sympa, non ?<br \/>\nComme indiqu\u00e9 sur la page de <a href=\"http:\/\/www.mon-club-elec.fr\/pmwiki_reference_arduino\/pmwiki.php?n=Main.LibrairieServo\" target=\"_blank\" rel=\"noopener noreferrer\">Mon Club Elec<\/a>, les m\u00e9thodes disponibles sur les objets de type\u00a0Servo\u00a0sont assez explicites : <code class=\"western\"><span style=\"color: #cc6600;\">attach<\/span><\/code><code class=\"western\">()<\/code>,\u00a0<code class=\"western\"><span style=\"color: #cc6600;\">write<\/span><\/code><code class=\"western\"><span style=\"font-family: monospace, serif;\">()<\/span><\/code>,\u00a0<code class=\"western\"><span style=\"color: #cc6600;\">writeMicroseconds<\/span><\/code><code class=\"western\">()<\/code>,\u00a0<code class=\"western\"><span style=\"color: #cc6600;\">read<\/span><\/code><code class=\"western\"><span style=\"font-family: monospace, serif;\">()<\/span><\/code>,\u00a0<code class=\"western\"><span style=\"color: #cc6600;\">attached<\/span><\/code><code class=\"western\">()<\/code>,\u00a0<code class=\"western\"><span style=\"color: #cc6600;\">detach<\/span><\/code><code class=\"western\"><span style=\"font-family: monospace, serif;\">()<\/span><\/code>.<\/p>\n<p>Fin du setup, il est temps de \u00ab\u00a0looper\u00a0\u00bb \u00e0 pr\u00e9sent ! \ud83d\ude42<\/p>\n<p>La <strong>boucle principale\u00a0<\/strong>commence par&#8230; faire une boucle !<\/p>\n<pre class=\"western\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\"><span style=\"color: #cc6600;\">for<\/span>(pos = 0; pos &lt; 180; pos +=1) {<\/span>\r\n  <span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">myservo.<\/span><span style=\"color: #cc6600;\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">write<\/span><\/span><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">(pos);<\/span>\r\n  <span style=\"color: #cc6600;\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">delay<\/span><\/span><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">(15);<\/span>\r\n<span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">}<\/span>\r\n<\/pre>\n<p>Cette \u201cbouclette\u201d \u00e0 pour but de faire varier la position cible demand\u00e9e au moteur. Autrement dit, elle sert uniquement \u00e0 faire varier la valeur de <code class=\"western\">pos<\/code>\u00a0du minimum au maximum. En fran\u00e7ais, \u00e7a donne quelque chose comme \u00ab Pour une valeur <code class=\"western\">po<\/code><code class=\"western\"><span style=\"font-family: 'courier new', courier;\">s<\/span><\/code><span style=\"font-family: 'courier new', courier;\">ition<\/span> allant de 0 \u00e0 179 et une marche \u00e0 la fois, demande au servo <code class=\"western\">myservo<\/code><strong>\u00a0<\/strong>d&rsquo;aller en position <code class=\"western\">pos\u00a0<\/code>\u00bb<br \/>\nUn <code class=\"western\">pos += 4 <\/code>vous aurait fait monter l&rsquo;escalier 4 \u00e0 4 \ud83d\ude42<\/p>\n<p>On laisse quelques millisecondes au moteur afin qu&rsquo;il ait le temps d&rsquo;aller une marche plus loin, concr\u00e8tement de tourner de 1\u00b0.<br \/>\nC&rsquo;est reparti pour un tour, cette fois-ci dans l&rsquo;autre sens. Au lieu d&rsquo;incr\u00e9menter la valeur de +1 \u00e0 chaque passage de bouclette, on la d\u00e9cr\u00e9mente ici de -1 :<\/p>\n<pre class=\"western\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\"><span style=\"color: #cc6600;\">for<\/span>(pos = 180; pos &gt;= 1; pos -= 1) {<\/span>\r\n  <span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">myservo.<\/span><span style=\"color: #cc6600;\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">write<\/span><\/span><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">(pos);<\/span>\r\n  <span style=\"color: #cc6600;\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">delay<\/span><\/span><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">(15);<\/span>\r\n<span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">}<\/span><\/pre>\n<p>Puisque nous arrivons en fin de boucle, notre servo va bient\u00f4t repartir.<br \/>\nCertain d&rsquo;entre vous doivent se dire : \u00ab Pourquoi ne pas \u00eatre aller directement au but avec par exemple ? \u00bb :<\/p>\n<pre class=\"western\"><span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">myservo.<span style=\"color: #cc6600;\">write<\/span>(0);<\/span>\r\n<span style=\"font-family: 'Ubuntu Mono', Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;\">myservo.<span style=\"color: #cc6600;\">write<\/span>(180);<\/span><\/pre>\n<p>La r\u00e9ponse tient en un mot : la douceur !<\/p>\n<p>Utiliser un d\u00e9lai dans une<strong> boucle secondaire<\/strong> permet de ralentir le processus. Plus la valeur du d\u00e9lai sera importante dans votre programme, plus le d\u00e9placement du moteur sera doux dans la vrai vie&#8230; \u00c0 vous d&rsquo;adapter la valeur du d\u00e9lai \u00e0 vos besoins de tendresse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>INSTRUCTIONS S 4 Le Sweep Cette semaine, nous tentons une nouvelle approche dans le cours avec le code directement expliqu\u00e9 dans le texte de la vid\u00e9o que vous venez de voir : Nous allons d&rsquo;abord aborder les biblioth\u00e8ques de code. Librairies, \u00e7a vient de l&rsquo;anglais \u00ab\u00a0Libraries\u00a0\u00bb qui signifie Biblioth\u00e8ques. Peu importe ce que vous trouverez comme termes sur internet, l&rsquo;id\u00e9e [&#8230;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2927","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages\/2927"}],"collection":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/comments?post=2927"}],"version-history":[{"count":5,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages\/2927\/revisions"}],"predecessor-version":[{"id":2952,"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/pages\/2927\/revisions\/2952"}],"wp:attachment":[{"href":"https:\/\/www.breizh56.fr\/crepp2024\/wp-json\/wp\/v2\/media?parent=2927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}