2.4 Couleur des leds, Allons plus loin

Couleur,  leds RGB et contrôle d’intensité lumineuse:

Les leds de simple couleur c’est bien mais il existe aussi des leds différentes capabable de bien plus!
Les LEDs RGB (ou RVB)  sont des leds qui ont 4 pattes et elles permettent toutes d’obtenir un dégradé de couleur composé de rouge, de vert et de bleu. En fait il s’agit de 3 leds de couleur différentes intégrées dans un même boîtier. Une led Rouge, une Verte ( Green )  et une Bleue.

Il existe 2 configurations de Led RGB  :
Les led RGB à anode commune.
Les led RGB à cathode commune.

Dans le premier cas cela veut dire que les bornes + ( anode) des 3 leds sont reliées ensembles et dans le second cas, ce sont les bornes – ( cathode)  qui sont reliées.
Voici un petit montage pour savoir dans quelle configuration votre led.
la patte qui n’est pas reliée à une résistance ci dessous est la 2eme  patte en partant du méplat de la led et elle correspond à plus longue de votre LED RGB dans le cas  ou est la patte commune qu’elle soit l’anode ou la cathode et c’est celle ):

Si votre led s’est allumée c’est que vous avez une led à anode commune (ça nous servira juste après). Si elle ne s’allume pas, échangez les fils qui relient la led aux 5V et au GND comme ceci (votre led possède donc une cathode commune):

Vous pouvez désormais voir les différentes couleurs en connectant les différentes pattes à la masse ou au 5V tout en faisant attention de ne pas faire de court-circuit.

Pour que l’arduino puisse commander cette led vous aurez besoin de réaliser ce schéma :

 

Maintenant en mélangeant le rouge le vert et le bleu en tout ou rien comme vous le feriez avec 3 leds différentes, vous pouvez contrôler jusqu’à 8 couleurs avec votre LED RGB !
Le rouge, le vert et le bleu, mais aussi du jaune, en mélangeant le vert et le rouge,  du turquoise en mélangeant le verte et le bleu, du violet en mélangeant le rouge et le bleu et du blanc en mélangeant les 3 couleurs !

C’est déjà bien! Mais on peut faire encore mieux !
Comment ? En pilotant l’intensité lumineuse des différentes couleurs !

Pour cela on va utiliser ce qu’on appel du PWM !  Ce mot ne vous parles pas encore ? C’est pas grave ! Vous l’avez sans doute déjà vu sans vous en rendre compte!

Définition : PWM = Pulse Widht Modulation ou traduit en français => Modulation de Largeur d’Impulision aussi appélé MLI par les francophones !

En gros un signal PWM c’est un signal tout ou rien alternant, qui se répète où tu règles le temps allumé par rapport au temps éteinds. Si on représente cela sur un graphique ça peut ressebler à cela :

Signal PWM

0% de PWM correspond à un signal qui est toujours à LOW, 100% de PWM à un signal toujours à HIGH.

Et cette alternance HIGH LOW nous permettra de plus ou moins allumer une led ! Nous n’irons pas plus loins sur la théorie concernant le PWM ici mais vous pouvez cliquer ici pour en savoir plus sur le PWM 

Tous les pins de votre arduino ne sont pas disposé à facilement faire un signal PWM. Les pins qui peuvent facilement faire du PWM sont indiqués sur votre carte arduino avec ce symbole : ~.

Sur une arduino uno ou nano il s’agit des pins 3, 5, 6, 9, 10 et 11 .
Hey ! Mais ça tombien bien tout à l’heure on a câblé notre led RGB sur les pins 9 10 et 11 ! C’était fais exprès ? 
Hé bien oui 😉

Bon ok mais ça marche comment ?

Il suffit de remplacer « digitalWrite(pin, HIGH); »
par analogWrite(pin, valeur);  avec valeur comprise entre 0 et 255! 255 correspondant à 100% .

Allez y modifiez vos précédents programmes pour tester 😉

 

Pour finir voici un petit programme qui devrait vous permettre de voir ce qui est possible de faire avec une led RGB tout en vous montrant les différentes manières de contrôler une led RGB :

#define R 11
#define G 10
#define B 9

bool anodeCommune = true; //Mettre false si vous avez une led à cathode commune

int i,j,k; //Variables du dégradé
#define PAUSE 7 //Temps de pause en millis

void setup() {
  pinMode(R, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(B, OUTPUT);

  //Eteins tout : (si vous avez une led à cathode commune remplacez les HIGH par des LOW et inversement)
  digitalWrite(R, HIGH);
  digitalWrite(G, HIGH);
  digitalWrite(B, HIGH);

  //Première animation : (si vous avez une led à cathode commune remplacez les HIGH par des LOW et inversement)
  digitalWrite(R, LOW);  delay(500);
  digitalWrite(G, LOW);  delay(500);
  digitalWrite(R, HIGH); delay(500);
  digitalWrite(B, LOW);  delay(500);
  digitalWrite(G, HIGH); delay(500);
  digitalWrite(R, LOW);  delay(500);
  digitalWrite(G, LOW);  delay(500);

  //Eteins tout :
  rgb(0,0,0);

}

void rgb(uint8_t red, uint8_t green, uint8_t blue) //Fonction pour faciliter la commande de leds RGB
{
  if (anodeCommune == true)
  {
    red = map(red, 0, 255, 255, 0);
    green = map(green, 0, 255, 255, 0);
    blue = map(blue, 0, 255, 255, 0);
  }
  analogWrite(R, red);
  analogWrite(G, green);
  analogWrite(B, blue);
}

void loop() {

  //Dégradé :
  for (i = 0; i < 255; i++) //Rouge+
  {
    rgb(i, j, k);
    delay(PAUSE);
  }

  for (j = 0; j < 255; j++) //Vert+
  {
    rgb(i, j, k);
    delay(PAUSE);
  }
  
  for (i = 255; i > 0; i--) //Rouge-
  {
    rgb(i, j, k);
    delay(PAUSE);
  }

  for (k = 0; k < 255; k++) //Bleu+
  {
    rgb(i, j, k);
    delay(PAUSE);
  }
  
  for (j = 255; j > 0; j--) //Vert-
  {
    rgb(i, j, k);
    delay(PAUSE);
  }

 
  for (i = 0; i < 255; i++) //Rouge+
  {
    rgb(i, j, k);
    delay(PAUSE);
  }
  
    
  for (j = 0; j < 255; j++) //Vert+
  {
    rgb(i, j, k);
    delay(PAUSE);
  }
  
  for (k = 255; k > 0; k--) //Bleu-
  {
    rgb(i, j, k);
    delay(PAUSE);
  }
  
  for (j = 255; j > 0; j--) //Vert-
  {
    rgb(i, j, k);
    delay(PAUSE);
  }
  
  for (i = 255; i > 0; i--) //Rouge-
  {
    rgb(i, j, k);
    delay(PAUSE);
  }

}

Et la vidéo de démonstration :

 

La fonction map est utilisée dans le programme ci dessus dans la fonction rgp afin de plus facilement piloter une Led RGB avec la même valeur 255  pour « allumer la couleur  » que cela soit une LED à annode commune ou à cathode commune.

 

<- Retourner à la page précédente | Passer à la page suivante ->

3 réflexions sur « 2.4 Couleur des leds, Allons plus loin »

Laisser un commentaire

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