Allumer une RGB LED (4 broches) avec un Arduino

Une RGB LED (ou en français RVB) est une LED qui peut s’allumer dans toutes les couleurs en fonction de trois couleurs : le rouge, le vert et le bleu (d’où son nom RGB des trois couleurs en anglais). On les retrouve un peu partout, notamment dans les écrans OLED ou les éclairages d’ambiance. Cette LED comporte 4 broches et peut sortir toutes les couleurs, mais comment peut-on l’allumer ?

Contrairement à des LEDs classiques, composées d’un anode et d’une cathode servant uniquement à alimenter la LED, les RGB LEDs possèdent des broches en plus. Ces broches correspondent chacun à un facteur de la LED, une par exemple correspond à la couleur rouge, une autre à la couleur bleue, une autre à la couleur verte et la dernière est la masse. Voilà comment la brancher à L’Arduino et l’utiliser.

Composants :

  • Une RGB LED
  • Un Arduino
  • 3x Résistances de 22O Ω
  • Des cables (M-M)
  • Une Breadboard pour le branchement

Schéma de câblage

Schéma de cablage

Code

Le code en C++ pour l’arduino

 //Allumer une RGB LED
//valentin cassayre

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

#define delayTime 10 // temps de décoloration entre les couleurs


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

// définir les variables
int redValue;
int greenValue;
int blueValue;


void loop()
{
 redValue = 255; // choisis une valeur entre 1 et 255 pour changer la couleur.
 greenValue = 0;
 blueValue = 0;

 analogWrite(RED, 0);
 delay(1000);

 for(int i = 0; i < 255; i += 1) 
 {
 redValue -= 1;
 greenValue += 1;
 analogWrite(RED, 255 - redValue);
 analogWrite(GREEN, 255 - greenValue);
 delay(delayTime);
 }

 redValue = 0;
 greenValue = 255;
 blueValue = 0;

 for(int i = 0; i < 255; i += 1) 
 {
 greenValue -= 1;
 blueValue += 1;
 analogWrite(GREEN, 255 - greenValue);
 analogWrite(BLUE, 255 - blueValue);
 delay(delayTime);
 }

 redValue = 0;
 greenValue = 0;
 blueValue = 255;


 for(int i = 0; i < 255; i += 1) 
 {
 redValue += 1;
 blueValue -= 1;
 analogWrite(RED, 255 - redValue);
 analogWrite(BLUE, 255 - blueValue);
 delay(delayTime);
 }
}