{"id":1633,"date":"2020-03-31T16:05:45","date_gmt":"2020-03-31T14:05:45","guid":{"rendered":"http:\/\/www.ardpylab.fr\/?page_id=1633"},"modified":"2020-05-09T17:50:38","modified_gmt":"2020-05-09T15:50:38","slug":"les-fonctions","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=1633","title":{"rendered":"Les fonctions"},"content":{"rendered":"\n<p>Une fonction est un bloc d\u2019instructions que l\u2019on peut appeler \u00e0 tout endroit d\u2019un programme.<\/p>\n<p>En langage Arduino, des biblioth\u00e8ques de fonctions pr\u00e9d\u00e9finies sont disponibles afin de manipuler facilement les entr\u00e9es\/sorties, g\u00e9rer le temps, g\u00e9rer la communication s\u00e9rie\u2026<\/p>\n<p>On peut \u00e9galement cr\u00e9er ses propres fonctions qui seront utiles pour l&rsquo;ex\u00e9cution de t\u00e2ches r\u00e9p\u00e9titives et \u00e9vitant alors la r\u00e9\u00e9criture des lignes de codes \u00e0 chaque fois que se pr\u00e9sente ces t\u00e2ches.<\/p>\n<p>&nbsp;<\/p>\n<h4 style=\"padding-left: 40px;\"><strong><a id=\"ancrefonction1\"><\/a>1. <span style=\"text-decoration: underline;\">Fonctions des <\/span><u>Entr\u00e9es\/Sorties num\u00e9riques<\/u><\/strong><\/h4>\n\n\n\n<h4><strong><br><span style=\"color: #000000;\">. pinMode()<\/span><\/strong><\/h4>\n<p>Configure la broche sp\u00e9cifi\u00e9e pour qu&rsquo;elle se comporte soit en entr\u00e9e, soit en sortie.<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Syntaxe<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>pinMode(broche, mode)<\/strong><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Param\u00e8tres<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche:<\/strong> le num\u00e9ro de la broche de la carte Arduino dont le mode de fonctionnement (entr\u00e9e ou sortie) doit \u00eatre d\u00e9fini.<\/p>\n<p style=\"padding-left: 40px;\"><strong>mode:<\/strong> soit INPUT (entr\u00e9e en anglais) ou OUTPUT (sortie en anglais)<\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"color: #000000;\"><strong><a id=\"ancrefonction11\"><\/a>. digitalWrite()<\/strong><\/span><\/h4>\n<p>Met un niveau logique HIGH (HAUT en anglais) ou LOW (BAS en anglais) sur une broche num\u00e9rique.<\/p>\n<p>Si la broche a \u00e9t\u00e9 configur\u00e9e en SORTIE avec l&rsquo;instruction pinMode(), sa tension est mise \u00e0 la valeur correspondante : 5V&nbsp; pour le niveau HAUT, 0V (masse) pour le niveau BAS.<\/p>\n<p>Si la broche est configur\u00e9e en ENTREE, \u00e9crire un niveau HAUT sur cette broche a pour effet d&rsquo;activer la r\u00e9sistance interne de 20K sur cette broche.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/pullup.png\" alt=\"\" class=\"wp-image-1634\" width=\"373\" height=\"268\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/pullup.png 464w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/pullup-300x215.png 300w\" sizes=\"auto, (max-width: 373px) 100vw, 373px\" \/><\/figure><\/div>\n\n\n\n<p>A l&rsquo;inverse, mettre un niveau BAS sur cette broche configur\u00e9e en ENTREE d\u00e9sactivera la r\u00e9sistance interne.<\/p>\n\n\n\n<p>&#8211; <span style=\"text-decoration: underline;\">Syntaxe<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>digitalWrite(broche, valeur)<\/strong><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Param\u00e8tres<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche:<\/strong> le num\u00e9ro de la broche de la carte Arduino<\/p>\n<p style=\"padding-left: 40px;\"><strong>valeur:<\/strong> HIGH ou LOW (ou bien 1 ou 0)<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Exemple<\/span>&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 10px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 10px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">int ledPin = 13; <span style=\"color: #808080;\">\/\/ LED connect\u00e9e \u00e0 la broche num\u00e9rique n\u00b0 13<\/span><\/span><\/p>\n<p><span style=\"color: #000000;\">void setup()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">pinMode(ledPin, OUTPUT); <span style=\"color: #808080;\">\/\/ met la broche utilis\u00e9e avec la LED en SORTIE<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<p><span style=\"color: #000000;\">void loop()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">digitalWrite(ledPin, HIGH); <span style=\"color: #808080;\">\/\/ allume la LED<\/span><\/span><br><span style=\"color: #000000;\">delay(1000); <span style=\"color: #808080;\">\/\/ pause 1 seconde<\/span><\/span><br><span style=\"color: #000000;\">digitalWrite(ledPin, LOW); <span style=\"color: #808080;\">\/\/ \u00e9teint la LED<\/span><\/span><br><span style=\"color: #000000;\">delay(1000); <span style=\"color: #808080;\">\/\/ pause 1 seconde<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p><strong><u><br>Remarques<\/u><\/strong>&nbsp;:<\/p>\n<p>&#8211; Les broches analogiques peuvent \u00eatre utilis\u00e9es en tant que broches num\u00e9riques, repr\u00e9sent\u00e9es par les nombres 14 (entr\u00e9e analogique 0) \u00e0 19 (entr\u00e9e analogique 5).<\/p>\n<p>&#8211; Cette instruction met la valeur 0\/1 dans le bit de donn\u00e9e qui est associ\u00e9 \u00e0 chaque broche, ce qui explique qu&rsquo;on puisse le mettre \u00e0 1, m\u00eame si la broche est en entr\u00e9e.<\/p>\n<p>&#8211; Ne pas oublier qu&rsquo;une broche num\u00e9rique ne peut fournir que 40mA (milliamp\u00e8res) tant en entr\u00e9e qu&rsquo;en sortie, et que l&rsquo;ensemble des broches de la carte Arduino ne peut fournir que 200mA. Par cons\u00e9quent, limiter l&rsquo;intensit\u00e9 utilis\u00e9e pour chaque broche \u00e0 une dizaine de mA par des r\u00e9sistances adapt\u00e9es : 220 Ohms pour une LED par exemple.<\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"color: #000000;\"><strong><a id=\"ancrefonction12\"><\/a>. digitalRead()<\/strong><\/span><\/h4>\n<p>Lit l\u2019\u00e9tat (= le niveau logique) d&rsquo;une broche pr\u00e9cise en entr\u00e9e num\u00e9rique, et renvoie la valeur HIGH (HAUT en anglais) ou LOW (BAS en anglais).<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Syntaxe<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>digitalRead(broche)<\/strong><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Param\u00e8tres<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche&nbsp;:<\/strong> le num\u00e9ro de la broche num\u00e9rique que vous voulez lire. (int)<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Valeur retourn\u00e9e<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">Renvoie la valeur <strong>HIGH<\/strong> (HAUT en anglais) ou <strong>LOW<\/strong> (BAS en anglais)<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Exemple<\/span>&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">int ledPin = 13; <span style=\"color: #808080;\">\/\/ LED connect\u00e9e \u00e0 la broche n\u00b013<\/span> <\/span><br><span style=\"color: #000000;\">int inPin = 7; <span style=\"color: #808080;\">\/\/ un bouton poussoir connect\u00e9 \u00e0 la broche 7<\/span> <\/span><br><span style=\"color: #000000;\">int val = 0; <span style=\"color: #808080;\">\/\/ variable pour m\u00e9moriser la valeur lue<\/span><\/span><\/p>\n<p><span style=\"color: #000000;\">void setup()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">pinMode(ledPin, OUTPUT); <span style=\"color: #808080;\">\/\/ configure la broche 13 en SORTIE<\/span><\/span><br><span style=\"color: #000000;\">pinMode(inPin, INPUT); \/<span style=\"color: #808080;\">\/ configure la broche 7 en ENTREE<\/span> <\/span><br><span style=\"color: #000000;\">}<\/span><br><span style=\"color: #000000;\">void loop()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">val = digitalRead(inPin); <span style=\"color: #808080;\">\/\/ lit l&rsquo;\u00e9tat de la broche en entr\u00e9e et met le r\u00e9sultat dans la variable<\/span><\/span><br><span style=\"color: #000000;\">digitalWrite(ledPin, val); <span style=\"color: #808080;\">\/\/ met la LED dans l&rsquo;\u00e9tat du BP (c\u00e0d allum\u00e9e si appuy\u00e9 et inversement)<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>Dans ce programme, la broche 13 refl\u00e8te fid\u00e8lement l&rsquo;\u00e9tat de la broche 7 qui est une entr\u00e9e num\u00e9rique.<\/p>\n<p><strong><u>Remarques<\/u><\/strong>&nbsp;:<\/p>\n<p>&#8211; Si la broche num\u00e9rique en entr\u00e9e n&rsquo;est connect\u00e9e \u00e0 rien, l&rsquo;instruction digitalRead() peut retourner aussi bien la valeur HIGH (HAUT en anglais) ou LOW (BAS en anglais) (et cette valeur peut changer de fa\u00e7on al\u00e9atoire)<\/p>\n<p>&#8211; Les broches analogiques peuvent \u00eatre utilis\u00e9es en entr\u00e9e num\u00e9riques et sont d\u00e9sign\u00e9es par les num\u00e9ros 14 (entr\u00e9e analogique 0) \u00e0 19 (entr\u00e9e analogique 5).<\/p>\n<p>&nbsp;<\/p>\n<h4 style=\"padding-left: 40px;\"><strong><span style=\"text-decoration: underline;\"><a id=\"ancrefonction2\"><\/a>2. Fonctions des <\/span><u>Entr\u00e9es\/Sorties analogiques<br><br><\/u><\/strong><\/h4>\n<h4><span style=\"color: #000000;\"><strong>. analogRead()<\/strong><\/span><\/h4>\n<p>Lit la valeur de la tension pr\u00e9sente sur la broche sp\u00e9cifi\u00e9e.<\/p>\n<p>La carte Arduino comporte 6 voies connect\u00e9es \u00e0 un convertisseur analogique-num\u00e9rique 10 bits. <br>Cela signifie qu&rsquo;il est possible de transformer la tension d&rsquo;entr\u00e9e entre 0 et 5V en une valeur num\u00e9rique enti\u00e8re comprise entre 0 et 1023.<\/p>\n<p>Il en r\u00e9sulte une r\u00e9solution (\u00e9cart entre 2 mesures) de : 5 volts \/ 1024 intervalles, autrement dit une pr\u00e9cision de 0.0049 volts (4.9 mV) par intervalle.<\/p>\n<p>Une conversion analogique-num\u00e9rique dure environ 100 \u00b5s pour convertir l&rsquo;entr\u00e9e analogique, et donc la fr\u00e9quence maximale de conversion est environ de 10 000 fois par seconde.<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Syntaxe<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>analogRead(broche_analogique)<\/strong><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Param\u00e8tres<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche_analogique<\/strong>&nbsp;: le num\u00e9ro de la broche analogique (et non le num\u00e9ro de la broche num\u00e9rique) sur laquelle il faut convertir la tension analogique appliqu\u00e9e (0 \u00e0 5 sur la plupart des cartes Arduino)<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Valeur retourn\u00e9e<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">valeur int (0 to 1023) correspondant au r\u00e9sultat de la mesure effectu\u00e9e<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Exemple<\/span>&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 21px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">int analogPin = 3; <span style=\"color: #808080;\">\/\/ Capteur analogique reli\u00e9 \u00e0 la broche A3<\/span><\/span><br><span style=\"color: #000000;\">int val = 0; <span style=\"color: #808080;\">\/\/ variable de type int pour stocker la valeur de la mesure<\/span><\/span><\/p>\n<p><span style=\"color: #000000;\">void setup()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">Serial.begin(9600);<span style=\"color: #808080;\"> \/\/ initialisation de la connexion s\u00e9rie<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<p><span style=\"color: #000000;\">void loop()<\/span><br><span style=\"color: #000000;\">{<br><\/span><span style=\"color: #808080;\">\/\/ lit la valeur de la tension analogique pr\u00e9sente sur la broche<\/span><br><span style=\"color: #000000;\">val = analogRead(analogPin);<\/span><\/p>\n<p><span style=\"color: #808080;\">\/\/ affiche la valeur (comprise en 0 et 1023) dans la fen\u00eatre terminal PC<\/span><br><span style=\"color: #000000;\">Serial.println(val);<br><\/span><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<h4>&nbsp;<\/h4>\n<h4><span style=\"color: #000000;\"><strong><a id=\"ancrefonction21\"><\/a>. analogWrite()<\/strong><\/span><\/h4>\n<p>G\u00e9n\u00e8re un signal carr\u00e9 de fr\u00e9quence 490 Hz sur une broche de la carte Arduino (onde PWM &#8211; Pulse Width Modulation en anglais ou MLI &#8211; Modulation de Largeur d&rsquo;Impulsion en fran\u00e7ais).<\/p>\n<p>Apr\u00e8s avoir appel\u00e9 l&rsquo;instruction analogWrite(), la broche g\u00e9n\u00e9rera un signal carr\u00e9 stable avec un rapport cyclique (fraction de la p\u00e9riode o\u00f9 la broche est au niveau haut) de dur\u00e9e sp\u00e9cifi\u00e9e (en %), jusqu&rsquo;\u00e0 l&rsquo;appel suivant de l&rsquo;instruction analogWrite() (ou bien encore l&rsquo;appel d&rsquo;une instruction digitalRead() ou digitalWrite() sur la m\u00eame broche).<\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Syntaxe<\/span> :<\/p>\n<p style=\"padding-left: 40px;\"><strong>analogWrite(broche, valeur);<\/strong><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Param\u00e8tres<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche<\/strong>: la broche utilis\u00e9e pour \u00ab\u00a0\u00e9crire\u00a0\u00bb l&rsquo;impulsion. Cette broche devra \u00eatre une broche ayant la fonction PWM, Par exemple, sur la UNO, ce pourra \u00eatre une des broches 3, 5 ,6 ,9 ,10 ou 11.<\/p>\n<p style=\"padding-left: 40px;\"><strong>valeur<\/strong>: la largeur du \u00ab\u00a0duty cycle\u00a0\u00bb (proportion de l&rsquo;onde carr\u00e9e qui est au niveau HAUT) : entre 0 (0% HAUT donc toujours au niveau BAS) et 255 (100% HAUT donc toujours au niveau HAUT).<\/p>\n<p>&#8211; <u>Exemple<\/u>&nbsp;:<\/p>\n<p>Le programme suivant fixe la luminosit\u00e9 d&rsquo;une LED proportionnellement \u00e0 la valeur de la tension lue depuis un potentiom\u00e8tre :<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px; width: 100%;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">int ledPin = 9;<span style=\"color: #808080;\"> \/\/ LED connect\u00e9e sur la broche 9<\/span><\/span><br><span style=\"color: #000000;\">int analogPin = 3; <span style=\"color: #808080;\">\/\/ le potentiom\u00e8tre connect\u00e9 sur la broche analogique 3<\/span> <\/span><br><span style=\"color: #000000;\">int val = 0; <span style=\"color: #808080;\">\/\/ variable pour stocker la valeur de la tension lue<\/span><\/span><\/p>\n<p><span style=\"color: #000000;\">void setup()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">pinMode(ledPin, OUTPUT); <span style=\"color: #808080;\">\/\/ configure la broche en sortie<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<p><span style=\"color: #000000;\">void loop()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">val = analogRead(analogPin); <span style=\"color: #808080;\">\/\/ lit la tension pr\u00e9sente sur la broche en entr\u00e9e<\/span><\/span><br><span style=\"color: #000000;\">analogWrite(ledPin, val \/ 4); <br><\/span><span style=\"color: #000000;\"><span style=\"color: #808080;\">\/\/ R\u00e9sultat d&rsquo;analogRead entre 0 to 1023, <\/span><\/span><br><span style=\"color: #808080;\">\/\/ r\u00e9sultat d&rsquo;analogWrite entre 0 to 255<\/span><br><span style=\"color: #000000;\"><span style=\"color: #808080;\">\/\/ =&gt; division par 4<\/span> <\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p><strong><u>Remarques<\/u><\/strong>&nbsp;:<\/p>\n<p>&#8211; Il n&rsquo;est pas n\u00e9cessaire de faire appel \u00e0 l&rsquo;instruction pinMode() pour mettre la broche en sortie avant d&rsquo;appeler la fonction analogWrite().<\/p>\n<p>&#8211; L&rsquo;impulsion PWM g\u00e9n\u00e9r\u00e9e sur les broches 5 et 6 pourront avoir des rapport cyclique plus long que pr\u00e9vu en raison de l&rsquo;interaction avec les instructions millis() et delay(), qui partagent le m\u00eame timer (base de temps) interne que celui utilis\u00e9 pour g\u00e9n\u00e9rer l&rsquo;impulsion de sortie PWM.<\/p>\n\n\n\n<h4>&nbsp;<\/h4>\n<h4 style=\"padding-left: 40px;\"><strong><a id=\"ancrefonction3\"><\/a>3. <u>Fonctions pr\u00e9d\u00e9finies des Entr\u00e9es\/Sorties avanc\u00e9es<\/u><\/strong><\/h4>\n<h4><strong><br><span style=\"color: #000000;\">. tone()<\/span><\/strong><\/h4>\n<p>G\u00e9n\u00e8re une onde carr\u00e9e (onde sym\u00e9trique avec rapport cyclique (niveau haut\/p\u00e9riode) \u00e0 50%), \u00e0 la fr\u00e9quence sp\u00e9cifi\u00e9e en Hertz (Hz) sur une broche.<\/p>\n<p>La dur\u00e9e peut \u00eatre pr\u00e9cis\u00e9e, sinon l&rsquo;impulsion continue jusqu&rsquo;\u00e0 l&rsquo;appel de l&rsquo;instruction noTone().<\/p>\n<p>La broche peut \u00eatre connect\u00e9e \u00e0 un buzzer pi\u00e9zo\u00e9lectrique ou autre haut-parleur pour jouer des notes (les sons audibles s&rsquo;\u00e9tendent de 20Hz \u00e0 20 000Hz).<\/p>\n<p>Une seule note peut \u00eatre produite \u00e0 la fois. Si une note est d\u00e9j\u00e0 jou\u00e9e sur une autre broche, l&rsquo;appel de la fonction tone() n&rsquo;aura aucun effet (tant qu&rsquo;une instruction noTone() n&rsquo;aura pas eu lieu).<\/p>\n<p>&nbsp;Si la note est jou\u00e9e sur la m\u00eame broche, l&rsquo;appel de la fonction tone() modifiera la fr\u00e9quence jou\u00e9e sur cette broche.<\/p>\n<p>&#8211; <u>Syntaxe<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>tone(broche, frequence)<\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong>tone(broche, frequence, dur\u00e9e)<\/strong><\/p>\n<p>&#8211; <u>Param\u00e8tres<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche<\/strong> : la broche sur laquelle la note est g\u00e9n\u00e9r\u00e9e.<\/p>\n<p style=\"padding-left: 40px;\"><strong>frequence<\/strong> : la fr\u00e9quence de la note produite en hertz (Hz)<\/p>\n<p style=\"padding-left: 40px;\"><strong>dur\u00e9e <\/strong>: la dur\u00e9e de la note en millisecondes (optionnel)<\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"color: #000000;\"><strong><a id=\"ancrefonction31\"><\/a>. noTone()<\/strong><\/span><\/h4>\n<p>Stoppe la g\u00e9n\u00e9ration d&rsquo;impulsion produite par l&rsquo;instruction tone(). N&rsquo;a aucun effet si aucune impulsion n&rsquo;est g\u00e9n\u00e9r\u00e9e.<\/p>\n<p>&#8211; <u>Syntaxe<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>noTone(broche)<\/strong><\/p>\n<p>&#8211; <u>Param\u00e8tres<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche <\/strong>: la broche sur laquelle il faut stopper la note.<\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"color: #000000;\"><strong><a id=\"ancrefonction32\"><\/a>. pulseIn()<\/strong><\/span><\/h4>\n<p>Lit la dur\u00e9e d&rsquo;une impulsion (soit niveau HAUT, soit niveau BAS) appliqu\u00e9e sur une broche (configur\u00e9e en ENTREE).<\/p>\n<p>Par exemple, si le param\u00e8tre valeur est HAUT, l&rsquo;instruction <strong>pulseIn()<\/strong> attend que la broche passe \u00e0 HAUT, commence alors le chronom\u00e9trage, attend que la broche repasse au niveau BAS et stoppe alors le chronom\u00e9trage.<\/p>\n<p>L&rsquo;instruction renvoie la dur\u00e9e de l&rsquo;impulsion en microsecondes. L&rsquo;instruction s&rsquo;arr\u00eate et renvoie 0 si aucune impulsion n&rsquo;est survenue dans un temps sp\u00e9cifi\u00e9.<\/p>\n<p>Il est pr\u00e9f\u00e9rable de travailler avec des impulsions d&rsquo;une dur\u00e9e de 10 microsecondes \u00e0 3 minutes.<\/p>\n<p>&#8211; <u>Syntaxe<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>pulseIn(broche, valeur)<\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong>pulseIn(broche, valeur, delai_sortie)<\/strong><\/p>\n<p>&#8211; <u>Param\u00e8tres<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>broche<\/strong> : le num\u00e9ro de la broche sur laquelle vous voulez lire la dur\u00e9e de l&rsquo;impulsion.<\/p>\n<p style=\"padding-left: 40px;\"><strong>valeur<\/strong> : le type d&rsquo;impulsion \u00e0 \u00ab\u00a0lire\u00a0\u00bb : soit HIGH (niveau HAUT) ou LOW (niveau BAS<\/p>\n<p style=\"padding-left: 40px;\"><strong>delai_sortie<\/strong> (optionnel): le nombre de microsecondes \u00e0 attendre pour d\u00e9but de l&rsquo;impulsion. La valeur par d\u00e9faut est 1 seconde. (type unsigned long)<\/p>\n<p>&#8211; <u>Valeur renvoy\u00e9e<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">La dur\u00e9e de l&rsquo;impulsion (en microsecondes) ou 0 si aucune impulsion n&rsquo;a d\u00e9marrer avant le d\u00e9lai de sortie. (type unsigned long)<\/p>\n<p>&#8211; <u>Exemple<\/u>&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">int broche = 7; <span style=\"color: #808080;\">\/\/ variable de broche<\/span><\/span><br><span style=\"color: #000000;\">unsigned long duree; <span style=\"color: #808080;\">\/\/ variable utilis\u00e9e pour stocker la dur\u00e9e<\/span><\/span><\/p>\n<p><span style=\"color: #000000;\">void setup()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">pinMode(broche, INPUT); <span style=\"color: #808080;\">\/\/ met la broche en entr\u00e9e<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<p><span style=\"color: #000000;\">void loop()<\/span><br><span style=\"color: #000000;\">{<\/span><br><span style=\"color: #000000;\">duree = pulseIn(broche, HIGH); <span style=\"color: #808080;\">\/\/ met la dur\u00e9e de l&rsquo;impulsion de niveau HAUT dans la variable duree<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>&nbsp;<\/p>\n<h4 style=\"padding-left: 40px;\"><strong><a id=\"ancrefonction4\"><\/a>4. <u>Fonctions pr\u00e9d\u00e9finies de gestion du temps<\/u><\/strong>&nbsp;<br><br><\/h4>\n<h4><span style=\"color: #000000;\"><strong>. delay(ms)<\/strong><\/span><\/h4>\n<p>R\u00e9alise une pause dans l&rsquo;ex\u00e9cution du programme pour la dur\u00e9e (en millisecondes) indiqu\u00e9e en param\u00e8tre.<\/p>\n<p>&#8211; <u>Syntaxe<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>delay (ms);<\/strong><\/p>\n<p>&#8211; <u>Param\u00e8tres<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>ms <\/strong>(unsigned long): le nombre de millisecondes que dure la pause<\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"color: #000000;\"><strong><a id=\"ancrefonction41\"><\/a>. unsigned long millis()<\/strong><\/span><\/h4>\n<p>Renvoie le nombre de millisecondes depuis que la carte Arduino a commenc\u00e9 \u00e0 ex\u00e9cuter le programme courant. Ce nombre d\u00e9bordera (c\u00e0d sera remis \u00e0 z\u00e9ro) apr\u00e8s 50 jours approximativement.<\/p>\n<p>&#8211; <u>Syntaxe <\/u>:<\/p>\n<p style=\"padding-left: 40px;\"><strong>variable_unsigned_long = millis();<\/strong><\/p>\n<p>&#8211; <u>Exemple<\/u>&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 21px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">unsigned long time;<br><\/span><br><span style=\"color: #000000;\">void setup(){<\/span><br><span style=\"color: #000000;\">Serial.begin(9600);<\/span><br><span style=\"color: #000000;\">}<br><br><\/span><span style=\"color: #000000;\">void loop(){<\/span><br><span style=\"color: #000000;\">Serial.print(\u00ab\u00a0Time: \u00ab\u00a0);<\/span><br><span style=\"color: #000000;\">time = millis();<\/span><br><span style=\"color: #808080;\">\/\/affiche sur le PC le temps depuis que le programme a d\u00e9marr\u00e9<\/span><br><span style=\"color: #000000;\">Serial.println(time);<\/span><br><span style=\"color: #808080;\">\/\/ pause d&rsquo;une seconde afin de ne pas envoyer trop de donn\u00e9es au PC<\/span><br><span style=\"color: #000000;\">delay(1000);<\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<h4>&nbsp;<\/h4>\n<h4 style=\"padding-left: 40px;\"><strong><a id=\"ancrefonction5\"><\/a>5. <u>Fonctions pr\u00e9d\u00e9finies de communication<br><br><\/u><\/strong><\/h4>\n<p>La librairie <strong>Serial<\/strong> est utilis\u00e9e pour les communications par le port s\u00e9rie entre la carte Arduino et un ordinateur ou d&rsquo;autres composants.<\/p>\n<p>Le port s\u00e9rie communique sur les broches 0 (RX) et 1 (TX) avec l&rsquo;ordinateur via le port USB. C&rsquo;est pourquoi, si on utilise cette fonctionnalit\u00e9, il n\u2019est pas possible d\u2019utiliser les broches 0 et 1 en tant qu&rsquo;entr\u00e9es ou sorties num\u00e9riques.<\/p>\n<p>Le logiciel Arduino IDE dispose d\u2019un moniteur s\u00e9rie, qui permet de recevoir et d\u2019envoyer des informations via une liaison s\u00e9rie. Il est particuli\u00e8rement int\u00e9ressant pour les tests des programmes puisqu\u2019il permet d\u2019afficher les valeurs des variables, les \u00e9tats logiques des entr\u00e9es et des sorties de l\u2019Arduino, etc\u2026<\/p>\n<p>Il suffit pour cela de cliquer sur le bouton du moniteur s\u00e9rie dans la barre d&rsquo;outils puis de s\u00e9lectionner le m\u00eame d\u00e9bit de communication que celui utilis\u00e9 dans l&rsquo;appel de la fonction begin() pour \u00e9tablir la liaison s\u00e9rie.<\/p>\n<p>Les principales fonctions de la librairie <strong>Serial<\/strong> :<\/p>\n<p>. <strong>begin(); <\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Configure la vitesse de transmission du port s\u00e9rie)<\/p>\n<p>. <strong>print();<\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Envoie une donn\u00e9e sous forme de chaine de caract\u00e8res sur le port s\u00e9rie)<\/p>\n<p>. <strong>println();<\/strong>&nbsp;&nbsp;&nbsp; (Envoie une donn\u00e9e sur le port s\u00e9rie et fait un saut \u00e0 la ligne)<\/p>\n<p>. <strong>write();<\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Ecrit des donn\u00e9es binaires sur le port s\u00e9rie. Ces donn\u00e9es sont envoy\u00e9es comme une s\u00e9rie d\u2019octets)<\/p>\n<p>. <strong>read();<\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Lis les donn\u00e9es contenues dans la m\u00e9moire tampon (buffer) du port s\u00e9rie)<\/p>\n<p>. <strong>flush();<\/strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Vide la m\u00e9moire tampon de la liaison s\u00e9rie)<\/p>\n<p>. <strong>available();<\/strong> (Donne le nombre d\u2019octets (caract\u00e8res) disponible pour lecture dans la file d\u2019attente (buffer) du port s\u00e9rie)<\/p>\n<p>&nbsp;<\/p>\n<p>Une fois la liaison s\u00e9rie \u00e9tablie dans la fonction <strong>setup()<\/strong> avec la fonction <strong>Serial.begin()<\/strong>, il est possible d\u2019envoyer des donn\u00e9es depuis la carte Arduino vers le moniteur s\u00e9rie avec la fonction \u201d<strong>print()<\/strong>\u201d de la classe \u201d<strong>Serial<\/strong>\u201d.<\/p>\n<p>On peut envoyer diff\u00e9rents types d\u2019informations :<\/p>\n<p>. Envoie d\u2019une cha\u00eene de caract\u00e8res, sans saut de ligne \u00e0 la fin :<\/p>\n<p style=\"padding-left: 40px;\"><strong>Serial.print(\u201dTest\u201d);<\/strong><\/p>\n<p>. Envoie d\u2019une cha\u00eene de caract\u00e8res, avec saut de ligne \u00e0 la fin :<\/p>\n<p style=\"padding-left: 40px;\"><strong>Serial.println(\u201dTest\u201d);<\/strong><\/p>\n<p>. Envoie de la valeur d\u2019une variable, sans saut de ligne \u00e0 la fin :<\/p>\n<p style=\"padding-left: 40px;\"><strong>int a = 3;<br><\/strong><strong>Serial.print(a);<\/strong><\/p>\n<p>&#8211; <u>Exemple<\/u>&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px; width: 100%;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">int analogValue = 0; <span style=\"color: #808080;\">\/\/ variable pour stocker la valeur analogique sur la broche A0<\/span><\/span><br><br><span style=\"color: #000000;\">void setup() { <\/span><br><span style=\"color: #000000;\"><span style=\"color: #808080;\">\/\/ initialise le port s\u00e9rie \u00e0 9600 bauds<\/span> <\/span><br><span style=\"color: #000000;\">Serial.begin(9600); <\/span><br><span style=\"color: #000000;\">} <\/span><br><br><span style=\"color: #000000;\">void loop() { <\/span><br><span style=\"color: #000000;\"><span style=\"color: #808080;\">\/\/ lit la valeur analogique sur la broche A0<\/span> <\/span><br><span style=\"color: #000000;\">analogValue = analogRead(0);<\/span><\/p>\n<p><span style=\"color: #000000;\"><span style=\"color: #808080;\">\/\/ affiche cette valeur<\/span> <\/span><br><span style=\"color: #000000;\">Serial.println(analogValue); <\/span><br><span style=\"color: #000000;\">}<\/span> <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>&nbsp;<\/p>\n<h4 style=\"padding-left: 40px;\"><strong><a id=\"ancrefonction6\"><\/a>6. <u>Fonctions propres au progamme<br><br><\/u><\/strong><\/h4>\n<p>Pour pouvoir utiliser une fonction propre \u00e0 un programme, il faut au pr\u00e9alable la d\u00e9clarer et comme son appel doit \u00eatre possible \u00e0 tout moment du d\u00e9roulement du programme, il faut qu&rsquo;elle soit d\u00e9clar\u00e9e de fa\u00e7on globale. C&rsquo;est-\u00e0-dire que cela se fera en dehors des fonctions <strong>setup()<\/strong> et <strong>loop()<\/strong>.<\/p>\n<p>Une fonction poss\u00e8de un nom, des param\u00e8tres d&rsquo;entr\u00e9e et des param\u00e8tres de sortie. On appelle <strong>prototype d&rsquo;une fonction<\/strong>, la sp\u00e9cification de ces trois donn\u00e9es&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"542\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/fonction.png\" alt=\"\" class=\"wp-image-1645\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/fonction.png 906w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/fonction-300x179.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/fonction-768x459.png 768w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/figure>\n\n\n\n<p>Et tout ce que fait la fonction doit \u00eatre plac\u00e9 entre deux accolades.<\/p>\n<p>&nbsp;<\/p>\n<p>Il existe deux types de fonctions&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">&#8211; Les fonctions qui ne renvoie aucune donn\u00e9e,<\/p>\n<p style=\"padding-left: 40px;\">&#8211; Les fonctions qui renvoie une donn\u00e9e.<\/p>\n<p>&nbsp;<\/p>\n<p>. Si la fonction ne renvoie aucune donn\u00e9e, son type de retour sera <strong>void<\/strong>.<\/p>\n<p><u>Exemple<\/u>&nbsp;:<\/p>\n<p>Ce programme affiche le r\u00e9sultat de la division de 10 par 3 avec 1 \u00e0 5 chiffres apr\u00e8s la virgule, dans le moniteur s\u00e9rie.<\/p>\n<p>Pour cela, on d\u00e9clare une fonction appel\u00e9e <strong>affichfloat<\/strong>() dont le type de retour est <strong>void<\/strong> (vide) et les param\u00e8tres d\u2019entr\u00e9es sont le nombre \u00e0 virgule, (<strong>float<\/strong>)<strong> a, <\/strong>\u00e0 afficher et un entier,<strong> b, <\/strong>repr\u00e9sentant le nombre de chiffres apr\u00e8s la virgule du nombre <strong>a<\/strong> qui seront affich\u00e9s.<\/p>\n<p>La fonction est appel\u00e9e dans une boucle <strong>for() <\/strong>de la fonction setup() et le r\u00e9sultat de la division est affich\u00e9 dans le moniteur s\u00e9rie.<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">void affichfloat(float a, int b) { <span style=\"color: #808080;\">\/\/ D\u00e9claration de la fonction \u00ab affichfloat \u00bb<\/span><\/span><br><span style=\"color: #000000;\">Serial.println(a,b); <span style=\"color: #808080;\">\/\/ Affichage de la variable a avec b chiffres apr\u00e8s la virgule<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<p><span style=\"color: #000000;\">void setup() {<\/span><br><span style=\"color: #000000;\">Serial.begin(9600);<\/span><br><span style=\"color: #000000;\">float result = 10.0\/3.0;<\/span><br><span style=\"color: #000000;\">for(int i = 1 ; i &lt; 6 ; i++){ <\/span><br><span style=\"color: #000000;\">affichfloat(result,i); <span style=\"color: #808080;\">\/\/ Appel de la fonction \u00ab affichfloat \u00bb<\/span><\/span><br><span style=\"color: #000000;\">}<\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<p><span style=\"color: #000000;\">void loop() {<\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p><br>. Si la fonction renvoie une donn\u00e9e, elle devra le faire avec le mot-clef <strong>return<\/strong>.<\/p>\n<p><u>Exemple<\/u>&nbsp;:<\/p>\n<p>Le programme suivant affiche la table de multiplication de 2 dans le moniteur s\u00e9rie. Pour cela, une fonction appel\u00e9e <strong>multiplication() <\/strong>dont le type de retour est un entier <strong>c<\/strong> et les param\u00e8tres d\u2019entr\u00e9es sont 2 entiers<strong> a <\/strong>et<strong> b <\/strong>est d\u00e9clar\u00e9e.<\/p>\n<p>La fonction est appel\u00e9e dans une boucle <strong>for() <\/strong>de la fonction setup() et le r\u00e9sultat de la multiplication est affich\u00e9 dans le moniteur s\u00e9rie.<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px;\" bgcolor=\"#FFFFCC\">\n<p><span style=\"color: #000000;\">int multiplication (int a, int b) { <span style=\"color: #808080;\">\/\/ D\u00e9claration de la fonction \u00ab multiplication \u00bb<\/span><\/span><br><span style=\"color: #000000;\">int c ;<\/span><br><span style=\"color: #000000;\">c = a * b ;<\/span><br><span style=\"color: #000000;\">return c ;<\/span><br><span style=\"color: #000000;\">}<br><\/span><br><span style=\"color: #000000;\">void setup() {<\/span><br><span style=\"color: #000000;\">Serial.begin(9600);<\/span><br><span style=\"color: #000000;\">for(int i = 1 ; i &lt; 10 ; i++){ <\/span><br><span style=\"color: #000000;\">int result = multiplication(2,i); <span style=\"color: #808080;\">\/\/ Appel de la fonction \u00ab multiplication \u00bb<\/span><\/span><br><span style=\"color: #000000;\">Serial.println(result); \/<span style=\"color: #808080;\">\/ Affichage de la donn\u00e9e de retour de la fonction \u00ab multiplication \u00bb<\/span><\/span><br><span style=\"color: #000000;\">} <\/span><br><span style=\"color: #000000;\">}<br><\/span><br><span style=\"color: #000000;\">void loop() {<\/span><br><span style=\"color: #000000;\">}<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>\u00a0<\/p>\n<p><br \/>Apr\u00e8s avoir vu les bases de la programmation en langage Arduino, nous allons maintenant \u00e9crire notre premier programme bas\u00e9 sur \u00ab Blink \u00bb, qui comme vous l\u2019avez compris, met en application le principe de fonctionnement d\u2019une sortie num\u00e9rique, en faisant intervenir des variables.<\/p>\n<p>\u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-stretch\" style=\"--_gs-gap-desktop:0px 0px;--_gs-m-desktop:0 0 0 0;--_gs-p-desktop:0 0 0 0;--_gs-bg-desktop:transparent none;--_gs-bg-xp-desktop:0px;--_gs-zi-desktop:auto;--_gs-d-desktop:block;--_gs-mw-desktop:calc(100% - 0 - 0);--_gs-gap-tablet:0px 0px;--_gs-m-tablet:0 0 0 0;--_gs-p-tablet:0 0 0 0;--_gs-bg-tablet:transparent none;--_gs-bg-xp-tablet:0px;--_gs-zi-tablet:auto;--_gs-d-tablet:block;--_gs-mw-tablet:calc(100% - 0 - 0);--_gs-gap-mobile:0px 0px;--_gs-m-mobile:0 0 0 0;--_gs-p-mobile:0 0 0 0;--_gs-bg-mobile:transparent none;--_gs-bg-xp-mobile:0px;--_gs-zi-mobile:auto;--_gs-d-mobile:block;--_gs-mw-mobile:calc(100% - 0 - 0);--_gs-columns:2;--_gs-rows:1\"><div class=\"grids-s-w_i\">\n<div class=\"grids-area\" style=\"--_ga-column:1\/2;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=1610\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\"\/><\/a><\/figure><\/div>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:2\/3;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=189\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/plus.jpg\" alt=\"\" class=\"wp-image-106\"\/><\/a><\/figure><\/div>\n\n<\/div>\n<\/div><\/div>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Une fonction est un bloc d\u2019instructions que l\u2019on peut appeler \u00e0 tout endroit d\u2019un programme. En langage Arduino, des biblioth\u00e8ques de fonctions pr\u00e9d\u00e9finies sont disponibles afin de manipuler facilement les entr\u00e9es\/sorties, g\u00e9rer le temps, g\u00e9rer la communication s\u00e9rie\u2026 On peut \u00e9galement cr\u00e9er ses propres fonctions qui seront utiles pour l&rsquo;ex\u00e9cution de t\u00e2ches r\u00e9p\u00e9titives et \u00e9vitant [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1633","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/1633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1633"}],"version-history":[{"count":0,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/1633\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}