{"id":9481,"date":"2022-12-06T10:45:17","date_gmt":"2022-12-06T09:45:17","guid":{"rendered":"https:\/\/fablab21.fr\/?page_id=3544"},"modified":"2026-10-19T19:00:49","modified_gmt":"2026-10-19T17:00:49","slug":"controler-un-ruban-led-arduino","status":"publish","type":"page","link":"https:\/\/www.association-ore.fr\/fr\/tutos\/tutos-arduino\/controler-un-ruban-led-arduino\/","title":{"rendered":"Contr\u00f4ler un ruban LED"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Allumer une LED de la couleur choisie<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n<p>Nous allons apprendre \u00e0 allumer une LED en choisissant sa position sur le ruban et sa couleur. Nous aurons besoin d&rsquo;un microcontr\u00f4leur, d&rsquo;un ruban de LEDs multicolores et de c\u00e2bles.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Branchement du ruban LED<\/h3>\n\n\n<p>Il y a trois c\u00e2bles \u00e0 brancher sur le microcontr\u00f4leur : GND, +5V et Din.<\/p><p>GND, +5V servent \u00e0 alimenter le ruban, Din sert \u00e0 contr\u00f4ler les LEDs.<\/p><p>On branchera donc GND sur G, +5V sur 3V (3 volts suffisent pour alimenter les LEDs), et Din sur une broche data, ici D5.<\/p><p><strong>ATTENTION :\u00a0<\/strong><strong>les cables ne sont pas dans le m\u00eame ordre sur le sch\u00e9ma<\/strong><\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDs_schema_1.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDs_photo_1-scaled.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Code Arduino<\/h3>\n\n\n<p>Pour contr\u00f4ler le ruban LED nous utiliserons la biblioth\u00e8que FastLED :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_1-1.png\" alt=\"\"\/><\/figure>\n\n\n<p>Il faudra initialiser notre ruban LED dans setup(), avec la fonction FastLED.addLeds :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_2.png\" alt=\"\"\/><\/figure>\n\n\n<p>Pour initialiser le ruban nous aurons besoin de son nombre de LEDs et de la broche sur laquelle il est branch\u00e9 :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2020\/03\/nouvieux-logo-final.svg\" alt=\"\"\/><\/figure>\n\n\n<p>Ainsi qu&rsquo;un tableau o\u00f9 enregistrer la couleur de chaque LEDs :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_4.png\" alt=\"\"\/><\/figure>\n\n\n<p>Un tableau se d\u00e9clare avec des crochets, et sa taille indiqu\u00e9e entre les crochets.<\/p><p>Par exemple, \u00ab\u00a0int exemple[3]\u00a0\u00bb est un tableau de 3 entiers nomm\u00e9 exemple.<\/p><p>Ici on d\u00e9clare un tableau nomm\u00e9 \u00ab\u00a0leds\u00a0\u00bb de longueur \u00e9gale au nombre de LEDs, et contenant des couleurs (CRGB).<\/p>\n\n<p>Nous allons maintenant allumer la premi\u00e8re LED du ruban de la couleur choisie.<\/p><p>Commen\u00e7ons par choisir la couleur avec laquelle nous allumerons la LED, la liste se trouve ici :\u00a0<a href=\"http:\/\/fastled.io\/docs\/3.1\/struct_c_r_g_b.html\">http:\/\/fastled.io\/docs\/3.1\/struct_c_r_g_b.html<\/a><\/p><p>D\u00e9finissons la couleur au d\u00e9but du code :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_5.png\" alt=\"\"\/><\/figure>\n\n\n<p>Maintenant passons \u00e0 la fonction loop() :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_7.png\" alt=\"\"\/><\/figure>\n\n\n<ul><li>La fonction FastLED.clear() permet d&rsquo;effacer toutes les valeurs du tableau contenant les couleur des LEDs.<\/li><li>ledToLight est le num\u00e9ro de la LED \u00e0 allumer.<\/li><li>leds[ledToLight &#8211; 1] est l&#8217;emplacement du tableau correspondant au num\u00e9ro de la LED, on soustrait 1 car le tableau commence \u00e0 0.<\/li><li>La fonction FastLED.show() permet d&rsquo;allumer les LEDs avec les valeurs du tableau.<\/li><\/ul>\n\n<p>Le code complet ressemble donc \u00e0 ceci :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_8-1.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement, la premi\u00e8re LED du ruban s&rsquo;illuminera de la couleur choisie :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDs_photo_2-scaled.jpg\" alt=\"\"\/><\/figure>\n\n\n<p>Pour changer la LED \u00e0 allumer il suffit de changer la valeur de ledToLight dans le code, de m\u00eame pour la couleur.<\/p><p>Par exemple :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_9.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_10.png\" alt=\"\"\/><\/figure>\n\n\n<p>On peut aussi allumer plusieurs LEDs en m\u00eame temps en mettant la couleur d\u00e9sir\u00e9e dans l&#8217;emplacement correspondant du tableau :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_12.png\" alt=\"\"\/><\/figure>\n\n\n<p>Et m\u00eame de couleurs diff\u00e9rentes :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_13.png\" alt=\"\"\/><\/figure>\n\n\n<p>On pourra \u00e9galement faire clignoter la LED en l&rsquo;\u00e9teignant avec les fonctions FastLED.clear() et FastLED.show(), et en ajoutant des d\u00e9lais :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_11.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Contr\u00f4ler les LEDs avec un potentiom\u00e8tre<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n<p>Nous allons apprendre \u00e0 contr\u00f4ler le num\u00e9ro de la LED \u00e0 allumer avec un potentiom\u00e8tre. Nous aurons besoin d&rsquo;un potentiom\u00e8tre et d&rsquo;une platine, en plus du mat\u00e9riel pr\u00e9c\u00e8dent.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Branchement du potentiom\u00e8tre<\/h3>\n\n\n<p>Le potentiom\u00e8tre poss\u00e8de trois broches, de gauche \u00e0 droite : GND, OUTPUT et VCC.<\/p><p>A l&rsquo;aide d&rsquo;une platine on branchera GND sur G,\u00a0OUTPUT\u00a0sur A0 (entr\u00e9e analogique), et VCC sur 3V.<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDs_schema_2-1.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/1671295189851-scaled.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Code Arduino<\/h3>\n\n\n<p>Pour lire la valeur renvoy\u00e9e par le potentiom\u00e8tre on utilise la fonction analogRead(A0) :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_14.png\" alt=\"\"\/><\/figure>\n\n\n<p>Avant d&rsquo;utiliser le potentiom\u00e8tre nous devons d&rsquo;abord le calibrer en affichant sa valeur dans le moniteur pour r\u00e9cup\u00e9rer sa valeur minimale et maximale :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_15.png\" alt=\"\"\/><\/figure>\n\n\n<p><strong>Ne pas oublier d&rsquo;initialiser le moniteur s\u00e9rie (en utilisant Serial.begin(9600) dans la fonction setup).<\/strong><\/p>\n\n<p>Nous ajouterons un d\u00e9lai pour la lisibilit\u00e9 dans le moniteur :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_18.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s le t\u00e9l\u00e9versement nous allons r\u00e9cup\u00e9rer les valeurs du potentiom\u00e8tre dans le moniteur, en le tournant \u00e0 sa position minimale et maximale :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_16-2.png\" alt=\"\"\/><\/figure>\n\n\n<p>Si la valeur minimale varie, prendre la plus grande.<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_17-1.png\" alt=\"\"\/><\/figure>\n\n\n<p>Si la valeur maximale varie, prendre la plus petite.<\/p>\n\n<p>Nous allons ensuite transposer la valeur du potentiom\u00e8tre sur la bonne plage de valeurs (le num\u00e9ro des LEDs) avec la fonction map :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_19.png\" alt=\"\"\/><\/figure>\n\n\n<p>(<i>remplacer 20 et 1024 par les valeurs r\u00e9cup\u00e9r\u00e9es pr\u00e9c\u00e9demment)&nbsp;<\/i><\/p>\n\n<p>Il ne reste plus qu&rsquo;\u00e0 afficher la LED comme vu auparavant :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_20.png\" alt=\"\"\/><\/figure>\n\n\n<p>On peut ajouter un petit d\u00e9lai (50ms par exemple) pour r\u00e9duire la fr\u00e9quence d&rsquo;ex\u00e9cution du programme.<\/p><p>Le code complet ressemble donc \u00e0 ceci :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_21-3.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement, on pourra choisir le num\u00e9ro de la LED \u00e0 allumer en tournant le potentiom\u00e8tre :<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/VID_20221217_165559.mp4\"><\/video><\/figure>\n\n\n<p>On peut aussi allumer toutes les LEDs jusqu&rsquo;au num\u00e9ro choisi plut\u00f4t qu&rsquo;une seule. Cela se fera \u00e0 l&rsquo;aide d&rsquo;une boucle for :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_22.png\" alt=\"\"\/><\/figure>\n\n\n<p>La boucle for se compose de trois param\u00e8tres :<\/p><ul><li>int i = 1 est la valeur de d\u00e9part de la boucle, ainsi la premi\u00e8re fois qu&rsquo;elle s&rsquo;ex\u00e9cute i sera \u00e9gal \u00e0 1. Par convention on nomme souvent la variable i.\u00a0<\/li><li>i &lt;= numLed est la condition d&rsquo;ex\u00e9cution de la boucle, ainsi la boucle s&rsquo;ex\u00e9cutera tant que i est inf\u00e9rieur ou \u00e9gal \u00e0 numLed\u00a0<\/li><li>i++ est l&rsquo;incr\u00e9mentation de la boucle, \u00e0 la fin de chaque ex\u00e9cution i sera incr\u00e9ment\u00e9 (augment\u00e9) de 1 , on aurait aussi pu \u00e9crire \u00ab\u00a0i = i + 1\u00a0\u00bb ou \u00ab\u00a0i += 1\u00a0\u00bb<\/li><\/ul><p>Ensuite on place, \u00e0 l&rsquo;int\u00e9rieur des accolades, le code \u00e0 ex\u00e9cuter \u00e0 chaque boucle. On utilisera donc i et non plus numLed pour mettre la couleur dans le tableau car seul i change de valeur dans notre boucle for.<\/p>\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement on pourra donc choisir le nombre de LEDs \u00e0 allumer gr\u00e2ce au potentiom\u00e8tre :\u00a0<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/VID_20221217_182220.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Allumer les LEDs avec un bouton poussoir<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n<p>Nous allons apprendre \u00e0 utiliser un bouton poussoir, il servira d&rsquo;interrupteur pour allumer toutes les LEDs. Nous aurons donc besoin , en plus du ruban LED et des c\u00e2bles, d&rsquo;un bouton poussoir, une platine et un microcontr\u00f4leur.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Branchement du bouton<\/h3>\n\n\n<p>Le bouton poss\u00e8de quatre broches formants deux couples reli\u00e9s c\u00f4te \u00e0 c\u00f4te (ou en diagonale, plus de d\u00e9tails ici :\u00a0<a href=\"https:\/\/memo-lab.com\/memo-arduino\/2559\/\">https:\/\/memo-lab.com\/memo-arduino\/2559\/<\/a>), on branchera donc un couple avec une broche sur G et l&rsquo;autre reli\u00e9e \u00e0 une broche data sur le microcontr\u00f4leur (ici D6) :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDs_schema_3-3.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/1671295189823-scaled-1.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Code Arduino<\/h3>\n\n\n<p>La premi\u00e8re chose \u00e0 faire avant d&rsquo;utiliser le bouton est de d\u00e9finir le num\u00e9ro de sa broche et de l&rsquo;initialiser :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_23.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_25.png\" alt=\"\"\/><\/figure>\n\n\n<p>Il y a trois mode pour la fonction pinMode :<\/p><ul><li>OUTPUT pour d\u00e9clarer une sortie<\/li><li>INPUT pour d\u00e9clarer une entr\u00e9e<\/li><li>INPUT_PULLUP pour d\u00e9clarer une entr\u00e9e en utilisant une r\u00e9sistance interne plut\u00f4t que d&rsquo;en brancher une nous-m\u00eame<\/li><\/ul>\n\n<p>Commen\u00e7ons par regarder dans le moniteur quelle valeur renvoie le bouton avec la fonction digitalRead :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_26.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement on observera que le bouton renvoie 1 quand il est rel\u00e2ch\u00e9 et 0 quand il est appuy\u00e9 (l&rsquo;inverse si on utilise le mode INPUT) :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_27.png\" alt=\"\"\/><\/figure>\n\n\n<p>Nous allons maintenant programmer l&rsquo;allumage de la premi\u00e8re LED quand le bouton sera appuy\u00e9. Pour faire ceci nous allons utiliser un if :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_28.png\" alt=\"\"\/><\/figure>\n\n\n<p>Le if permet d&rsquo;ex\u00e9cuter le code entre accolades uniquement si la condition entre parenth\u00e8ses est vraie, ici si la valeur du bouton est \u00e9gale \u00e0 0 (on \u00e9crira \u00ab\u00a0==\u00a0\u00bb pour diff\u00e9rencier le signe \u00e9gal de comparaison du signe \u00e9gal d&rsquo;attribution de valeur \u00ab\u00a0=\u00a0\u00bb) .<\/p>\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement :<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/VID_20221217_172209.mp4\"><\/video><\/figure>\n\n\n<p>Nous allons maintenant coder l&rsquo;allumage de toutes les LEDs \u00e0 l&rsquo;appuie du bouton. Pour ceci nous allons utiliser une boucle for :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_29-2.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement :<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/VID_20221217_182526.mp4\"><\/video><\/figure>\n\n\n<p>Pour l&rsquo;instant nous sommes oblig\u00e9s de laisser le bouton appuy\u00e9 si nous voulons que les LEDs s&rsquo;illuminent, nous allons donc faire en sorte de les allumer lors d&rsquo;un premier appui et de les \u00e9teindre lors d&rsquo;un second appui.<\/p><p>Pour commencer nous allons coder la d\u00e9tection du changement d&rsquo;\u00e9tat du bouton (appuy\u00e9 ou rel\u00e2ch\u00e9), pour ce faire nous aurons besoin de deux variables de type bool\u00e9en (valeur \u00e9gale \u00e0 0 ou 1,\u00a0 ce qui \u00e9quivaut \u00e0 faux ou vrai), une pour l&rsquo;\u00e9tat actuel du bouton et une autre avec laquelle comparer l&rsquo;\u00e9tat pr\u00e9c\u00e9dent.<\/p>\n\n<p>Cr\u00e9ons donc la variable pour l&rsquo;\u00e9tat du bouton au d\u00e9but de notre code avant setup (variable globale) :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_30.png\" alt=\"\"\/><\/figure>\n\n\n<p>Puis dans la fonction loop cr\u00e9ons la variable pour stocker la valeur pr\u00e9c\u00e9dente de du bouton :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_31.png\" alt=\"\"\/><\/figure>\n\n\n<p>Maintenant nous allons sauvegarder la valeur de allButton dans old_allButton puis l&rsquo;actualiser :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_32.png\" alt=\"\"\/><\/figure>\n\n\n<p><em>(le not permet d&rsquo;inverser la valeur renvoy\u00e9e par digitalRead, ainsi allButton sera vrai quand le bouton est appuy\u00e9 et faux quand le bouton est rel\u00e2ch\u00e9)<\/em><\/p>\n\n<p>Nous n&rsquo;avons plus qu&rsquo;\u00e0 comparer old_allButton et allButton pour voir si l&rsquo;\u00e9tat du bouton a chang\u00e9 :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_33.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement, on remarquera dans le moniteur que faire un appui sur le bouton affiche deux fois \u00ab\u00a0changement d&rsquo;etat\u00a0\u00bb, une fois lorsque le bouton passe de rel\u00e2ch\u00e9 \u00e0 appuy\u00e9 et une seconde fois quand il passe d&rsquo;appuy\u00e9 \u00e0 rel\u00e2ch\u00e9.<\/p>\n\n<p>Modifions donc un peu le code pour afficher une seule fois par appui (quand le bouton est appuy\u00e9) :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_34-1.png\" alt=\"\"\/><\/figure>\n\n\n<p>Maintenant, \u00e0 chaque appui nous voulons allumer les LEDs si elles sont \u00e9teintes, ou les \u00e9teindre si elles sont allum\u00e9es. Pour cela il nous faut une variable pour savoir si les LEDs sont \u00e9teintes ou allum\u00e9es, cr\u00e9ons donc une variable globale de type bool\u00e9en :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_35.png\" alt=\"\"\/><\/figure>\n\n\n<p>Ensuite \u00e0 chaque appui nous allons inverser sa valeur :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_36.png\" alt=\"\"\/><\/figure>\n\n\n<p>Puis si elle est \u00e9gale \u00e0 vrai alors nous allumons les LEDS, sinon (else) nous les \u00e9teignons :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_37-1.png\" alt=\"\"\/><\/figure>\n\n\n<p>Et voici le code complet :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_38-2.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement :<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/VID_20221217_172524.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Contr\u00f4ler les LEDs avec un potentiom\u00e8tre et un bouton<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n<p>Nous allons reprendre le circuit et le code du bouton, et y ajouter le potentiom\u00e8tre et ainsi combiner les deux chapitres pr\u00e9c\u00e9dents. Nous aurons donc besoin du potentiom\u00e8tre en plus du mat\u00e9riel utilis\u00e9 pr\u00e9c\u00e9demment pour le bouton.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Branchement du bouton et du potentiom\u00e8tre<\/h3>\n\n\n<p>Nous avons juste \u00e0 reprendre le montage du bouton et celui du potentiom\u00e8tre et les combiner sur la m\u00eame platine (on utilisera la m\u00eame broche G pour les deux) :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDs_schema_4-1.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/1671295189881-scaled.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Code Arduino<\/h3>\n\n\n<p>Nous allons continuer le code utilis\u00e9 pour le bouton, en ajoutant celui du potentiom\u00e8tre.<\/p><p>Commen\u00e7ons par lire la valeur du potentiom\u00e8tre et stockons le num\u00e9ro de la LED \u00e0 allumer dans une variable globale (d\u00e9clar\u00e9e avant la setup) :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/06\/IMG_20220615_115441.jpg\" alt=\"\"\/><\/figure>\n\n\n<p>Maintenant de la m\u00eame fa\u00e7on que pour le bouton, cr\u00e9ons une variable temporaire pour d\u00e9tecter un changement de valeur\u00a0 :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/06\/IMG_20220615_115534.jpg\" alt=\"\"\/><\/figure>\n\n\n<p>Il reste maintenant \u00e0 allumer la LED lors d&rsquo;un changement de valeur :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/06\/IMG_20220615_115716.jpg\" alt=\"\"\/><\/figure>\n\n\n<p>Faisons une petite modification pour allumer la LED \u00e9galement quand le bouton n&rsquo;allume plus toutes les LEDs :\u00a0<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_42.png\" alt=\"\"\/><\/figure>\n\n\n<p>Le code complet :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_43.png\" alt=\"\"\/><\/figure>\n\n\n<p>Apr\u00e8s t\u00e9l\u00e9versement :<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/VID_20221217_173705.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Simplification du code<\/h2>\n\n\n<p>Nous allons maintenant simplifier le code et le rendre plus lisible. Pour ceci nous allons cr\u00e9er des fonctions, une fonction est un ensemble de code \u00e0 ex\u00e9cuter.\u00a0<\/p><p>Commen\u00e7ons par cr\u00e9er une fonction qui contiendra le code \u00e0 ex\u00e9cuter quand le bouton change d&rsquo;\u00e9tat :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_44-1.png\" alt=\"\"\/><\/figure>\n\n\n<p>Les fonctions se d\u00e9clare avant setup, elles se composent en quatre parties :\u00a0<\/p><ul><li>Quel type de valeur renvoie la fonction, ici rien alors on \u00e9criera \u00ab\u00a0void\u00a0\u00bb<\/li><li>Le nom de la fonction, ici onAllButtonChange<\/li><li>Les param\u00e8tres de la fonction, indiqu\u00e9s entre parenth\u00e8ses, ici nous n&rsquo;en n&rsquo;avons pas alors nous mettrons des parenth\u00e8ses vides<\/li><li>Le code ex\u00e9cut\u00e9 par la fonction entre accolades, ici on copiera le code que nous avions mis dans le if de changement d&rsquo;\u00e9tat du bouton<\/li><\/ul>\n\n<p>Maintenant il ne reste plus qu&rsquo;\u00e0 utiliser la fonction quand le bouton change d&rsquo;\u00e9tat :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_45.png\" alt=\"\"\/><\/figure>\n\n\n<p>Faisons la m\u00eame chose pour le potentiom\u00e8tre, d&rsquo;abord cr\u00e9ons la fonction :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_46.png\" alt=\"\"\/><\/figure>\n\n\n<p>Puis utilisons-la dans loop :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_47.png\" alt=\"\"\/><\/figure>\n\n\n<p><em>(on peut t\u00e9l\u00e9verser le code pour observer que le code fonctionne comme avant)<\/em><\/p>\n\n<p>Maintenant cr\u00e9ons une fonction qui servira \u00e0 allumer une LED :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_48.png\" alt=\"\"\/><\/figure>\n\n\n<p>Cette fois nous utiliserons un param\u00e8tre dans la fonction, comme vu pr\u00e9c\u00e9demment il se d\u00e9clare entre les parenth\u00e8ses. Et de fa\u00e7on similaire \u00e0 une variable, on indiquera son type et son nom. Les param\u00e8tres agissent comme des variables locales dans la fonction et prennent la valeur qu&rsquo;on leur donnera lors de l&rsquo;utilisation de la fonction. Ici par exemple, lightUp(5) donnera la valeur 5 \u00e0 ledToLight et permettra ainsi d&rsquo;allumer la LED num\u00e9ro 5.<\/p>\n\n<p>Utilisons maintenant cette nouvelle fonction dans onAllButtonChange et onNumLedChange :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_50-1.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_49.png\" alt=\"\"\/><\/figure>\n\n\n<p><em>(on peut aussi maintenant supprimer la ligne \u00ab\u00a0FastLED.show();\u00a0\u00bb dans loop)<\/em><\/p>\n\n<p>Cr\u00e9ons ensuite une fonction pour allumer toutes les LEDs :&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_51.png\" alt=\"\"\/><\/figure>\n\n\n<p><i>(on remarquera qu&rsquo;on peut utiliser une fonction dans une autre fonction)<\/i><\/p>\n\n<p>Puis modifions le code en cons\u00e9quence :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_52.png\" alt=\"\"\/><\/figure>\n\n\n<p>Enfin cr\u00e9ons une derni\u00e8re fonction pour actualiser les LEDs :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_53.png\" alt=\"\"\/><\/figure>\n\n\n<p>Dans cette fonction, on efface toutes les valeurs des LEDs, puis si elles doivent toutes \u00eatre allum\u00e9es on utilise la fonction pour toutes les allumer, sinon on utilise la fonction pour allumer la LED avec le num\u00e9ro indiqu\u00e9 par le potentiom\u00e8tre.<\/p>\n\n<p>Il ne reste plus qu&rsquo;\u00e0 utiliser la fonction refresh dans onAllButtonChange et onNumLedChange :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_54.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/LEDS_code_55.png\" alt=\"\"\/><\/figure>\n\n\n<p>Le code complet ressemble donc maintenant \u00e0 ceci :<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.association-ore.fr\/fr\/wp-content\/uploads\/2022\/12\/oie_SSJhpXZPNJ5K.png\" alt=\"\"\/><\/figure>\n\n\n<p>On peut voir que le code est d\u00e9sormais plus lisible et plus \u00ab\u00a0propre\u00a0\u00bb.<\/p><p>Le code est \u00e9galement pr\u00eat \u00e0 \u00eatre utilis\u00e9 sur Arduino IOT pour contr\u00f4ler les LEDs depuis un smartphone.<\/p><p>Nous allons voir comment faire dans ce tuto : <a href=\"https:\/\/fablab21.fr\/tutos\/controler-un-ruban-led-iot-arduino\/\">https:\/\/fablab21.fr\/tutos\/controler-un-ruban-led-iot-arduino\/<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Allumer une LED de la couleur choisie Introduction Nous allons apprendre \u00e0 allumer une LED en choisissant sa position sur le ruban et sa [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":6311,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-tutoriel","meta":{"footnotes":""},"class_list":["post-9481","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/9481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/comments?post=9481"}],"version-history":[{"count":1,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/9481\/revisions"}],"predecessor-version":[{"id":11480,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/9481\/revisions\/11480"}],"up":[{"embeddable":true,"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/pages\/6311"}],"wp:attachment":[{"href":"https:\/\/www.association-ore.fr\/fr\/wp-json\/wp\/v2\/media?parent=9481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}