Utiliser une LED RGB : mélanger les couleurs avec Arduino, anode ou cathode commune
Comment fonctionne une LED RGB et comment distinguer cathode commune et anode commune ? Câblage Arduino, résistance pour chaque couleur, mélange avec analogWrite, effet arc-en-ciel, code ESP32 et Pico.
Une LED RGB, ce sont trois LED distinctes dans un même boîtier : rouge (Red), verte (Green) et bleue (Blue). En réglant la luminosité de chacune séparément, tu obtiens presque n'importe quelle couleur, du jaune au turquoise et du violet à l'orange. Chaque pixel d'un écran fonctionne de la même façon. C'est l'un des composants Arduino les plus amusants pour les voyants d'état, les lampes d'ambiance et les indicateurs de notification colorés.

Comment fonctionne une LED RGB ?
Les couleurs de la lumière se mélangent par addition : rouge et vert ensemble donnent du jaune à l'œil, vert et bleu du turquoise (cyan), rouge et bleu du violet (magenta), et les trois ensemble du blanc. L'Arduino règle la luminosité de chaque canal de 0 à 255 grâce à la MLI (PWM). On obtient ainsi, en théorie, 256 × 256 × 256 ≈ 16,7 millions de combinaisons. Le PWM allume et éteint la LED des centaines de fois par seconde ; l'œil ne perçoit pas ce clignotement, seulement la luminosité moyenne.
| Couleur | Rouge | Vert | Bleu |
|---|---|---|---|
| Rouge | 255 | 0 | 0 |
| Vert | 0 | 255 | 0 |
| Bleu | 0 | 0 | 255 |
| Jaune | 255 | 255 | 0 |
| Turquoise (cyan) | 0 | 255 | 255 |
| Violet (magenta) | 255 | 0 | 255 |
| Orange | 255 | 80 | 0 |
| Blanc | 255 | 255 | 255 |
Cathode commune ou anode commune ?
La plus longue des quatre pattes est la broche commune aux trois LED. Si elle relie leurs cathodes, la LED est à cathode commune ; si elle relie leurs anodes, elle est à anode commune. De l'extérieur elles sont identiques, mais câblage et code sont inversés :
| Caractéristique | Cathode commune (CC) | Anode commune (CA) |
|---|---|---|
| La patte longue va sur | GND | 5V |
| Pour allumer une couleur | Broche à HIGH (255) | Broche à LOW (0) |
| Valeur dans le code | analogWrite(pin, valeur) | analogWrite(pin, 255 - valeur) |
| Complètement éteint | 0 | 255 |
Ordre des pattes et câblage sur Arduino
Sur les LED RGB 5 mm courantes, l'ordre est rouge, commune (la plus longue), vert, bleu, mais il peut varier selon le fabricant : le plus sûr est de tester chaque patte. Chaque couleur se branche via sa propre résistance sur une broche PWM. Sur l'Arduino Uno, ce sont les broches marquées ~ : 3, 5, 6, 9, 10 et 11.
| Patte | Connexion | Broche Arduino Uno |
|---|---|---|
| Rouge (R) | Via une résistance | D9 |
| Commune (la plus longue) | GND en cathode commune, 5V en anode commune | — |
| Vert (G) | Via une résistance | D10 |
| Bleu (B) | Via une résistance | D11 |
Calcul des résistances : une par couleur
Chaque couleur a besoin d'une tension différente pour s'allumer (tension directe) : environ 2,0 V pour le rouge et 3,0–3,2 V pour le vert et le bleu. Pour 20 mA sous 5 V, le rouge demande (5 − 2,0) / 0,020 = 150 Ω et le vert et le bleu (5 − 3,2) / 0,020 ≈ 100 Ω. En pratique, mettre 220 Ω sur les trois est sûr et reste assez lumineux ; l'équilibre des couleurs se règle dans le code. Pour calculer tes propres valeurs, utilise le calculateur Résistance de LED, et pour la tension directe de chaque couleur, le tableau Tensions des LED.
Mélanger les couleurs avec Arduino
Le code ci-dessous regroupe les trois canaux dans une seule fonction setColor() et affiche sept couleurs à la suite. Si ta LED est à anode commune, il suffit de passer COMMON_ANODE à true ; la fonction inverse les valeurs toute seule.
1const int R_PIN = 9;
2const int G_PIN = 10;
3const int B_PIN = 11;
4const bool COMMON_ANODE = false; // ortak anotsa true yap / set true for common anode
5
6void setColor(int r, int g, int b) {
7 if (COMMON_ANODE) { r = 255 - r; g = 255 - g; b = 255 - b; }
8 analogWrite(R_PIN, r);
9 analogWrite(G_PIN, g);
10 analogWrite(B_PIN, b);
11}
12
13void setup() {
14 pinMode(R_PIN, OUTPUT);
15 pinMode(G_PIN, OUTPUT);
16 pinMode(B_PIN, OUTPUT);
17}
18
19void loop() {
20 setColor(255, 0, 0); delay(1000); // kırmızı / red
21 setColor(0, 255, 0); delay(1000); // yeşil / green
22 setColor(0, 0, 255); delay(1000); // mavi / blue
23 setColor(255, 255, 0); delay(1000); // sarı / yellow
24 setColor(0, 255, 255); delay(1000); // turkuaz / cyan
25 setColor(255, 0, 255); delay(1000); // mor / magenta
26 setColor(255, 255, 255); delay(1000); // beyaz / white
27}Transition douce : l'effet arc-en-ciel
Au lieu de sauter d'une couleur à l'autre, baisse un canal tout en montant un autre : la lumière glisse en douceur du rouge au vert, du vert au bleu, puis revient au rouge. La boucle ci-dessous utilise la même fonction setColor() ; modifie la valeur de delay pour régler la vitesse.
1// setColor() ve pin tanımları yukarıdaki gibi / setColor() and pins as above
2void loop() {
3 for (int i = 0; i < 256; i++) { setColor(255 - i, i, 0); delay(8); } // kırmızı → yeşil / red → green
4 for (int i = 0; i < 256; i++) { setColor(0, 255 - i, i); delay(8); } // yeşil → mavi / green → blue
5 for (int i = 0; i < 256; i++) { setColor(i, 0, 255 - i); delay(8); } // mavi → kırmızı / blue → red
6}Choisir la couleur avec des potentiomètres
Si tu branches trois potentiomètres sur A0, A1 et A2, chacun devient le bouton d'un canal de couleur. analogRead() renvoie une valeur de 0 à 1023 ; en la divisant par 4, on obtient la plage 0–255 attendue par le PWM. Le branchement d'un potentiomètre est expliqué dans Qu'est-ce qu'un potentiomètre ?
1// A0, A1, A2'de üç potansiyometre; setColor() yukarıdaki gibi
2// three pots on A0, A1, A2; setColor() as above
3void loop() {
4 int r = analogRead(A0) / 4; // 0–1023 → 0–255
5 int g = analogRead(A1) / 4;
6 int b = analogRead(A2) / 4;
7 setColor(r, g, b);
8}LED RGB avec l'ESP32 et le Raspberry Pi Pico
Sur l'ESP32, avec le cœur Arduino actuel (3.x), analogWrite() fonctionne sur toutes les broches de sortie : le code ci-dessus marche tel quel en changeant les numéros de broche. Seule la tension demande de l'attention : les broches délivrent 3,3 V, donc le vert et le bleu, dont la tension directe approche 3 V, éclairent moins. En 3,3 V, utilise de petites résistances de 47 à 100 Ω, ou commande la LED en 5 V via un transistor si tu veux beaucoup de lumière. Sur le Pico, la classe PWM de MicroPython accepte des valeurs de 0 à 65535 :
1from machine import Pin, PWM
2import time
3
4pins = [PWM(Pin(n)) for n in (11, 12, 13)] # GP11 R, GP12 G, GP13 B
5for p in pins:
6 p.freq(1000)
7
8def set_color(r, g, b): # 0–255
9 for p, v in zip(pins, (r, g, b)):
10 p.duty_u16(v * 257) # 0–65535 (ortak anotta 65535 - v * 257)
11
12while True:
13 set_color(255, 0, 0); time.sleep(1) # kırmızı / red
14 set_color(0, 255, 0); time.sleep(1) # yeşil / green
15 set_color(0, 0, 255); time.sleep(1) # mavi / blueLED RGB classique ou LED adressable (WS2812B) ?
| Caractéristique | LED RGB classique | WS2812B (NeoPixel) |
|---|---|---|
| Broches nécessaires | 3 broches PWM par LED | 1 broche de données pour tout le ruban |
| Contrôle de la couleur | Par les sorties PWM de l'Arduino | Par une minuscule puce dans chaque LED |
| Bibliothèque | Inutile | Adafruit NeoPixel ou FastLED |
| Idéal pour | 1–2 LED, voyants d'état | Rubans, anneaux, matrices, éclairage d'ambiance |
Pour une ou deux lumières colorées, la LED RGB classique est la solution la plus simple et la moins chère. Pour colorer des dizaines de LED individuellement, les 6 broches PWM de l'Uno ne suffisent pas ; il faut alors passer aux rubans WS2812B, qui pilotent des centaines de LED sur un seul fil.
Idées de projets avec une LED RGB
- Lampe d'ambiance : place l'effet arc-en-ciel dans un bocal dépoli pour une veilleuse douce.
- Indicateur de température : associe-la à un DHT11 pour une lampe bleue quand il fait froid, verte quand c'est tempéré et rouge quand il fait chaud.
- Mélangeur de couleurs : crée n'importe quelle couleur à la main avec trois potentiomètres.
- Choisir la couleur depuis le téléphone : change la couleur de la lampe depuis un sélecteur de couleur sur une page web servie par un ESP32.
- Voyant de notification : fais clignoter la LED dans une couleur précise à l'arrivée d'un e-mail ou d'un message.
- Couleurs au clavier : affiche une couleur différente selon le chiffre tapé sur un clavier matriciel.
Erreurs fréquentes et solutions
- Les couleurs fonctionnent à l'envers : tu pilotes une LED à anode commune comme une LED à cathode commune ; passe COMMON_ANODE à true.
- Une couleur ne s'allume jamais : l'ordre des pattes est peut-être différent de ce que tu pensais ; teste chaque patte avec une résistance.
- Les transitions se font par paliers, sans nuances : la LED est sur une broche sans PWM ; sur l'Uno, ces broches ne peuvent être qu'allumées ou éteintes.
- Les couleurs déraillent quand un buzzer joue : sur l'Uno, tone() utilise le Timer2 et perturbe le PWM des broches 3 et 11 ; déplace la LED RGB sur les broches 5, 6, 9 et 10.
- Oublier les résistances : un courant trop fort finit par abîmer la LED et la broche de l'Arduino.
- Très faible sur l'ESP32 : en 3,3 V, le vert et le bleu sont à la limite ; utilise des résistances plus petites ou un transistor.
Pour comprendre les bases des LED et pourquoi elles ont besoin de résistances, jette un œil à Qu'est-ce qu'une LED ? et Qu'est-ce qu'une résistance ? Dans l'application BlueGrays, tu trouveras des projets de dégradé de couleurs avec LED RGB, de lampe pilotée au clavier et de mélangeur de couleurs, avec schémas et code.
Questions fréquentes
Comment savoir si ma LED RGB est à anode commune ou à cathode commune ?
Relie la patte longue à GND et touche le 5V avec une autre patte via 220 Ω ; si elle s'allume, c'est une cathode commune. Sinon, mets la patte longue sur 5V et l'autre patte sur GND via la résistance ; si elle s'allume maintenant, c'est une anode commune. Le mode test de diode d'un multimètre fait aussi l'affaire.
Quelle résistance mettre sur une LED RGB ?
Sous 5 V, l'idéal est environ 150 Ω pour le rouge et environ 100 Ω pour le vert et le bleu. Pour faire simple, 220 Ω sur les trois est sûr et donne une lumière suffisante. Une résistance par couleur est indispensable.
Combien de couleurs une LED RGB peut-elle produire ?
Chaque canal a 256 niveaux de luminosité, de 0 à 255 : en théorie, cela fait 16,7 millions de combinaisons. En pratique, l'œil distingue moins de couleurs, et les écarts de luminosité entre les LED rapprochent certaines teintes.
Pourquoi ma LED RGB paraît-elle bleutée au lieu de blanche ?
Les trois LED n'ont pas la même luminosité et l'œil n'est pas aussi sensible à toutes les couleurs ; le bleu et le vert dominent généralement. Baisse un peu ces deux canaux dans le code, ou mets-leur des résistances plus fortes, pour un blanc plus neutre.
Que se passe-t-il si je branche une LED RGB sur une broche sans PWM ?
Ce canal ne pourra être que complètement allumé ou éteint ; analogWrite considère 128 et plus comme allumé, et en dessous comme éteint. Si les trois canaux sont dans ce cas, tu n'auras que 8 couleurs de base et aucune transition douce.
Combien de LED RGB un Arduino Uno peut-il piloter ?
L'Uno a 6 broches PWM : tu peux donc piloter au maximum 2 LED RGB aux couleurs indépendantes. Au-delà, utilise un contrôleur PWM à 16 canaux comme le PCA9685, ou des rubans WS2812B qui pilotent des centaines de LED avec une seule broche.
Projets à réaliser après cet article
Voir tous les projets
Utilisation des diodes électroluminescentes RVB
Projet d'utilisation de base qui fait clignoter séquentiellement les couleurs rouge, verte et bleue de la DEL RVB. Enseigne le contrôle des LED RVB à cathode commune.

Transition douce des couleurs grâce aux diodes électroluminescentes RVB
Projet qui crée un effet arc-en-ciel doux en changeant progressivement les couleurs de la LED RVB avec analogWrite. Enseigne la logique du mélange des couleurs et l'animation des transitions avec PWM.

Contrôle des LED RVB avec clavier
Ce projet permet de gérer la LED RGB entre les modes et les couleurs via le clavier 4x4. Grâce à la structure millis(), les commandes sont traitées sans délai. 🎮 Guide de l'utilisateur : Touche A : Vitesse fixe Effet de fondu. Touche B : Transition douce à vitesse réglable. C / D : Augmente / diminue la vitesse de l'effet. 1 - 9 : Sélection rapide de la couleur principale. * / # : Couleurs intermédiaires spéciales (rose, vert clair, etc.). Touche 0 : éteint le système.

ESP32 RGB LED Control
Génération illimitée de couleurs avec une seule LED RVB au lieu de 3 LED séparées. Comme dans Arduino, nous réalisons une transition arc-en-ciel en réglant les valeurs R/G/B avec analogWrite(). La théorie des couleurs (telle que rouge+vert=jaune) est mise en pratique.

Lampe à mélangeur de couleurs ESP32 (3 potentiomètres + LED RVB + écran OLED)
Une lampe mélangeuse de couleurs intelligente qui vous permet de créer la couleur de votre choix en tournant 3 potentiomètres grâce à l'ESP32 ! À mesure que vous tournez les potentiomètres rouge, vert et bleu, la LED RVB à cathode commune change de couleur en temps réel. L'écran OLED SSD1306 affiche en temps réel la valeur de chaque couleur sur une plage de 0 à 255, des barres de remplissage visuelles et le code couleur HEX (#FF8040, par exemple). Un mini-studio de couleur professionnel — il per

Raspberry Pi Pico LED RVB Cycle de Couleurs (PWM 3 Canaux, GP11-13)
Une LED, des millions de couleurs ! 🌈 Une LED RVB contient 3 LEDs : rouge, verte et bleue. Avec un canal PWM du Pico pour chacune, les couleurs se mélangent : rouge + vert = jaune, vert + bleu = cyan, les trois = blanc. La LED parcourt 8 couleurs. Apprends plusieurs canaux PWM, les fonctions (def), le mélange RVB, la conversion 8 bits → 16 bits (x257) et cathode commune vs anode commune.

Contrôle d'une bande NeoPixel WS2812B avec l'ESP32
Les LED adressables WS2812B (NeoPixel) sont des LED RGB intelligentes pouvant être contrôlées en série via une seule broche de données. Dans ce projet, nous allons contrôler une bande WS2812B de 8 LED à l'aide de la bibliothèque Adafruit_NeoPixel afin de créer une animation fluide représentant un arc-en-ciel. Bien que le niveau logique 3,3 V de l'ESP32 fonctionne sans problème avec la plupart des composants WS2812B, nous présenterons une solution comprenant une résistance en série de 470 Ω et un

WS2812B Utilisation
Projet démontrant l'utilisation de base de la bande LED adressable WS2812B en ajustant la couleur de chaque LED indépendamment. Enseigne le contrôle de la couleur par pixel avec la bibliothèque FastLE
Autres articles
Apprends comment une LED RGB crée des millions de couleurs avec trois LED dans un seul boîtier, comment distinguer anode et cathode commune, choisir les bonnes résistances et mélanger les couleurs en douceur avec Arduino.

