fbpixel
Étiquettes : , ,

La LED RVB permet d’obtenir un large panel de couleurs. Elle est composée de trois mini LEDs, rouge, verte et bleue (d’où leur nom RVB ou RGB, en anglais); suffisamment proches pour que leurs lumières se mélangent. De ce fait, elle se pilote de la même façon que trois LEDs indépendantes.

Une LED RVB peut être utilisé, par exemple,  pour créer une ambiance lumineuse à la maison ou pour donner des informations à l’utilisateur sur l’état d’un système (Vert – tout va bien, Bleu – traitement, Rouge – il y a une erreur).

Matériel

  • Arduino x1
  • Câbles M/M x3
  • Carte de prototypage x1
  • Résistance 220 Ohm x1
  • Led RVB x1

Schéma de montage d’une LED RVB

Les broches de contrôle des couleurs (R,V,B) sont connectées à des sorties PWM de la carte Arduino. Si vous utilisez d’autres sorties que les sorties PWM (les sorties numériques), les couleurs transitoires n’apparaîtront pas et la LED passera d’une couleur à un autre.

arduino-led-rgb-schematics Modulez la couleur avec la LED RVB

Généralement, les valeurs de courant supporté par les LEDs ne sont pas disponibles. N’oubliez pas de mettre une résistance entre la cathode et la masse de l’Arduino pour protéger la LED.

Code de gestion d’une LED RVB

Dans cette exemple, nous passons d’une couleur à l’autre progressivement. Pour cela, nous faisons varier les valeurs R,G,B que nous envoyons aux broches correspondantes.

Dans ce cas, il est plus pratique et lisible d’utiliser une fonction qui attribue la valeur PWM à la sortie correcte pour chaque couleur. Pour ce faire, nous créons la fonction lightRGB qui prend 3 entiers en entrée, qui sont la commande pwm, et écrivons cette valeur sur les broches RVB.

void lightRGB(int r, int g, int b){
  analogWrite(RED, r);
  analogWrite(GREEN, g);
  analogWrite(BLUE, b);
}

Une fois la fonction créée, elle peut être utilisée dans le code principal (fonction loop) et contrôler trois sorties avec une ligne de code. Voici le code complet.

// Pins
#define BLUE 3
#define GREEN 5
#define RED 6

#define delayTime 10 // fading time

int MAX_LUM = 255;
int redVal,greenVal,blueVal;

void setup()
{
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  digitalWrite(RED, HIGH);
  digitalWrite(GREEN, LOW);
  digitalWrite(BLUE, LOW);
}

void loop()
{    
  redVal = MAX_LUM; // choose a Val between 1 and 255 to change the color.
  greenVal = 0;
  blueVal = 0;
  
  for(int i = 0; i < MAX_LUM; i += 1) // fades out red bring green full when i=255
  {
    redVal -= 1;
    greenVal += 1;
    lightRGB(redVal, greenVal, blueVal);
    delay(delayTime);
  }
  
  redVal = 0;
  greenVal = MAX_LUM;
  blueVal = 0;
  
  for(int i = 0; i < MAX_LUM; i += 1) // fades out green bring blue full when i=255
  {
    greenVal -= 1;
    blueVal += 1;
    lightRGB(redVal, greenVal, blueVal);
    delay(delayTime);
  }
  
  redVal = 0;
  greenVal = 0;
  blueVal = MAX_LUM;
  
  for(int i = 0; i < MAX_LUM; i += 1) // fades out blue bring red full when i=255
  {
    // The following code has been rearranged to match the other two similar sections
    blueVal -= 1;
    redVal += 1;
    lightRGB(redVal, greenVal, blueVal);
    delay(delayTime);
  }
}

void lightRGB(int r, int g, int b){
  analogWrite(RED, r);
  analogWrite(GREEN, g);
  analogWrite(BLUE, b);
}

Contrôler une LED RGB semble trivial mais c’est un excellent exercice lorsque vous commencez à jouer avec Arduino. Un RVB peut être peu utile pour créer des effets de lumière. Dans ce cas, vous devrez peut-être utiliser des bandes de LED adressables.

Application

  • Modifier la couleur de la LED en fonction de la température de la pièce
  • Créer une lampe qui change de couleur pilotée par une télécommande IR

Source

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie