Arduino allumer une LED en douceur

À la page vous trouverez le mode d’emploi pour assembler un circuit électrique avec LED pour progressivement faire varier l’intensité lumineuse avec l’aide signal PWM (Pulse Width Modulation) sur une carte Arduino Uno. Pour comprendre le principe de la PWM générée par l’Arduino, vous pouvez consulter ce tutoriel. Tout d’abord PWM sont les Initiales de Pulse Width Modulation que l’on traduit en français par MLI (Modulation de Largeur d’Impulsion).


Pour cette activité, nous aurons besoin:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • LED et résistance
  • breadboard
  • fils de connexion

Matériel supplémentaire sur ce sujet:

  1. Feu de signalisation routière avec Arduino
  2. Jeu de réaction avec LEDs et boutons-poussoirs
  3. Jeu Arduino avec LEDs «Répétez la séquence»

C’est quoi le signal PWM sur une carte Arduino

Graphique. Signal PWM sur la carte Arduino
Graphique. Signal PWM sur la carte Arduino

Afin de varier artificiellement la tension en sortie de l’Arduino, il nous faudra utiliser certaines broches digitales de la carte. Mais par définition, une broche digitale ne délivre qu’un signal binaire (0 ou 1), c’est-à-dire que le signal électrique en sortie ne peut avoir que deux valeurs soit HIGH (niveau Haut = 5V) ou LOW (niveau Bas = 0V). Les broches digitales compatibles PWM vont permettre d’émettre un signal numérique disposant de 256 valeurs différentes.

Arduino allumer/éteindre une led progressivement

Faire varier l'intensité lumineuse d'une LED Arduino
Faire varier l’intensité lumineuse d’une LED Arduino

Pour générer une tension variable ou pseudo analogique en sortie d’une broche digitale de l’Arduino, il va falloir changer très rapidement l’état de la sortie. C’est ce changement de la valeur moyenne du signal électrique va changer la luminosité d’une LED. 6 pins d’une Arduino Uno or Nano fournissent la sortie signal MLI (Modulation de Largeur d’Impulsion) – 3, 5, 6, 9, 10, 11. Pour l’amorçage signal PWM dans programme utiliser la fonction analogWrite();

Programme pour varier l’intensité lumineuse d’une LED

#define RED_LED 9

void setup() {
   // initialise les broches
   pinMode(RED_LED, OUTPUT);
}

void loop() {
   analogWrite(RED_LED, 0);
   delay(500);
   analogWrite(RED_LED, 50);
   delay(500);
   analogWrite(RED_LED, 100);
   delay(500);
   analogWrite(RED_LED, 150);
   delay(500);
   analogWrite(RED_LED, 200);
   delay(500);
   analogWrite(RED_LED, 255);
   delay(500);
}

Utiliser une boucle « for » pour allumer et éteindre une LED en douceur. Une boucle « for » est exécutée i fois, on doit lui donner trois paramètres entre les parenthèses (le code qui se trouve à l’intérieur de la boucle sera exécuté 255 fois):

1. la création et l’assignation de la variable à une valeur de départ
2. suivit de la définition de la condition à tester
3. suivit de l’instruction à exécuter

#define RED_LED 9

void setup() {
   // initialise les broches
   pinMode(RED_LED, OUTPUT);
}

void loop() {
   for(int i=0; i<=255; i++) {
      analogWrite(RED_LED, i);
      delay(10);
   }

   for(int i=255; i>=0; i--) {
      analogWrite(RED_LED, i);
      delay(10);
   }
}

Explication du code pour varier l’intensité lumineuse:

  1. la boucle « for » sert à répéter les opérateurs enfermés dans une construction (accolades);
  2. la boucle « for » est répétée tant que la condition i<=255 ou i>=0 est vraie.
Allumer et éteindre 2 LED en douceur
Arduino allumer et éteindre 2 LED en douceur

Programme pour allumer/éteindre 2 LEDs en douceur

#define RED_LED 9
#define BLU_LED 11

void setup() {
   // initialise les broches
   pinMode(RED_LED, OUTPUT);
   pinMode(BLU_LED, OUTPUT);
}

void loop() {
   for(int i=0; i<=255; i++) {
      analogWrite(RED_LED, i);
      delay(10);
   }

   for(int i=255; i>=0; i--) {
      analogWrite(RED_LED, i);
      delay(10);
   }

   for(int i=0; i<=255; i++) {
      analogWrite(BLU_LED, i);
      delay(10);
   }

   for(int i=255; i>=0; i--) {
      analogWrite(BLU_LED, i);
      delay(10);
   }
}

Explication du code pour allumer/éteindre 2 LED avec PWM:

  1. l’en-tête de la boucle « for » se compose de trois parties (initialisation ; condition ; incrémentation) – initialisation est exécutée une fois, puis la condition est vérifiée, si la condition est vraie, incrémentation est exécutée et la boucle est répétée jusqu’à ce que la condition soit vraie.

Conclusion. La LED de l’Arduino est allumée en douceur grâce à un signal PWM. Dans le programme d’exemple, nous avons modifié en douceur la luminosité de la LED avec le signal PWM (Modulation de Largeur d’Impulsion). Cet exemple peut être utilisé pour une lumière LED décorative dans une pièce ou une veilleuse décorative à l’aide d’un microcontrôleur Arduino.





3 Replies to “Allumer en douceur LED Arduino avec PWM”

  1. Nice post. I learn something more challenging on different blogs everyday. It will always be stimulating to read content from other writers and practice a little something from their store.

  2. I am often to blogging and i really appreciate your content. The article has really peaks my interest. I am going to bookmark your site and keep checking for new information.

  3. Bonjour,
    -1- Est-ce qu’on peut envisager de définir 6 LEDs en PWM, broches 3,5, 6, 9, 10 et 11 (celle avec le signe ~) sur un seul Arduino UNO. Il doit suffire de recopier le code 6x et donner des n° aux LEDs…?
    -2- Est-ce qu’on peut avoir des montées/descentes de luminosité pas synchronisées entre elles pour chaque LED ?
    -3- Est-ce qu’avec 6 LEDs un papillotement ne risque pas d’apparaître ?
    -4- Pas plus de 6 LEDs sur un seul Arduino UNO je suppose ?
    Merci si vous répondez à mes questions, mercis, mercis.
    Micha Ross

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.