Composants · 6 min de lecture

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.

LED RGB 5 mm à 4 pattes
LED RGB 5 mm : la plus longue des quatre pattes est la broche commune ; les trois autres sont les canaux rouge, vert et bleu.

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.

CouleurRougeVertBleu
Rouge25500
Vert02550
Bleu00255
Jaune2552550
Turquoise (cyan)0255255
Violet (magenta)2550255
Orange255800
Blanc255255255

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éristiqueCathode commune (CC)Anode commune (CA)
La patte longue va surGND5V
Pour allumer une couleurBroche à HIGH (255)Broche à LOW (0)
Valeur dans le codeanalogWrite(pin, valeur)analogWrite(pin, 255 - valeur)
Complètement éteint0255
Pour savoir laquelle tu as, relie la patte longue à GND et touche le 5V avec une autre patte à travers une résistance de 220 Ω. Si la couleur s'allume, la LED est à cathode commune. Sinon, inverse : patte longue sur 5V, l'autre patte sur GND à travers la résistance ; si elle s'allume maintenant, elle est à anode commune.

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.

PatteConnexionBroche Arduino Uno
Rouge (R)Via une résistanceD9
Commune (la plus longue)GND en cathode commune, 5V en anode commune—
Vert (G)Via une résistanceD10
Bleu (B)Via une résistanceD11

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.

Ne mets pas une seule résistance sur la patte commune. Le canal rouge, dont la tension directe est la plus basse, prendra l'essentiel du courant, les autres couleurs resteront faibles et les mélanges seront faux. Chaque canal de couleur doit avoir sa propre résistance.

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.

Arduino (C++)
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.

Arduino (C++)
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}
Il est normal que le blanc paraisse un peu bleuté ou rosé, car les trois LED n'ont pas la même luminosité. En ramenant le vert et le bleu à 70–80 % dans le code, tu obtiens un blanc plus naturel. Une balle de ping-pong ou du papier calque posé sur la LED diffuse la lumière et mélange bien mieux les couleurs.

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 ?

Arduino (C++)
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 :

MicroPython
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 / blue

LED RGB classique ou LED adressable (WS2812B) ?

CaractéristiqueLED RGB classiqueWS2812B (NeoPixel)
Broches nécessaires3 broches PWM par LED1 broche de données pour tout le ruban
Contrôle de la couleurPar les sorties PWM de l'ArduinoPar une minuscule puce dans chaque LED
BibliothèqueInutileAdafruit NeoPixel ou FastLED
Idéal pour1–2 LED, voyants d'étatRubans, 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.

Voir tous les projets
Utilisation des diodes électroluminescentes RVB
#39Débutant
Premium

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.

4.9(72)
96
Transition douce des couleurs grâce aux diodes électroluminescentes RVB
#40Débutant
Premium

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.

4.8(58)
76
Contrôle des LED RVB avec clavier
#95Intermédiaire
Premium

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.

5.0(32)
44
ESP32 RGB LED Control
#111Débutant
Premium

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.

4.6(28)
50
Lampe à mélangeur de couleurs ESP32 (3 potentiomètres + LED RVB + écran OLED)
#138Avancé
Premium

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

4.7(6)
10
Raspberry Pi Pico LED RVB Cycle de Couleurs (PWM 3 Canaux, GP11-13)
#161Débutant
Premium

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.

0.0(0)
6
Contrôle d'une bande NeoPixel WS2812B avec l'ESP32
#126Intermédiaire
Premium

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

4.9(19)
30
WS2812B Utilisation
#69Intermédiaire
Premium

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

4.8(54)
70

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.

Utiliser une LED RGB : mélanger les couleurs avec Arduino, anode ou cathode commune | BlueGrays