{"id":621,"date":"2021-07-17T14:21:39","date_gmt":"2021-07-17T19:21:39","guid":{"rendered":"http:\/\/ve2cuy.com\/420-1c4\/?page_id=621"},"modified":"2024-03-18T09:38:14","modified_gmt":"2024-03-18T14:38:14","slug":"arduino-hello-world","status":"publish","type":"page","link":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/arduino-hello-world\/","title":{"rendered":"Arduino &#8211; Hello world!"},"content":{"rendered":"\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"95\" class=\"wp-image-467\" style=\"width: 150px;\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/arduino-uno-00.jpg\" alt=\"\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/arduino-uno-00.jpg 520w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/arduino-uno-00-300x190.jpg 300w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/td><td class=\"has-text-align-center\" data-align=\"center\">+<\/td><td class=\"has-text-align-left\" data-align=\"left\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"102\" class=\"wp-image-392\" style=\"width: 150px;\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-15-a-10.27.25.png\" alt=\"\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-15-a-10.27.25.png 1195w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-15-a-10.27.25-300x204.png 300w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-15-a-10.27.25-1024x698.png 1024w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-15-a-10.27.25-768x523.png 768w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"has-luminous-vivid-orange-color has-text-color wp-block-heading\">Contenu<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Cr\u00e9ation d&rsquo;un projet Arduino<\/li><li>Code de d\u00e9part, les fonctions <em><span class=\"has-inline-color has-vivid-cyan-blue-color\">setup()<\/span><\/em> et <em><span class=\"has-inline-color has-vivid-cyan-blue-color\">loop()<\/span><\/em><\/li><li>Configuration des broches du MCU: la fonction <em><span class=\"has-inline-color has-vivid-cyan-blue-color\">pinMode()<\/span><\/em><\/li><li>Lecture\/\u00c9criture, \u00e0 partir d&rsquo;une broche digitale: la fonction <em><span class=\"has-inline-color has-vivid-cyan-blue-color\">digitaleWrite()<\/span><\/em><\/li><li>\u00c9criture de la m\u00e9moire programme du Arduino<\/li><li>La fonction <em><span class=\"has-inline-color has-vivid-cyan-blue-color\">delay()<\/span><\/em><\/li><li>Exemple d&rsquo;une <strong><span class=\"has-inline-color has-vivid-red-color\">DEL<\/span><\/strong> qui clignote<\/li><li>Documentation du code<ul><li>Standard<\/li><li>Doxygen<\/li><\/ul><\/li><li>Utilisation de MACROs (constantes)<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\">1 &#8211; Allumer la DEL sur D13<\/h2>\n\n\n\n<p>En utilisant un module de prototypage <em>Arduino Uno<\/em>, l&rsquo;<em>environnement int\u00e9gr\u00e9 de d\u00e9veloppement Arduino (IDE)<\/em> ainsi que quelques <em>instructions en langage C<\/em>, nous allons changer l&rsquo;\u00e9tat (ON\/OFF) de la diode \u00e9metteuse de lumi\u00e8re incorpor\u00e9e au Arduino Uno et reli\u00e9e \u00e0 la broche digitale num\u00e9ro 13.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><span style=\"color: #ff0000;\"><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.1<\/span><\/strong><\/span> &#8211; Cr\u00e9er un nouveau projet Arduino IDE, Option menu <em>Fichier\/Nouveau<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"195\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.51.04.png\" alt=\"\" class=\"wp-image-662\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.51.04.png 364w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.51.04-300x161.png 300w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><\/figure>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.2<\/span><\/strong> &#8211; Analyser le code de d\u00e9part; les fonctions <em>setup()<\/em> et <em>loop()<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"371\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.50.15-1024x371.png\" alt=\"\" class=\"wp-image-664\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.50.15-1024x371.png 1024w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.50.15-300x109.png 300w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.50.15-768x279.png 768w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.50.15.png 1166w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.2.1<\/span><\/strong> &#8211; Comprendre le r\u00f4le des fonctions setup() et loop()<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>setup()<\/li><li>loop()<\/li><\/ul>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.3<\/span><\/strong> &#8211; Ins\u00e9rer les lignes 2 et 5, fonctions <em>pinMode()<\/em> et <em>digitalWrite()<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"738\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.49.21-1024x738.png\" alt=\"\" class=\"wp-image-665\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.49.21-1024x738.png 1024w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.49.21-300x216.png 300w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.49.21-768x553.png 768w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Capture-decran-le-2021-07-17-a-16.49.21.png 1271w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Au besoin, copier\/coller -&gt;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void setup() {\n  pinMode(13, 1);\n}\n\nvoid loop() {\n  digitalWrite(13, 1);     \n}<\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.4<\/span><\/strong> &#8211; Comprendre le r\u00f4le de la fonction <em><strong>pinMode()<\/strong><\/em><\/p>\n\n\n\n<p class=\"has-text-align-left\">La fonction <em><span class=\"has-inline-color has-vivid-cyan-blue-color\">pinMode()<\/span><\/em> permet d&rsquo;indiquer si une broche digitale du MCU sera utilis\u00e9e en mode d&rsquo;entr\u00e9e (INPUT\/lecture) ou en mode de sortie (Output\/\u00e9criture).<\/p>\n\n\n\n<p>La syntaxe d&rsquo;utilisation est:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pinMode(num\u00e9roDeLaBroche &#91;0..13], ModeUtilisation &#91;0 pour entr\u00e9e, 1 pour sortie])<\/code><\/pre>\n\n\n\n<p>Par exemple, pour placer la broche digitale num\u00e9ro 5 en lecture (entr\u00e9e):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pinMode(5,0);<\/code><\/pre>\n\n\n\n<p>Pour placer la broche digitale num\u00e9ro 13 en mode \u00e9criture (sortie):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pinMode(13, 1);<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-left\"><strong><span class=\"has-inline-color has-vivid-red-color\">NOTE<\/span><\/strong>: <em>pinMode()<\/em> ne changera pas l&rsquo;\u00e9tat de la broche, seulement son mode de fonctionnement.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Pour lire ou \u00e9crire une valeur sur une des broches du MCU, il faut utiliser la fonction <em>digitalWrite()<\/em>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.5<\/span><\/strong> &#8211; Comprendre le r\u00f4le de la fonction<strong><em> digitaleWrite()<\/em><\/strong><\/p>\n\n\n\n<p>La fonction <em>digitaleWrite()<\/em> permet de changer l&rsquo;\u00e9tat de sortie d&rsquo;une broche.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Par exemple, elle est utilis\u00e9e pour allumer (mettre en marche) ou \u00e9teindre un objet connect\u00e9 \u00e0 une broche digitale.  Cela pourrait \u00eatre une diode lumineuse, un relai, &#8230;<\/p>\n\n\n\n<p>La syntaxe d&rsquo;utilisation est:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>digitaleWrite(num\u00e9roDeLaBroche &#91;0..13], \u00c9tat &#91;0 pour \u00c9teint\/OFF, 1 pour Allum\u00e9\/ON])<\/code><\/pre>\n\n\n\n<p>Par exemple, pour allumer l&rsquo;objet connect\u00e9 la broche digitale num\u00e9ro 13:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>digitaleWrite(13, 1);<\/code><\/pre>\n\n\n\n<p>Pour \u00e9teindre l&rsquo;objet connect\u00e9 la broche digitale num\u00e9ro 13:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>digitaleWrite(13, 0);<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.6<\/span><\/strong> &#8211; Compiler et t\u00e9l\u00e9verser le projet vers l&rsquo;Arduino<\/p>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">NOTE:<\/span><\/strong> \u00c0 cette \u00e9tape, le module Arduino Uno doit-\u00eatre reli\u00e9 \u00e0 l&rsquo;ordinateur via le port USB.  Il devrait alors \u00eatre reconnu par l&rsquo;ordinateur et disponible via la liste de s\u00e9lection de modules.  <em><strong>Suivre les directives de l\u2019enseignant pour le branchement en classe.<\/strong><\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"434\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-upload.png\" alt=\"\" class=\"wp-image-694\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-upload.png 762w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-upload-300x171.png 300w\" sizes=\"auto, (max-width: 762px) 100vw, 762px\" \/><\/figure>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 1.7<\/span><\/strong> &#8211; Observer le r\u00e9sultat sur le module Arduino Uno<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"566\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-LED-ON-1024x566.png\" alt=\"\" class=\"wp-image-696\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-LED-ON-1024x566.png 1024w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-LED-ON-300x166.png 300w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-LED-ON-768x424.png 768w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Arduino-LED-ON.png 1059w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>R\u00e9alis\u00e9 avec https:\/\/www.tinkercad.com\/<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"has-vivid-purple-color has-text-color wp-block-heading\">2 &#8211; Utilisation de la fonction <em>delay()<\/em><\/h2>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 2.1<\/span><\/strong> &#8211; Comprendre la fonction <em><strong>delay()<\/strong><\/em> <\/p>\n\n\n\n<p>La fonction <strong><em>delay()<\/em><\/strong> permet de faire une pause de <em><strong><span class=\"has-inline-color has-vivid-red-color\">n<\/span> millisecondes<\/strong><\/em> \u00e0 l&rsquo;endroit du programme o\u00f9 elle sera utilis\u00e9e.<\/p>\n\n\n\n<p>Par exemple, le programme suivant:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Lever la main;\ndelay(1000);\nBaisser la main;<\/pre>\n\n\n\n<p>Produira une main lev\u00e9e pendant une (1) seconde.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 2.2<\/span><\/strong> &#8211; Faire clignoter la DEL du module, renseigner le programme suivant,<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void setup()\n{\n  pinMode(13, 1);\n}\n\nvoid loop()\n{\n  digitalWrite(13, 1);\n  delay(500);\n  digitalWrite(13, 0);\n  delay(500);\n}<\/pre>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 2.2<\/span><\/strong> &#8211; Compiler et t\u00e9l\u00e9verser le programme vers le module Arduino:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"415\" height=\"34\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/arduino-televerser.png\" alt=\"\" class=\"wp-image-747\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/arduino-televerser.png 415w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/arduino-televerser-300x25.png 300w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/figure>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 2.3<\/span><\/strong> &#8211; Examiner le r\u00e9sultat sur le module Arduino:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/Enreg-26-7-2021.gif\" alt=\"\" class=\"wp-image-748\" width=\"271\" height=\"210\"\/><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"has-luminous-vivid-orange-color has-text-color wp-block-heading\">3 &#8211; Documentation du code<\/h2>\n\n\n\n<p class=\"has-text-align-left\">En entreprise, la documentation du code est habituellement prescrite.  Imaginez un algorithme de code de votre cru, complexe et long,  qui devra \u00eatre mise \u00e0 jour par un autre programmeur.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Il est important de laisser le plus d&rsquo;information possible, sous forme de commentaires, dans le code.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Pas de craintes, les commentaires ne seront pas incorpor\u00e9s dans la version compil\u00e9e du projet.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Selon les entreprises, les normes et standards de documentation peuvent varier.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><br><strong><span class=\"has-inline-color has-vivid-red-color\">Action 3.1<\/span><\/strong>  &#8211; \u00c9tudier un exemple classique de documentation<\/p>\n\n\n\n<p>Voici le code pr\u00e9c\u00e9dent, document\u00e9 de fa\u00e7on classique:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"wpcustom\" data-enlighter-highlight=\"11,18\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/\u00a0Cette ligne est un commentaire.  Elle ne sera pas ex\u00e9cut\u00e9e.\n\/\/ \u00c0 vrai dire, elle ne fera m\u00eame pas partie du programme final ;-)\n\n\/\/ Ce qui suit est aussi un commentaire:\n\n\/* \n   -----------------------------------------------------------------------\n   Projet:         Introduction \u00e0 Arduino\n   Nom du fichier: exemple01.uno\n   Auteur:         Alain Boudreault\n   Date:           2021.07.17\n   -----------------------------------------------------------------------\n   Description:    Petit programme qui allume la DEL int\u00e9gr\u00e9e au\n                   module Arduino Uno sur la broche num\u00e9ro 13.\n   -----------------------------------------------------------------------\n   M-A-J:          2021.07.26 - Par A.B - Modification du d\u00e9lai ON\/OFF\n   -----------------------------------------------------------------------\n*\/\n\n\/\/ D\u00c9BUT du code -->\n\n\/\/ Cette fonction sera ex\u00e9cut\u00e9e une seule fois, au d\u00e9marrage du programme.\n\/\/ Elle sert \u00e0 renseigner, entre autre, la fonction des diff\u00e9rentes\n\/\/ broches du MCU.\nvoid setup() {  \/\/ Ceci est un commentaire de bout de ligne\n  \/\/ Initialiser la broche digitale num\u00e9ro 13 en sortie (OUTPUT)\n  \/\/ OUTPUT = 1, INPUT = 0\n  pinMode(13, \/* 0=INPUT *\/ 1); \/\/ Exemple d'un commentaire dans le code\n} \/\/ FIN de setup()\n\n\/\/ Cette fonction sera ex\u00e9cut\u00e9e en boucle tant que le module Arduino sera sous tension.\nvoid loop() {\n  digitalWrite(13, 1);   \/\/ Envoyer l'\u00e9tat '1\/ON\/Allum\u00e9) \u00e0 la broche 13\n  delay(500);            \/\/ Attendre 500 millisecondes (.5 seconde)\n  digitalWrite(13, 0);   \/\/ Envoyer l'\u00e9tat '0\/OFF\/\u00c9teint) \u00e0 la broche 13 \n  delay(500);            \/\/ Attendre 500 millisecondes (.5 seconde)\n} \/\/ FIN de loop()\n\n\/\/ -----------------------------------------------------------------------\n\/\/ FIN du fichier\n\/\/ -----------------------------------------------------------------------\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"has-cyan-bluish-gray-color has-text-color wp-block-heading\">4 &#8211; Utilisation de MACROs<\/h2>\n\n\n\n<p>Dans le programme permettant de faire clignoter une DEL connect\u00e9e \u00e0 la broche D13, avec un intervalle de 500 millisecondes, nous avons ins\u00e9r\u00e9 les valeurs de la p\u00e9riode et de la broche directement dans les instructions.<\/p>\n\n\n\n<p>Par exemple, <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>delay(500);<\/code><\/pre>\n\n\n\n<p>Pour modifier le d\u00e9lai ON\/OFF de la DEL, il faudra localiser toutes les occurrences de <em><strong>delay(500)<\/strong><\/em> et faire les modifications du code source.<\/p>\n\n\n\n<p>Et si voulions faire clignoter une DEL connect\u00e9e \u00e0 une autre broche que la D13?  <\/p>\n\n\n\n<p>Par exemple, une DEL sur la broche D5?<\/p>\n\n\n\n<p>Il faudrait alors modifier le code suivant:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pinMode(13, 1);\n...\ndigitalWrite(13, 1);\n...\ndigitalWrite(13, 0);\n<\/pre>\n\n\n\n<p>De la fa\u00e7on suivante:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pinMode(5, 1);\n...\ndigitalWrite(5, 1);\n...\ndigitalWrite(5, 0);<\/pre>\n\n\n\n<p>De plus, un programmeur non form\u00e9 pour Arduino, aurait de la difficult\u00e9 \u00e0 comprendre ce que nous d\u00e9sirons obtenir avec l&rsquo;instruction:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">digitalWrite(5, 1);<\/pre>\n\n\n\n<p>Et si nous pouvions \u00e9crire ceci \u00e0 la place:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">digitalWrite(DEL_ROUGE, ALLUMER);<\/pre>\n\n\n\n<p>Avec le <em>language C<\/em>, nous avons les macros pour nous permettre de remplacer des expressions peu significatives par des compositions plus descriptives.<\/p>\n\n\n\n<p>Elles sont d\u00e9finies au d\u00e9but d&rsquo;un programme, gr\u00e2ce \u00e0 l&rsquo;\u00e9nonc\u00e9 <em>#define<\/em>, de la fa\u00e7on suivante:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define NOM_CONSTANTE   valeur\n#define PI              3.141592\n#define LED_ROUGE       13<\/code><\/pre>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">NOTE:<\/span><\/strong> Il faut ins\u00e9rer au moins un espace (il peut y en avoir plus) entre le nom de la macro et sa valeur.<\/p>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 4.1<\/span><\/strong> &#8211; Analyser le code source suivant:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Les MACROs sont d\u00e9finies au d\u00e9but du programme, avant toutes fonctions!\n\/\/ La convention dicte de les nommer avec des caract\u00e8res MAJUSCULES\n\n#define DEL_ROUGE 13     \/\/ La broche de la DEL du projet\n#define SORTIE    1\n#define ALLUMER   1\n#define ETEINDRE  0\n#define DELAI    500     \/\/ Le d\u00e9lai de transition entre ON\/OFF de la DEL\n\n\/\/ Programmer les \u00e9tats de d\u00e9part.\nvoid setup() {\n  pinMode(DEL_ROUGE,    \/\/ Initialiser la broche digitale DEL_ROUGE\n          SORTIE);      \/\/ en SORTIE   \n} \/\/ FIN de setup()\n\n\/\/ Boucle principale de notre application\nvoid loop() {\n  digitalWrite(DEL_ROUGE, ALLUMER);   \/\/ Allumer la DEL\n  delay(DELAI);                       \/\/ Attendre DELAI de temps\n  digitalWrite(DEL_ROUGE, ETEINDRE);  \/\/ \u00c9teindre la DEL\n  delay(DELAI);                       \/\/ Attendre DELAI de temps\n} \/\/ FIN de loop()<\/pre>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 4.2<\/span><\/strong> &#8211; Remplacer le code pr\u00e9sent dans l&rsquo;\u00e9diteur Arduino par celui du bloc pr\u00e9c\u00e9dent.  Compiler et t\u00e9l\u00e9verser.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Maintenant, pour changer la p\u00e9riode du clignotement de la DEL, il suffit de red\u00e9finir la MACRO DELAI par<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#define DELAI    200<\/pre>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 4.3<\/span><\/strong> &#8211; Modifier la d\u00e9finition de DELAI pour 100.   Compiler et t\u00e9l\u00e9verser.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">Action 4.4<\/span><\/strong> &#8211; Se renseigner sur les constantes disponibles avec l&rsquo;IDE Arduino.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><a href=\"https:\/\/www.arduino.cc\/reference\/en\/language\/variables\/constants\/constants\/\">https:\/\/www.arduino.cc\/reference\/en\/language\/variables\/constants\/constants\/<\/a><\/p>\n\n\n\n<p> <\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"has-vivid-purple-color has-text-color wp-block-heading\">5 &#8211; Laboratoire<\/h2>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color\"><strong>5.1 &#8211; Laboratoire 01<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/module-expansion-1024x586.png\" alt=\"\" class=\"wp-image-772\" width=\"485\" height=\"277\" srcset=\"https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/module-expansion-1024x586.png 1024w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/module-expansion-300x172.png 300w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/module-expansion-768x439.png 768w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/module-expansion-1536x878.png 1536w, https:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/module-expansion.png 1754w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/figure><\/div>\n\n\n\n<p>En utilisant le module d&rsquo;expansion (Grove Arduino Base Shield), <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Relier le module DEL (<a href=\"https:\/\/wiki.seeedstudio.com\/Grove-LED_Socket_Kit\/\">Grove &#8211; LED Socket Kit<\/a>)  \u00e0 D2 <\/li><li>\u00c9crire un programme qui fait clignoter la DEL avec un intervalle ON\/OFF de 333 millisecondes.<\/li><li>Utiliser des constantes pour la broche digitale et la dur\u00e9e du temps.<\/li><\/ol>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"has-luminous-vivid-orange-color has-text-color\"><strong>5.2 &#8211; Laboratoire 02<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Relier un module DEL \u00e0 <span class=\"has-inline-color has-vivid-red-color\"><strong>D6<\/strong><\/span> et un autre \u00e0 <strong><span class=\"has-inline-color has-vivid-green-cyan-color\">D5<\/span><\/strong> <\/li><li>\u00c9crire un programme qui allume successivement les DEL avec les d\u00e9lais suivants:<ul><li>700 ms ON, 100 ms OFF<\/li><\/ul><\/li><li>Utiliser des MACROs (constantes) pour les broches digitales et les dur\u00e9es de temps.<\/li><\/ol>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ve2cuy.com\/420-1c4\/wp-content\/uploads\/2021\/07\/labo-01.gif\" alt=\"\" class=\"wp-image-769\" width=\"298\" height=\"320\"\/><figcaption>Labo-02<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h6 class=\"has-text-align-right wp-block-heading\"><span class=\"has-inline-color has-cyan-bluish-gray-color\">Document par Alain Boudreault, aka ve2cuy, revision du 2021.00.00<\/span><\/h6>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>+ Contenu Cr\u00e9ation d&rsquo;un projet Arduino Code de d\u00e9part, les fonctions setup() et loop() Configuration des broches du MCU: la fonction pinMode() Lecture\/\u00c9criture, \u00e0 partir d&rsquo;une broche digitale: la fonction digitaleWrite() \u00c9criture de la m\u00e9moire programme du Arduino La fonction delay() Exemple d&rsquo;une DEL qui clignote Documentation du code Standard Doxygen Utilisation de MACROs (constantes) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ub_ctt_via":"","footnotes":""},"class_list":["post-621","page","type-page","status-publish","hentry"],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages\/621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/comments?post=621"}],"version-history":[{"count":92,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages\/621\/revisions"}],"predecessor-version":[{"id":1058,"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/pages\/621\/revisions\/1058"}],"wp:attachment":[{"href":"https:\/\/ve2cuy.com\/420-1c4\/index.php\/wp-json\/wp\/v2\/media?parent=621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}