Main

Apprendre : Accueil | Exemples | Fondements? | Bidouillage? | Liens?
Exemples > Pour commencer

Faire varier la luminosité d'une LED


Cet exemple vous montre comment utiliser l'instruction analogWrite pour faire varier la luminosité d'une LED. L'instruction analogWrite génère une impulsion avec modulation de la largeur de l'impulsion ou PWM, allumant et éteignant une broche digitale très rapidement, créant un effet de variation de la luminosité.

Matériel requis

  • une plaque d'essai pour montages sans soudures
  • des straps
  • une LED standard
  • une résistance de 10 Kohms

Le circuit à réaliser

Image créée avec le logiciel Fritzing. Pour plus de circuits d'exemple, voir la page des projets Fritzing.

  • Connecter l'anode (la patte longue positiveà de la LED à la broche numérique 9 de la carte Arduino, en série via la résistance.
  • Connecter la cathode (la patte courte, négative) de la LED directement à la masse (0V).

Comment çà marche ?

Dans ce programme, à l'aide d'une impulsion rapide, on va faire varier la proportion de temps où la LED est allumée, ce qui donnera un effet d'allure analogique de variation de la luminosité de la LED.

Pour plus de détails, voir la page consacrée aux impulsions PWM : PWM

Mise en oeuvre du programme

Programmation de la carte Arduino

Résultat obtenu

La luminosité de la LED varie crescendo puis decrescendo et ainsi de suite.

Schéma théorique du montage

Voici le schéma théorique du montage :

Explications du programme

Au niveau de la fonction setup ()

A part la déclaration de la broche 9 utilisée en sortie, il n'y a rien à faire de spécial dans la fonction setup().

pinMode(9, OUTPUT);

Au niveau de la fonction loop()

L'instruction analogWrite() utilisée dans la fonction princpale loop() requiert deux arguments :

  • le premier indiquant la broche utilisée pour générer l'impulsion,
  • le second indiquant la valeur PWM à utiliser pour générer l'impulsion (0 pour état HAUT pendant 0% du temps et 255 pour état HAUT pendant 100% du temps).

Pour obtenir la variation de la luminosité de la LED, il est nécessaire d'augmenter progressivement la valeur PWM utilisée avec l'instruction analogWrite, de 0 (0% du temps au niveau HAUT) à 255 (100% du temps au niveau HAUT), puis de revenir à la valeur 0 et de recommencer le cycle. Dans le programme ci-dessous, la valeur PWM est fixée en utilisant une variable appelée luminosite. A chaque passage de la boucle loop(), cette variable est augmentée (ou incrémentée) par la valeur de la variable variation (qui fixe le "cran" de variation de la valeur PWM).

Lorsque la variable luminosite arrive à sa valeur extrême (soit 0 ou 255), la variable variation est changée dans sa valeur opposée (négative ou positive). En d'autres termes, si la variable variation vaut 5, elle est fixée à -5. Si elle vaut -5, elle est fixée à +5. Ainsi, au passage suivant de la boucle loop(), cela inverse le sens de variation de la variable luminosite.

L'instruction analogWrite() va changer la valeur PWM très rapidement : on utilisera donc une instruction delay() à la fin du programme pour fixer la vitesse de variation de la luminosité. Essayer de changer la valeur utilisée pour l'instruction delay() et observer ce qui se passe.

Le code du programme

A copier/coller dans votre logiciel Arduino.


/*
Variation de luminosité d'une LED

Cet exemple montre comment faire varier la luminosité
sur la broche 9 en utilisant l'instruction analogWrite()


Cet exemple est dans le domaine public
Traduction française par X. HINAULT - www.mon-club-elec.fr

 */


int luminosite = 0;    // % de temps où la LED est allumée
int variation = 5;    // intervalle de variation de la luminosité

void setup()  {
  // configure la broche 9 en SORTIE
  pinMode(9, OUTPUT);
}

void loop()  {
  // applique une impulsion de largeur correspondant à la luminosité sur la broche 9
  analogWrite(9, luminosite);    

  // modifie la luminosité pour le passage suivant dans la boucle loop()
  luminosite = luminosite + variation;

  // inverse le sens de variation de la luminosité quand on atteint les valeurs extremes 0 ou 255
  if (luminosite == 0 || luminosite == 255) {
    variation = -variation ;
  }    
  // pause de 30 millisecondes pour voir l'effet de variation    
  delay(30);                            
}

Voir également

La documentation des composants utilisés

La documentation des instructions utilisées :

Et aussi

La documentation des stratégies de programmation utilisées

Les autres exemples suivants :

  • Le programme minimum : Le code minimum nécessaire pour un programme Arduino.
  • Faire clignoter une LED: Allumer puis éteindre successivement une LED. (Broche numérique en mode SORTIE)
  • Lire l'état d'un bouton poussoir : Lire l'état d'un bouton poussoir et afficher le résultat obtenu dans la fenêtre Terminal Série du logiciel Arduino. (Broche numérique en mode ENTREE)
  • Mesure Analogique visualisée sur port Série : Lire la tension aux bornes d'un potentiomètre et afficher la valeur obtenue dans la fenêtre Terminal Série du logiciel Arduino. (Broche en entrée ANALOGIQUE)
  • Variation lumineuse: Montre comment utiliser la "sortie analogique" (impulsion PWM) pour faire varier l'intensité lumineuse d'une LED

Commentaires utilisateurs


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0. Cette page est la traduction française commentée de la page originale : http://arduino.cc/en/Tutorial/Fade