Panier d’achat

Aucun produit dans le panier.

LED RGB cathode 5mm

2.00 د.م.

Rupture de stock

UGS : AL007 Catégories : , Étiquettes : , , , ,

Tutoriel : Utiliser des LEDs RGB avec une carte Arduino


Les LEDs RGB

Les LEDs RGB sont en réalité composées de trois LEDs classiques Rouge, Verte et Bleu, emprisonnées ensemble pour l’éternité dans un même boitier plastique.

L’avantage d’une LED RGB par rapport à trois LEDs classiques est simple : il n’y a qu’un seul composant à câbler. Au lieu d’avoir trois composants à deux pattes, on a un unique composant à quatre pattes, ça demande moins de soudure et donc moins de temps à câbler.

Illustration du brochage d'une LED RGB

Le brochage d’une LED RGB

Les LEDs RGB existent en deux versions : à anode commune ou à cathode commune.

Dans la version à anode commune, les trois anodes (le « + ») des LEDs sont reliées ensemble. Cela signifie qu’il faut câbler la tension d’alimentation sur la broche commune et contrôler les LEDs via un signal à 0 volt pour les faire s’allumer.

Dans la version à cathode commune, les trois cathodes (le « -« ) des LEDs sont reliées ensemble. Cela signifie qu’il faut câbler la masse sur la broche commune et contrôler les LEDs via un signal à +5 volts (ou autre) pour les faires s’allumer.

Les versions à cathode commune sont plus simples à utiliser pour des débutants, car plus intuitives. Dans cette configuration, une tension de 5 volts allume la LED et une tension de 0 volt l’éteint. Pour un petit projet avec seulement quelques LEDs RGB, cela peut être intéressant.

Cependant, les versions à anode commune sont bien plus répandues. Elles sont moins simples à utiliser, car dans cette configuration une tension de 5 volts éteint la LED et une tension de 0 volt l’allume. C’est le monde à l’envers.

De façon générale, dans une vraie application, il est préférable d’utiliser des LEDs RGB à anode commune plutôt que des LEDs RGB à cathode commune. Elles sont certes moins pratiques à utiliser, car il faut inverser sa logique de pensées, mais ces versions ont l’immense avantage de pouvoir être contrôlées par des circuits intégrés spécialisés comme le TLC5940 qui ne peuvent qu’absorber du courant et pas en générer, ce qui rend l’utilisation de LEDs RGB à cathode commune impossible dans ce cas.


Utiliser une LED RGB avec une carte Arduino / Genuino

Pour bien comprendre le fonctionnement d’une LED RGB, nous allons faire un montage très simple avec une LED RGB à anode commune et quelques résistances.


Le montage

Pour réaliser ce montage, il va nous falloir :

  • Une carte Arduino UNO (et son câble USB),

  • Une LED RGB à anode commune (ou cathode commune, voir chapitre suivant dans ce cas),

  • Trois résistances de 220 ohms (rouge / rouge / marron),

  • Une plaque d’essai et des fils pour câbler notre montage.


Le montage (variante à cathode commune)

Vue prototypage du tutoriel Arduino LED RGB (variante cathode commune)

Vue prototypage du montage (variante cathode commune)

Le montage est identique à celui de la version à anode commune. La seule différence est que la broche commune de la LED RGB est reliée à la broche GND de la carte Arduino.


Une LED, trois résistances

Pourquoi utiliser trois résistances ? Pourquoi ne pas utiliser une seule résistance sur la broche commune ? Ce serait plus simple !

Oui, mais non, fausse bonne idée On câble toujours une résistance de limitation de courant par LED.

On pourrait effectivement utiliser une seule résistance sur la broche commune, mais cela aurait trois conséquences :

  • allumer une seule LED lui ferait subir trop de courant,

  • inversement, allumer plusieurs LED ferait diminuer la luminosité des LEDs,

  • si une LED grille, toutes les autres suivront en cascade, car le courant restant deviendra plus fort à chaque LED défectueuse.

Une résistance ça ne coûte pas très cher, ne faites donc pas cette erreur de débutant


Le code

Commençons petit avec un code utilisant la fonction digitalWrite() pour contrôler chaque LED.

Avec trois LED et deux états possibles par LED (éteinte et allumée), on obtient un total de 8 couleurs. Ça ne fait pas beaucoup de couleurs, mais c’est déjà un bon début.

/* Couleurs (format RGB) */
const byte COLOR_BLACK = 0b000;
const byte COLOR_RED = 0b100;
const byte COLOR_GREEN = 0b010;
const byte COLOR_BLUE = 0b001;
const byte COLOR_MAGENTA = 0b101;
const byte COLOR_CYAN = 0b011;
const byte COLOR_YELLOW = 0b110;
const byte COLOR_WHITE = 0b111;

/* Broches */
const byte PIN_LED_R = 9;
const byte PIN_LED_G = 10;
const byte PIN_LED_B = 11;

On commence le code très classiquement avec les déclarations des différentes constantes du programme.

Pour ce premier programme, j’ai décidé de coder les couleurs sur 3 bits, dans l’ordre RGB. Pour rendre cela plus lisible, j’ai utilisé le format 0bXXX qui est permis par le langage C/C++ pour déclarer des nombres en binaire.

J’ai ensuite déclaré trois constantes pour les trois broches de la LED RGB.

void setup() {

// Initialise les broches
pinMode(PIN_LED_R, OUTPUT);
pinMode(PIN_LED_G, OUTPUT);
pinMode(PIN_LED_B, OUTPUT);
displayColor(COLOR_BLACK);
}

Il n’y a pas grand-chose de très passionnant à faire dans la fonction setup().

Il suffit de mettre les trois broches de la LED RGB en sortie et d’appeler notre fonction displayColor(), que l’on verra juste après, pour éteindre les LED au démarrage.

void displayColor(byte color) {

// Assigne l'état des broches
// Version cathode commune
//digitalWrite(PIN_LED_R, bitRead(color, 2));
//digitalWrite(PIN_LED_G, bitRead(color, 1));
//digitalWrite(PIN_LED_B, bitRead(color, 0));

// Version anode commune
digitalWrite(PIN_LED_R, !bitRead(color, 2));
digitalWrite(PIN_LED_G, !bitRead(color, 1));
digitalWrite(PIN_LED_B, !bitRead(color, 0));
}

La fonction displayColor() va faire tout le boulot. Dans cette première version à 8 couleurs, elle se contente de faire des digitalWrite() sur les broches des LEDs rouge verte et bleu en fonction de la couleur passée en paramètre.

Pour « lire » l’état de chaque bit de la couleur, j’utilise la fonction bitRead() qui prend en paramètre un nombre et un numéro de bit (commençant à 0).

N.B. Vous remarquerez qu’il y a deux versions du code, une pour les LEDs RGB à anode commune et une pour les LEDs RGB à cathode commune. La différence réside simplement dans l’inversion de valeur (le point d’exclamation signifie « inverse de la valeur booléenne », exemple : !0 == 1). A vous de commenter, décommenter la bonne version du code en fonction de votre montage

void loop() {

/* Code de démonstration */
displayColor(COLOR_RED);
delay(1000);

displayColor(COLOR_GREEN);
delay(1000);

displayColor(COLOR_BLUE);
delay(1000);

displayColor(COLOR_MAGENTA);
delay(1000);

displayColor(COLOR_CYAN);
delay(1000);

displayColor(COLOR_YELLOW);
delay(1000);

displayColor(COLOR_WHITE);
delay(1000);

displayColor(COLOR_BLACK);
delay(1000);
}

La fonction loop() dans cet exemple se contente d’afficher chaque couleur en boucle avec un délai.

Le code complet avec commentaires :

/*
* Code d'exemple pour une LED RGB (8 couleurs).
* Visite MEGMa.ma
*/

/* Couleurs (format RGB) */
const byte COLOR_BLACK = 0b000;
const byte COLOR_RED = 0b100;
const byte COLOR_GREEN = 0b010;
const byte COLOR_BLUE = 0b001;
const byte COLOR_MAGENTA = 0b101;
const byte COLOR_CYAN = 0b011;
const byte COLOR_YELLOW = 0b110;
const byte COLOR_WHITE = 0b111;

/* Broches */
const byte PIN_LED_R = 9;
const byte PIN_LED_G = 10;
const byte PIN_LED_B = 11;

// Fonction setup(), appelée au démarrage de la carte Arduino
void setup() {

// Initialise les broches
pinMode(PIN_LED_R, OUTPUT);
pinMode(PIN_LED_G, OUTPUT);
pinMode(PIN_LED_B, OUTPUT);
displayColor(COLOR_BLACK);
}

// Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée
void loop() {

/* Code de démonstration */
displayColor(COLOR_RED);
delay(1000);

displayColor(COLOR_GREEN);
delay(1000);

displayColor(COLOR_BLUE);
delay(1000);

displayColor(COLOR_MAGENTA);
delay(1000);

displayColor(COLOR_CYAN);
delay(1000);

displayColor(COLOR_YELLOW);
delay(1000);

displayColor(COLOR_WHITE);
delay(1000);

displayColor(COLOR_BLACK);
delay(1000);
}

/** Affiche une couleur */
void displayColor(byte color) {

// Assigne l'état des broches
// Version cathode commune
//digitalWrite(PIN_LED_R, bitRead(color, 2));
//digitalWrite(PIN_LED_G, bitRead(color, 1));
//digitalWrite(PIN_LED_B, bitRead(color, 0));
// Version anode commune
digitalWrite(PIN_LED_R, !bitRead(color, 2));
digitalWrite(PIN_LED_G, !bitRead(color, 1));
digitalWrite(PIN_LED_B, !bitRead(color, 0));
}

Plus d’information visite notre page Facebook.


 

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “LED RGB cathode 5mm”

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

Tous les résultats de recherche
×